2015-08-24 46 views
8

在構建簽名發佈APK時,我遇到以下問題:如果我從android工作室(通過BuildGenerate Signed APK...)與build.gradle文件構建簽名的apk文件相關部分):從Android工作室和控制檯構建的Android APK具有不同的SHA指紋

signingConfigs { 
    release { 
     storeFile file('/keystore/location/mykeystore.keystore') 
     storePassword 'storepassword' 
     keyAlias 'key' 
     keyPassword 'keypassword' 
    } 
} 
buildTypes { 
    release { 
     signingConfig signingConfigs.release 
    } 
} 

由此產生的apk指紋是YY:YY
不過,如果我建我的APK從控制檯描述herebuild.gradle這樣的:

buildTypes { 
    release { 
    } 
} 

和相同的密鑰存儲文件的簽署,所產生的APK指紋XX:XX

另外,兩個SHA指紋都與我的調試證書SHA指紋不同。 這種行爲的原因是什麼?

我使用buildToolsVersion 23.0.0
機器人工作室gradle這個版本1.3.0
Android SDK工具版本24.3.4
機器人工作室1.3.1版

+0

您確定您在發佈版本變體中生成了兩個版本嗎? –

+0

@Fondesa我很確定我在發佈版本中構建了兩個apks。在指定密鑰庫和密鑰後在android studio中構建時,我選擇'Build Type'發佈。從控制檯構建時,我運行'./gradlew assembleRelease'。 – Mikhail

+0

你的問題是關於在工作室vs gradle中生成簽名的APK,還是關於通過工作室生成vs手動簽名? –

回答

1

你檢查密鑰庫的內容?指紋必須匹配其中一個證書。密鑰庫中可能有多個證書,也許在從控制檯簽名期間使用了不同的證書?您可以通過運行以下命令來檢查證書:

的keytool -v -list -keystore /路徑/到/密鑰庫

密鑰庫輸入密碼,你應該得到的別名列表。我還會檢查調試密鑰庫以確保那裏沒有其他證書。

我能想到的唯一的另一種可能性是導致使用不同密鑰庫的路徑問題。

+0

密鑰存儲路徑是相同的。密鑰庫是一樣的。我將從apk-s簽名的兩個證書都導出並手動輸入,他們使用相同的密鑰,但指紋仍然不同。也許這是因爲apk對齊過程? – Raiv

相關問題