2015-12-13 71 views
4

我嘗試將我的android應用程序與Travis CI集成。我的應用程序需要一個API密鑰,不應該在回購中發佈。所以,我把我的API密鑰全球gradle這個屬性文件~/.gradle/gradle.properties如何爲特拉維斯CI構建模擬Gradle的buildConfigField?

MY_SECRET_API_KEY="aaaabbbcccdddeeefff" 

然後我app/build.gradle文件(公共庫)讀取此值,並將其設置爲buildconfig領域:

apply plugin: 'com.android.application' 

android { 

    // ... 

    buildTypes.each { 
     it.buildConfigField "String", "API_KEY", MY_SECRET_API_KEY 
    } 

    // ... 
} 

並通過訪問BuildConfig.API_KEY在應用程序代碼中使用此api密鑰。

我從Travic CI得到以下錯誤消息: 在com.android.build.gradle.AppExtension_Decorated上找不到屬性'MY_SECRET_API_KEY'。

+0

所以gradle.properties是你的本地計算機上? – RaGe

+0

@RaGe,是的。 'gradle.properties'只在我的本地機器上 – Max

+0

travis在遠程服務器上嗎?它不能看到你的gradle.properties? – RaGe

回答

1

使用Travis的環境變量;更具體地說,使用加密變量,以便安全變量的值始終在構建輸出中被屏蔽。不過,你可以在Gradle腳本中讀取Tavis env變量作爲System.getenv('key')。在本地端使用環境變量也更清潔。如果你想仍然使用gradle.properties,你可以做這樣的事情:

hasProperty('secret_api_key') ? secret_api_key: System.getenv('secret_api_key') 

要設置特拉維斯ENV變量,看hereenter image description here