2014-08-31 58 views
15

Projemi Ubuntu 14.04 sisteminde oluşturmak için Android Studio kullanıyorum.Android Studio'yu kullanarak sistem ortam değişkenlerini kullanmanın uygun yolu

signingConfigs { 
debug { 

    storeFile file(System.getenv("KEYSTORE")) 
    storePassword System.getenv("KEYSTORE_PASSWORD") 
    keyAlias System.getenv("KEY_ALIAS") 
    keyPassword System.getenv("KEY_PASSWORD")   
} 

Ama gradle senkronizasyon hataları dışarı aşağıdaki: Error:(49, 0) Neither path nor baseDir may be null or empty string. path='null' basedir='./pathto/TMessagesProj'

benim git repo içinde storeFile, storePassword, keyAlias ​​ve keyPassword hardcoding önlemek için benim build.gradle dosyalarında aşağıdaki yazdı source ~/.gradlerc ve benim ~/.gradlerc içerir:: My Bashrc içeriyor

export KEYSTORE="/home/myname/keystore/mykey" 
export KEYSTORE_PASSWORD='mypass' 
export KEY_ALIAS='mykey' 
export KEY_PASSWORD='keypass' 

ben onayladıktan tha t bu değişkenler kabuk tarafından doğru şekilde içe aktarılır. Ancak, Android Studio'da neden oluşturma ortamı tarafından alınmadığından emin değilim.

Ortam değişkenlerini sınıfta kullanmanın uygun yolu nedir?

+0

Bu gönderiye bir bakın: http://stackoverflow.com/questions/21173826/environment-variable-in-settings-gradle-not-working-with-android-studio – Opal

cevap

5

(build.gradle yanında) kaynak klasöründe bir gradle.properties dosyası oluşturun geçerli projeye sadece uygulamak ya ~/.gradle/gradle.properties içindekilerin ile sistem genelinde uygulamak için: Şimdi ile build.gradle dosyasını güncellemek

keystore=/home/myname/keystore/mykey 
keystore_password=mypass 
key_alias=mykey 
key_password=keypass 

:

debug { 
    storeFile file("${keystore}") 
    storePassword "${keystore_password}" 
    keyAlias "${key_alias}" 
    keyPassword "${key_password}" 
} 

İsteğe bağlı olarak, -P seçeneğiyle komut satırından parametre geçebileceği. Örneğin, ./gradlew assemble -Pkey_password=keypass.

7

Ayrıca, anahtar deposu bilgilerimi projenin içinde bulundurmak yerine çevre değişkenlerimde bulundurmayı seviyorum. Kodun iyi görünüyor, ancak dosya yolunda aynı sorunu yaşıyordum. Ben file() geçirmeden önce dizeye bu değeri dönüştürerek bunu çözdü: Bu yardımcı olur

signingConfigs { 
debug { 
    storeFile file(String.valueOf(System.getenv("KEYSTORE"))) 
    storePassword System.getenv("KEYSTORE_PASSWORD") 
    keyAlias System.getenv("KEY_ALIAS") 
    keyPassword System.getenv("KEY_PASSWORD")   
} 

Umut.

+0

Siz rock! Bu build.gradle içinde çevre var sorunu bulundu ve android studio – spartygw

+1

kullanarak bulduğum en kolay çözüm, yukarıda belirtilen düzeltmeyi ekledikten sonra, şimdi Android stüdyo imzasız hata ayıklama apk imzalanmamış var. "Hata: Geçerli seçili varyantınız için apk (..apk) imzalı değil. Lütfen bu varyant için bir imzalama yapılandırması belirtin.) Çalıştır/hata ayıklama yapılandırma penceresine götürür. Yapılandırma hatası gitti, ama şimdi, ben Bu hatanın Android studio coz'sinden uygulamayı çalıştıramıyorum. –

+0

'String.value()' yöntemi benim için çalışıyor – Alex

İlgili konular