官方文档:发布到应用商店 | Quasar 框架 - Quasar 框架
生成未签名的apkapp-release-unsigned.apk
quasar build -m capacitor -T android
接下来进行对齐和签名
前提准备
添加系统环境变量
D:\Android\Android Studio\jbr\bin\
D:\Android\SDK\build-tools\35.0.1\
D:\Android\SDK\build-tools\35.0.1\
使用keytool
生成keystore
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 20000
对APK进行zip对齐
zipalign -v 4 <path-to-same-apk-file> HelloWorld.apk
对APK进行签名
apksigner sign --ks my-release-key.keystore --ks-key-alias alias_name <path-to-unsigned-apk-file>
以下是三个命令的详细说明,包括参数含义、需要替换的内容
1. 生成 keystore
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 20000
参数说明:
-genkey
:生成密钥对。-v
:输出详细日志。-keystore my-release-key.keystore
:指定生成的 keystore 文件名(需替换为你自己的名称)。-alias alias_name
:密钥别名(需替换为你自己的别名,如my_app_key
)。-keyalg RSA
:使用 RSA 算法。-keysize 2048
:密钥长度 2048 位(推荐的安全值)。-validity 20000
:证书有效期天数(20000 天约 54 年,可调整)。
需要替换的内容:
my-release-key.keystore
:自定义 keystore 文件名(如app_release.keystore
)。alias_name
:自定义别名(如my_app_alias
)。
执行后会生成 .keystore
文件,需妥善保存。
2. zip 对齐
Zip 对齐本质上是 优化 APK 文件结构,使其在 Android 设备的存储和内存访问中更高效,从而提升应用性能并降低资源占用。
zipalign -v 4 <path-to-same-apk-file> HelloWorld.apk
参数说明:
-v
:输出详细日志。4
:对齐字节边界(必须为 4,Android 标准)。<path-to-same-apk-file>
:未对齐的 APK 路径(需替换为实际路径)。HelloWorld.apk
:对齐后的输出 APK 文件名(可自定义)。
需要替换的内容:
<path-to-same-apk-file>
:输入 APK 路径(如app-unsigned.apk
)。HelloWorld.apk
:输出 APK 名称(如app-aligned.apk
)。
3. APK 签名
apksigner sign --ks my-release-key.keystore --ks-key-alias alias_name <path-to-unsigned-apk-file>
参数说明:
--ks my-release-key.keystore
:指定 keystore 文件路径(需替换为生成的.keystore
文件)。--ks-key-alias alias_name
:指定密钥别名(需与生成时一致)。<path-to-unsigned-apk-file>
:未签名的 APK 路径(需替换为对齐后的 APK 路径)。
需要替换的内容:
my-release-key.keystore
:你的 keystore 文件路径(如app_release.keystore
)。alias_name
:你的密钥别名(如my_app_alias
)。<path-to-unsigned-apk-file>
:对齐后的 APK 路径(如app-aligned.apk
)。
执行目录:
- 任意目录,但需确保 keystore 和 APK 路径正确。
- 建议与
zipalign
在同一目录执行,避免路径问题。
完整流程示例:
- 生成 keystore(在项目根目录):
keytool -genkey -v -keystore qnote.keystore -alias qnote -keyalg RSA -keysize 2048 -validity 20000
->输入密钥库口令
->输入唯一判别名(是否正确:输入y
)
->生成qnote.keystore
文件
->添加到.gitignore
// ... 现有代码 ...
# 密钥库文件
.keystore
- zip 对齐(在构建输出目录
dist/.../release
):
zipalign -v 4 app-release-unsigned.apk qnote.apk
->生成qnote.apk
3. 签名(与对齐后的 APK 同目录dist/.../release
):
apksigner sign --ks ../../../../../qnote.keystore --ks-key-alias qnote qnote.apk
->生成qnote.apk.idsig
idsig文件用于存储 APK 的签名信息(如 v2/v3 签名块),用于验证 APK 是否被篡改
签名后建议验证:
apksigner verify --verbose qnote.apk