首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android Studio 打包 APK 簽名不一致?解決 MD5/SHA1 差異完整指南

     編輯:程式設計綜合問答

問題背景

在 Android 開發中,許多開發者會遇到一個經典問題:同一個 Keystore(.jks 檔案),在 Eclipse 與 Android Studio 環境下打包生成的 APK,其簽名指紋(MD5、SHA1)竟然不一致。這導致應用上架時因簽名驗證失敗而被拒,或是更新安裝時提示「簽名不一致」無法覆蓋安裝。

核心原因

Android Studio 預設使用 Gradle 建構系統,其簽名流程與舊版 Eclipse ADT 的 Ant 建構流程在細節上存在差異(例如簽名演算法版本、壓縮對齊策略等),即使使用同一把鑰匙,輸出的 APK 二進制內容也可能不同,進而導致指紋變化。

標準解決方案:使用 Generate Signed Bundle/APK

請勿直接使用側邊欄的「Build APK」或「Run」產出的側載包進行發布。正確的正式發布流程如下:

  1. 在 Android Studio 選單列點選 Build > Generate Signed Bundle / APK...
  2. 選擇 APK,點擊 Next。
  3. 在 Key store path 欄位選擇 Choose existing,瀏覽並選取你原有的 .jks 檔案。
  4. 輸入 Key store password、Key alias 及 Key password。
  5. 勾選 V1 (Jar Signature) 與 V2 (Full APK Signature) 兩種簽名版本(建議雙勾選以相容舊版 Android)。
  6. 選擇輸出目錄與 Build Type(release),點擊 Finish。
Android Studio Generate Signed APK 介面
圖:Android Studio 簽名配置介面,需選擇現有 Keystore 並勾選 V1/V2 簽名

驗證簽名一致性

打包完成後,可使用以下命令驗證 APK 的指紋是否與預期一致:

# 驗證 MD5
keytool -printcert -jarfile your_app.apk | grep MD5
# 驗證 SHA1
keytool -printcert -jarfile your_app.apk | grep SHA1

若指紋與原 Eclipse 打包一致,即可放心上架或分發。

避坑提醒

  • 切勿重新生成 Keystore: 一旦應用上線,Keystore 必須永久妥善保管,遺失將無法更新應用。
  • Gradle 配置檢查: 確認 build.gradle 中 signingConfigs 區塊引用的路徑、別名、密碼均正確,避免 Gradle 自動簽名時使用了錯誤配置。
  • V2 簽名與壓縮: 啟用 V2 簽名後,APK 不可再進行任何修改(如 zipalign、重新壓縮),否則簽名將失效。

遵循上述標準流程,即可確保跨 IDE、跨版本打包的簽名一致性,徹底解決「MD5/SHA1 不一致」的困擾。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved