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

Android 生成 APK 無法安裝?90% 是簽名問題

     編輯:程式設計綜合問答

現象

  • 真機 USB 調試 Run 直接安裝 → **正常**。
  • 生成簽名/未簽名 APK 拷貝到手機安裝 → **失敗/解析包錯誤/未安裝**。
  • 卸載舊版後重裝 → **依然失敗**。

核心原因

APK 未經過正確簽名,或簽名不一致。

  • 調試運行:IDE 自動使用 debug.keystore 簽名,包名一致直接覆蓋安裝。
  • 手動生成 APK:
    • 若選 Build > Build Bundle(s) / APK(s) > Build APK(s) → **輸出未簽名 APK**,無法安裝。
    • 若選 Generate Signed Bundle / APK 但**密鑰庫路徑/別名/密碼錯誤**,或**未勾選 V1/V2 簽名** → 簽名無效。
  • 覆蓋安裝失敗:已安裝應用的簽名與新 APK 簽名**不一致**(如一個 debug 簽名,一個 release 簽名),Android 拒絕更新。

標準生成可安裝 Release APK 流程

  1. 菜單:Build → Generate Signed Bundle / APK
  2. 選擇:APK → Next
  3. 密鑰庫:
    • 已有:選擇 .jks/.keystore 文件,輸入存儲密碼、密鑰別名、密鑰密碼。
    • 無:Create new 填寫信息生成新密鑰庫(**妥善備份!**)。
  4. 簽名版本:**勾選 V1 (Jar Signature) 和 V2 (Full APK Signature)** → Next
  5. 輸出目錄:選擇文件夾,Finish。

驗證 APK 簽名

# 命令行檢查
apksigner verify --print-certs your_app.apk

# 或
jarsigner -verify -verbose -certs your_app.apk

輸出應顯示 verified 及憑證信息。

常見坑點速查表

現象原因解決
安裝提示「解析包錯誤」APK 未簽名或簽名損壞重新 Generate Signed APK,勾選 V1+V2
提示「未安裝」無具體錯誤簽名不一致(debug vs release)先卸載舊版,或統一用同一簽名
Android 7.0+ 安裝失敗僅 V1 簽名,缺 V2勾選 V2 Signature
密鑰庫密碼忘記無法恢復只能生成新密鑰庫,應用需更換包名重新上架

最佳實踐

  • **密鑰庫文件(.jks)與密碼離線多重備份**,丟失 = 永久失去更新權限。
  • CI/CD 流水線中使用 apksigner 或 Gradle signingConfig 自動化簽名。
  • 測試階段可用 debug.keystore 統一簽名,避免頻繁卸載重裝。

記住:**沒有正確簽名的 APK 只是一堆無法安裝的字節碼。**

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