2015-11-11 80 views
1

我按照officials的說法對數字簽名說我的Android應用程序。爲登錄發佈模式,他們說要使用.keystore文件和它的憑據,如this。我正在使用android工作室,以便獲得.jks文件.So我在哪裏需要根據docs保留.jks文件來構建我的簽名APK?請對此進行簡單闡述,並說明我是否做錯了什麼?與簽署android APK相混淆?

謝謝。

回答

5

你可以把.jks文件放在任何地方。
這意味着你可以把文件放在你的項目中,或者你可以把文件放在一個外部文件夾中(只要看看下面的路徑)。 這取決於你的政策。

只需使用gradle來配置apk的簽名。

android { 

    signingConfigs { 
     release 
    } 

    buildTypes { 
      release { 
       signingConfig signingConfigs.release 
      } 
    } 
} 

簡單的方法:正好可以確定你的build.gradle文件中的憑據。

signingConfigs { 
    release { 
      //Pay attention to the path. You can use a relative path or an absolute path 
      storeFile file("../your_key_store_file.jks") 
      storePassword 'some_password' 
      keyAlias 'alias_name' 
      keyPassword 'key_password' 

    } 
    } 

使用.properties文件存儲腳本之外的憑據(例如,如果你不想推憑證的混帳回購協議)。

例子:

signingConfigs { 
     release 
} 

然後定義:

def Properties props = new Properties() 
def propFile = new 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 { 
     println 'signing.properties found but some entries are missing' 
     android.buildTypes.release.signingConfig = null 
    } 
}else { 
    println 'signing.properties not found' 
    android.buildTypes.release.signingConfig = null 
} 
+0

這意味着我們不想讓signing.properties

STORE_FILE=/path/to/your.keystore STORE_PASSWORD=yourkeystorepass KEY_ALIAS=projectkeyalias KEY_PASSWORD=keyaliaspassword 

然後在您的build.gradle文件中獲取這些值'.jks'文件裏面的apk根即應用root?爲什麼我們給這些東西'storeFile文件(「myreleasekey.keystore」) storePassword「password」 keyAlias「MyReleaseKey」 keyPassword「password」' in gradle?請詳細解答我的疑問。 – Christ

+0

@基督更新了答案。 .jks的位置並不重要。使用Gradle腳本,您可以定義路徑。要使用build.gradle進行構建,您必須告訴Gradle憑據。您可以在腳本中或外部定義它們。 –

+0

storePassword和其他憑證必須與我們生成APK時提供的憑證相匹配http://developer.android.com/tools/publishing/app-signing.html#studio? – Christ