2015-11-18 3 views
13

Wir entwickeln Android App im Team. Um signierte Release-APKs zu erstellen, sollten Sie den Schlüsselspeicherpfad, das Passwort, den Schlüsselalias und das Schlüsselpasswort festlegen. Wenn ich möchte, dass mein Teammitglied signierte apk mit derselben Signatur erstellt, sollte ich die Schlüsselspeicherdatei an die Quellcodeverwaltung übergeben?Soll ich den Release Key Store für die Android App in das Team-Repository einbinden?

+0

nicht vergessen Sie: wenn Sie frei git Konto haben (wenn Sie Github verwenden), Repository sichtbar sein wird für alle –

+0

nein, wir unsere privaten Server mit git – mao

+1

etwas Meinung basiert Diese verwenden - in meiner Firma Wir haben den Keystore in einem separaten Git Repo, den wir als git Submodul in den Android Projekten verwenden. Es war bisher eine gute Lösung. – 1615903

Antwort

15

Sie sollten nicht.

Release keystore ist die empfindlichste Daten.

In meinem Team kann nur eine Person das Release-Paket signieren. (Und möglicherweise eine für die Sicherung).

Alle sensiblen Informationen MUSS ignoriert werden und wir machen einen Verweis auf diese Informationen.

In meinem Team, Config wir wie folgt aus:

Auf Android Studio:

/local.properties Datei:

storeFile=[path/to/keystore/file] 
keyAlias=[alias's key] 
keyPassword=[alias's password] 
storePassword=[key's password] 

/app/build.gradle, config -umfang:

signingConfigs { 
    release { 
    Properties properties = new Properties() 
    properties.load(project.rootProject.file('local.properties').newDataInputStream()) 
    storeFile file(properties.getProperty('storeFile')) 
    keyAlias properties.getProperty('keyAlias') 
    storePassword properties.getProperty('storePassword') 
    keyPassword properties.getProperty('keyPassword') 
    } 
} 

buildTypes { 
    release { 
    minifyEnabled false 
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    signingConfig signingConfigs.release 
    } 
    . 
    . 
    . 
} 

Sehen Sie meine komplette Demo Konfig:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 21 
    buildToolsVersion "22.0.1" 

    defaultConfig { 
     multiDexEnabled = true 

     applicationId "com.appconus.demoapp" 
     minSdkVersion 16 
     targetSdkVersion 21 
     multiDexEnabled = true 
     versionCode 18 
     versionName "1.3" 
    } 

    signingConfigs { 
     release { 
      Properties properties = new Properties() 
      properties.load(project.rootProject.file('local.properties').newDataInputStream()) 
      storeFile file(properties.getProperty('storeFile')) 
      keyAlias properties.getProperty('keyAlias') 
      storePassword properties.getProperty('storePassword') 
      keyPassword properties.getProperty('keyPassword') 
     } 
    } 

    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
      signingConfig signingConfigs.release 
     } 
     debug { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
     applicationVariants.all { variant -> 
      appendVersionNameVersionCode(variant, defaultConfig) 
     } 
    } 
} 
dependencies { 
    compile 'com.google.android.gms:play-services:8.1.0' 
} 
+0

Dies wird auch hier erklärt: https://developer.android.com/studio/publish/app-signing.html#secure-shared-keystore – scai

+3

Wenn die einzige Person den Keystore (zum Beispiel Festplattenschaden) verloren hat, dann Sie muss eine neue App hochladen, der alte Nutzer konnte seine App nicht aktualisieren. Unser Team bindet den Keystore in private Repo ein, aber die Zeicheninformationen (storepass, keyalias, keypass) sind privat. – Ninja

+0

@Ninja: Wir machen immer mindestens zwei Kopien der Keystore-Datei :) – Justin

Verwandte Themen