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%。找到了具有特定封装的边缘案例?向我们的工程团队报告。