2015-11-18 28 views
13

我們正在團隊中開發android應用程序。要創建簽名版本apk,您應該設置密鑰存儲路徑,密碼,密鑰別名和密鑰密碼。如果我想要我,我的任何團隊成員都可以使用相同簽名創建簽名的apk,那麼我應該將密鑰存儲文件提交給源代碼管理?我應該將Android應用程序的發佈密鑰庫提交給團隊存儲庫嗎?

+0

不要忘了:如果你有免費的git帳戶(如果你使用github上),你的資料庫將爲大家 –

+0

沒有,我們用我們的專用服務器使用Git – mao

+1

這是可見的是有點根據的意見 - 在我公司,我們在一個單獨的git倉庫中有keystore,我們在android項目中使用它作爲git子模塊。迄今爲止這是一個很好的解決方案。 – 1615903

回答

15

你不應該。

Release keystore是最敏感的數據。

在我的團隊中,只有一個人可以簽署發佈軟件包。 (可能是備份的一個)。

所有敏感信息必須被忽略,我們參考這些信息。

在我的球隊,我們的配置這樣的:

Android Studio

/local.properties文件:

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

/app/build.gradleconfig範圍:

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 
    } 
    . 
    . 
    . 
} 

見我的完整演示配置:

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

這也在這裏解釋:https://developer.android.com/studio/publish/app-signing.html#secure-shared-keystore – scai

+3

如果只有一個人丟失了密鑰庫(例如磁盤損壞),那麼你必須上傳新應用,舊用戶無法更新其應用。我們的團隊在私人回購中提交密鑰存儲,但標識信息(storepass,keyalias,keypass)是私有的。 – Ninja

+0

@Ninja:我們總是至少製作兩份密鑰庫文件:) – Justin

相關問題