在 Android 開發中,許多開發者會遇到一個經典問題:同一個 Keystore(.jks 檔案),在 Eclipse 與 Android Studio 環境下打包生成的 APK,其簽名指紋(MD5、SHA1)竟然不一致。這導致應用上架時因簽名驗證失敗而被拒,或是更新安裝時提示「簽名不一致」無法覆蓋安裝。
Android Studio 預設使用 Gradle 建構系統,其簽名流程與舊版 Eclipse ADT 的 Ant 建構流程在細節上存在差異(例如簽名演算法版本、壓縮對齊策略等),即使使用同一把鑰匙,輸出的 APK 二進制內容也可能不同,進而導致指紋變化。
請勿直接使用側邊欄的「Build APK」或「Run」產出的側載包進行發布。正確的正式發布流程如下:
.jks 檔案。
打包完成後,可使用以下命令驗證 APK 的指紋是否與預期一致:
# 驗證 MD5
keytool -printcert -jarfile your_app.apk | grep MD5
# 驗證 SHA1
keytool -printcert -jarfile your_app.apk | grep SHA1
若指紋與原 Eclipse 打包一致,即可放心上架或分發。
build.gradle 中 signingConfigs 區塊引用的路徑、別名、密碼均正確,避免 Gradle 自動簽名時使用了錯誤配置。遵循上述標準流程,即可確保跨 IDE、跨版本打包的簽名一致性,徹底解決「MD5/SHA1 不一致」的困擾。