Android_Apk_Signing
本文介绍如何对 APK 进行系统签名。
获取APK签名密钥
可从主板平台源码路径获取密钥,或从对应主板平台的网盘中获取
A133 Android SDK 源码密钥路径
(SDK)$ ls android/build/target/product/security/
platform.pk8 platform.x509.pemH618/RK3576 Android SDK 源码密钥路径
(SDK)$ ls build/target/product/security/
platform.pk8 platform.x509.pemRK3562/RK3568/RK3588 Android SDK 源码密钥路径
(SDK)$ ls device/rockchip/common/security/
platform.pk8 platform.x509.pem 网盘路径
3-SoftwareData/Android_app_signkey/*key*获取 keytool-importkeypair 工具
网盘路径
制作平台密钥库JKS
第一步,存放系统签名文件和 keytool-importkeypair 到同一级目录下。
第二步,使用 keytool 生成 jks 文件。
keytool-importkeypair 用法:
示例:
-k ./platform.jks指定生成 jks 文件名为 platform.jks
-p android指定密码为 android
-pk8 platform.pk8指定 pk8 文件路径
-cert platform.x509.pem指定 pem 文件路径
-alias android指定别名为 android
对APK进行系统签名
Android Studio 方式
第一步,Build -> Generate Signed App 选择生成带签名的APK;

第二步,选择生成APK;(App Bundle 生成的是 aab 文件)

第三步,选择系统 jks,输入对应的别名和密码。

apksigner 方式
apksigner 用法
示例:
--ks platform.jks指定 jks 文件路径
--ks-key-alias android与 jks 中的别名一致
--out app-signed.apk指定签名后apk的命名
app-debug.apk指定需要签名的apk路径
java 方式
在源码中进行重签(确保已经编译过源码)。
第一步,配置 Android java 环境。
H618 平台
A133 平台
RK3562 / RK3568 / RK3576 / RK3588 平台
第二步,利用 java 进行签名。
不同平台根据实际签名文件路径,替换 platform.pk8 platform.x509.pem 下面命令路径。
java:启动 Java 虚拟机(JVM)的命令。
-Xmx2048m:设置 JVM 最大堆内存为 2048MB(2GB),避免签名过程中因内存不足报错。
-Djava.library.path="out/host/linux-x86/lib64":指定 Java native 库(C/C++ 编写的库)的搜索路径,这里指向 Android 编译输出的主机端(Linux x86 架构)库目录,确保签名工具能加载依赖的原生库。
-jar out/host/linux-x86/framework/signapk.jar:指定执行signapk.jar这个工具(Android 源码中用于 APK 签名的官方工具,位于编译输出的主机端框架目录)。
--disable-v2禁用 APK 签名方案 V2(仅使用 V1 签名)。
V1 是基于 JAR 的传统签名(生成
META-INF目录下的签名文件),兼容性好但安全性较低;V2 是 Android 7.0+ 引入的整体 APK 签名,安全性更高。 禁用 V2 通常是为了兼容旧系统或特定场景(如某些定制系统对 V2 签名支持不完善)
-w platform.x509.pem:指定 公钥证书文件(platform.x509.pem),-w表示验证证书链的完整性。
platform.pk8:指定 私钥文件(platform.pk8),与上述公钥证书配对,用于实际签署 APK。
old.apk:待签名的原始 APK 文件(可以是未签名、预签名或其他签名的 APK)。
new.apk:签名后生成的新 APK 文件(保存路径和文件名,将覆盖原文件同名文件)。
Android.mk 方式
添加 platform 配置
示例:
查看APK签名信息
Last updated