APK簽署者

APK 線上簽署工具 — 如何免費簽署 APK 文件

完整的 APK簽署者 指南 — 了解如何使用 apksigner、jarsigner 或偵錯金鑰庫來實現 簽署 APK 文件。為開發人員和測試人員免費提供 APK簽名教程 逐步說明。 無需 Android Studio 簽署 APK。

為什麼APK檔案需要簽章?

每個 Android 應用程式在安裝之前都必須經過數位簽署。簽名有幾個目的:

  • 驗證應用程式開發者的身份
  • 確保APK未被篡改
  • 允許 Android 將應用程式更新與原始版本相匹配
  • 需要在所有 Android 裝置上安裝

需要桌面工具

APK 簽章需要命令列工具(JDK / Android SDK)。這無法在網頁瀏覽器中完成。請按照以下指南在您的計算機上簽署 APK。

方法一:使用apksigner簽名(建議)

apksigner 是 Google 官方 APK 簽章工具,包含在 Android SDK Build Tools 中。

第 1 步:產生金鑰庫

keytool -genkey -v -keystore my-release-key.jks \
  -keyalg RSA -keysize 2048 -validity 10000 \
  -alias my-key-alias

第 2 步:簽署 APK

apksigner sign --ks my-release-key.jks \
  --ks-key-alias my-key-alias \
  --out signed-app.apk unsigned-app.apk

第三步:驗證簽名

apksigner verify --verbose signed-app.apk

方法 2:使用 jarsigner 簽章(舊版)

# Sign
jarsigner -verbose -sigalg SHA256withRSA \
  -digestalg SHA-256 \
  -keystore my-release-key.jks \
  app-unsigned.apk my-key-alias

# Verify
jarsigner -verify -verbose app-signed.apk

第四步:Zipalign(重要!)

簽章後,使用 zipalign 優化 APK:

zipalign -v 4 signed-app.apk aligned-app.apk

調試簽名(用於測試)

出於測試目的,您可以使用預設的 Android 偵錯金鑰庫:

# Location of debug keystore:
# Linux/Mac: ~/.android/debug.keystore
# Windows: C:\Users\{USERNAME}\.android\debug.keystore

# Sign with debug key
apksigner sign --ks ~/.android/debug.keystore \
  --ks-key-alias androiddebugkey \
  --ks-pass pass:android \
  app.apk

簽章工具比較

指標apk簽名者賈西格納
V1簽名
V2簽名
V3簽名
受到推崇的遺產

APK 簽名者 — 常見問題

有關 APK 簽章、金鑰庫和 Android 程式碼簽章的常見問題

對於簽署 APK 文件,您需要apksigner(建議)或jarsigner:(1)使用keytool -genkey產生金鑰庫,(2)使用apksigner sign --ks my-key.jks --out signed.apk unsigned.apk對APK進行簽名,(3)使用apksigner verify signed.apk驗證簽名。您也可以使用 Android 調試密鑰庫進行測試。這是不要使用 Android Studio 簽署 APK的標準方式。

雖然您無法安全地使用 線上簽署APK(因為 APK 簽章需要您的私人金鑰庫,而該金鑰庫不應上傳到任何伺服器),但您可以使用我們的免費 APK 簽名者指南 在本機上簽署 APK 檔案。我們的逐步教學將引導您使用 Google 官方 apksigner 和 jarsigner 工具完成整個過程。簽名後,使用我們的APK簽名驗證器免費線上驗證簽名。

V1(JAR 簽名): 原始的Android簽章方案。單獨驗證每個 ZIP 條目。速度較慢,但與所有 Android 版本廣泛相容。 V2(APK簽章方案): 在 Android 7.0 中引入。驗證整個 APK 作為一個整體,提供更快的安裝。 V3(APK簽章方案v3): Android 9.0+,支援按鍵輪替。 V4: Android 11.0+,支援串流安裝。使用apksigner支援所有方案; jarsigner 僅支援 V1。

對於 不要使用 Android Studio 簽署 APK:(1) 安裝 Java JDK 8 或更高版本,(2) 下載包含 apksigner 的 Android SDK 建置工具,或下載獨立的捆綁工具,(3) 產生金鑰庫:keytool -genkey -v -keystore my-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias,(4) 簽章:apksigner sign --ks my-key.jks --out signed.apk app.apk。此方法適用於 Windows、Mac 和 Linux,無需完整安裝 Android Studio。

壓縮對齊 是一個 Android SDK 工具,可在 4 位元組邊界上對齊 APK 內的未壓縮資料。當應用程式在裝置上運行時,此最佳化可減少 RAM 消耗。 重要的: 如果使用 apksigner,請在簽章之前執行 zipalign。如果使用 jarsigner(舊版),請在簽章後執行 zipalign。指令:zipalign -v 4 input.apk output.apk。 Google Play 要求 APK 進行壓縮對齊才能提交。

為什麼對齊順序(zipalign 在 apksigner 之前)在 Android 11-15 上很重要

開發人員和修改者在簽署修改或合併的 APK 時最常犯的錯誤之一是運行 zipalign 後 簽署包,或使用 Java 的舊版 jarsigner 實用程式而不是 Google 的 Android SDK apksigner。由於 APK 簽章方案 v2 和 v3 在 ZIP 存檔的整個二進位佈局上計算加密哈希,因此在簽章後使用 zipalign 修改位元組偏移量會立即使 v2/v3 簽章區塊失效。

從 Android 11(API 等級 30)開始,並在 Android 14 和 15 上嚴格執行,PackageManager 對於任何針對現代 SDK 等級的 APK 都需要兩個不可協商的條件:

  • 未壓縮的 4 位元組對齊 resources.arsc: 編譯的資源表 (resources.arsc) 必須以未壓縮的方式儲存 (STORED) 並在 4 位元組邊界上對齊,以便 Android 可以直接對其進行記憶體映射 (mmap),而無需將其複製到 RAM 中。始終執行 zipalign -p -f -v 4 input.apk aligned.apk 前 簽章。
  • 強制 v2+ 簽名區塊: 使用 jarsigner(僅寫入 v1 META-INF/ 簽章)對針對 API 30+ 的 APK 進行簽章將導致 Android 11-15 拒絕使用 INSTALL_PARSE_FAILED_NO_CERTIFICATES 進行安裝。使用上面的互動式命令產生器為您的金鑰庫建立準確的 apksigner --v2-signing-enabled=true 命令,或在我們的 APK簽名驗證器 中驗證您的簽章輸出。
由 Shaefale 女士設計並記錄 首席開發人員和 Android 套件架構師 • 在 Android 12–15 上經過驗證

XAPKS 到 APK 工具包中的每個實用程式都透過 JavaScript 和 WebAssembly 在瀏覽器中本地運行 100%。找到了具有特定封裝的邊緣案例?向我們的工程團隊報告。