2014-06-17 13 views
9

W Gradle Android wydaje się być fotografia praktyki zdefiniować podpisu config dla uwolnienia zbudować tak:Android Gradle - obciążenie podpisanie config z pliku zewnętrznego

android { 
    signingConfigs { 
     debug { 
      storeFile file("debug.keystore") 
     } 

     myConfig { 
      storeFile file("other.keystore") 
      storePassword "android" 
      keyAlias "androiddebugkey" 
      keyPassword "android" 
     } 
    } 

    buildTypes { 
     foo { 
      debuggable true 
      jniDebugBuild true 
      signingConfig signingConfigs.myConfig 
     } 
    } 
} 

Chodzi o to, chcę, aby moje budować. plik gradle w kontroli wersji i nie mam dobrego poczucia posiadania hasła do mojego magazynu kluczy (który jest taki sam jak inne rzeczy, głupie, wiem) na jakimś serwerze git.

Czy istnieje sposób załadowania pliku SigningConfig z pliku zewnętrznego z dowolnego miejsca na dysku twardym?

+0

Ostatni raz sprawdzałem, to nie było możliwe , który stał się dla mnie bezużyteczny w wielu projektach. Mam nadzieję, że w końcu zaimplementowali tę funkcję ... – tknell

Odpowiedz

21

używać coś takiego.

Mam folder signing.properties w folderze głównym mojej aplikacji.

STORE_FILE=xxxx 
STORE_PASSWORD=xxx 
KEY_ALIAS=xxx 
KEY_PASSWORD=xxx 

Ten plik nie znajduje się pod kontrolą wersji. Oczywiście możesz zmienić folder.

Następnie w build.gradle można użyć coś takiego:

android { 

     signingConfigs { 
      release 
     } 

     buildTypes { 
       release { 
        signingConfig signingConfigs.release 
       }  
     } 
    } 

    def Properties props = new Properties() 
    def propFile = file('../signing.properties') 
    if (propFile.canRead()){ 
     props.load(new FileInputStream(propFile)) 

     if (props!=null && props.containsKey('STORE_FILE') && props.containsKey('STORE_PASSWORD') && 
       props.containsKey('KEY_ALIAS') && props.containsKey('KEY_PASSWORD')) { 

      android.signingConfigs.release.storeFile = file(props['STORE_FILE']) 
      android.signingConfigs.release.storePassword = props['STORE_PASSWORD'] 
      android.signingConfigs.release.keyAlias = props['KEY_ALIAS'] 
      android.signingConfigs.release.keyPassword = props['KEY_PASSWORD'] 
     } else { 
      android.buildTypes.release.signingConfig = null 
     } 
    }else { 
     android.buildTypes.release.signingConfig = null 
    } 

Jeśli zmienić folder, musisz zmienić tę linię:

def propFile = file('../signing.properties') 
+0

Próbuję tego samego, ale zamiast twardego kodowania ścieżkę, którą wybieram ścieżkę z 'local.properties', mogę odczytać plik, ale pokazuję' Błąd: (33, 0) Zniekształcone kodowanie \ uxxxx. "W linii' properties.load (new FileInputStream (propFile)) 'Nawet zakodowałem ścieżkę i próbowałem, ale bezużytecznie. Jakaś pomoc? –

Powiązane problemy