2017-06-02 3 views
-1

mit habe ich meine Schlüsselspeicher release.keystore im Weg /home/ankit/keystores/release.keystore. Ich möchte das Schlüsselpaar aliased als example zum Signieren einer App verwenden, die mit Jenkins erstellt wurde. Allerdings kann ich die Adresse des Keystores in den Jenkins nicht eingeben. Unten ist der Screenshot:Wie android apk anmelden jenkins

enter image description here

Wie es zu sehen ist, gibt es eine Dropdown-Liste mit dem Schlüsselspeicher Etikett und es kein Element hat. Ich habe versucht, dem offiziellen Dokument zu folgen, aber ich habe es nicht verstanden.

Ich glaube, ich habe die bestehende Keypair irgendwie Jenkins zu verbinden, so dass sie in der Dropdown-Liste erscheint. Aber ich kann mir nicht vorstellen, wie.

+0

* Wenn du mir nicht helfen kannst, halte dich zurück, indem du auf den doppelten/nach unten gerichteten Knopf klickst. * => Du verstehst völlig falsch, es gibt keine Beziehung zwischen der Kenntnis der Antwort und der Bewertung der Frage als schlecht oder dämlich. Mehr lesen auf dieser [hier] (https://meta.stackoverflow.com/questions/252677/when-is-it-justifiable-to-downvote-a-question). – 2Dee

+0

Bitte geben Sie in Ihren Beiträgen keine Wahlempfehlung an. Wenn überhaupt, ist das ein Downvote-Magnet an sich. – halfer

Antwort

1

Stattdessen können Sie dies alles in Gradle selbst konfigurieren, die unabhängig von einem CI funktioniert. Zuerst ein build.properties in Wurzel Ihres Projektes erstellen und umfassen folgende:

#Key store 
keystore.release=../keys/release.keystore 
keystore.debug=../keys/debug.keystore 
keystore.key.alias=... 
keystore.key.password=... 
keystore.password=... 

Jetzt in Ihrer App-Module build.gradle Zugang jene Requisiten:

final Properties props = new Properties() 
props.load(new FileInputStream('build.properties')) 
android { 
    signingConfigs { 
     release { 
      keyAlias props['keystore.key.alias'] 
      keyPassword props['keystore.key.password'] 
      storeFile file(props['keystore.release']) 
      storePassword props['keystore.password'] 
     } 
     debug { 
      storeFile file(props['keystore.debug']) 
     } 
    } 

    buildTypes { 
     release { 
      ... 
      signingConfig signingConfigs.release 
     } 

     debug { 
      ... 
      signingConfig signingConfigs.debug 
     } 
    } 
} 

Jetzt sicherstellen, dass es in Ihrem lokalen Rechner arbeitet mit ./gradlew clean assembleRelease (Es gibt etwas anderes, wenn man im PC tun)

Danach Sie die Änderungen und die gradle Buildeinstellungen in Ihrem CI aktualisieren. Und stellen Sie sicher, dass diese Keystores vorhanden sind.

+0

Danke! Es funktionierte. Es ist jedoch besser, wenn Keystore-Kennwörter und -Alias ​​nicht in der Gradle-Datei fest codiert sind. Ich fand diesen Artikel hilfreich auch: https://www.timroes.de/2013/09/22/handling-signing-configs-with-gradle/ –

+0

@AnkitShubham ja du hast Recht, du kannst es stattdessen von etwas wo sonst lesen . – Milan