Android Studioを使用してUbuntu 14.04システムでプロジェクトをビルドしています。
私のbuild.gradleファイルには、gitリポジトリにstoreFile、storePassword、keyAlias、keyPasswordをハードコーディングしないように、次のように記述しました。
_signingConfigs {
debug {
storeFile file(System.getenv("KEYSTORE"))
storePassword System.getenv("KEYSTORE_PASSWORD")
keyAlias System.getenv("KEY_ALIAS")
keyPassword System.getenv("KEY_PASSWORD")
}
_
しかし、gradle syncは次のエラーを出力します:Error:(49, 0) Neither path nor baseDir may be null or empty string. path='null' basedir='./pathto/TMessagesProj'
私の.bashrcには、_source ~/.gradlerc
_が含まれ、〜/ .gradlercには以下が含まれます。
_export KEYSTORE="/home/myname/keystore/mykey"
export KEYSTORE_PASSWORD='mypass'
export KEY_ALIAS='mykey'
export KEY_PASSWORD='keypass'
_
これらの変数がシェルによって正しくインポートされることを確認しました。ただし、Android Studioのビルド環境で受信されない理由がわかりません。
Gradleで環境変数を使用する適切な方法は何ですか?
また、プロジェクト内ではなく、環境変数に関するキーストア情報を持っているのも好きです。コードは問題ないようですが、ファイルパスに同じ問題がありました。 file()
に渡す前にその値を文字列に変換することで解決しました:
signingConfigs {
debug {
storeFile file(String.valueOf(System.getenv("KEYSTORE")))
storePassword System.getenv("KEYSTORE_PASSWORD")
keyAlias System.getenv("KEY_ALIAS")
keyPassword System.getenv("KEY_PASSWORD")
}
お役に立てれば。
ソースフォルダーにgradle.properties
ファイルを作成し(build.gradle
とともに)、現在のプロジェクトにのみ適用するか、~/.gradle/gradle.properties
に作成して、システム全体にコンテンツを適用します。
keystore=/home/myname/keystore/mykey
keystore_password=mypass
key_alias=mykey
key_password=keypass
Build.gradleファイルを次のように更新します。
debug {
storeFile file("${keystore}")
storePassword "${keystore_password}"
keyAlias "${key_alias}"
keyPassword "${key_password}"
}
オプションで、-P
オプションを使用してコマンドラインからパラメーターを渡すことができます。たとえば、./gradlew assemble -Pkey_password=keypass
です。