Android系统签名

本文需要一定的AOSP源码编译基础。

1、准备系统签名文件

系统签名文件位于Android源码目录build/target/product/security下:

platform.pk8
platform.x509.pem

2、生成signapk.jar

SignApk.jar是安卓源码包中的一个签名工具,代码位于Android源码目录下的/build/tools/signapk/SignApk.java文件中。可以编译生成SignApk.jar。

编译生成SignApk.jar步骤:

①进入/build/tools/signapk/文件夹(mm不能执行的话,可以先到根目录source build/envsetup.sh)

②执行命令: mm

③在out/host/linux-x86/framework/目录找到signapk.jar。

3、签名APK

把需要签名的apk以及上面两步的文件放到同一个文件夹,如下所示:

abao@abao-Lenovo:~/Desktop/siginAPK$ tree
.
├── platform.pk8
├── platform.x509.pem
├── signapk.jar
└── target-debug.apk

0 directories, 4 files

在该目录执行命令:java -jar signapk.jar platform.x509.pem platform.pk8 target-debug.apk new.apk

可能会出现错误如下,再执行第4步

Exception in thread "main" java.lang.UnsatisfiedLinkError: no conscrypt_openjdk_jni-linux-x86_64 in java.library.path
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
	at java.lang.Runtime.loadLibrary0(Runtime.java:843)
	at java.lang.System.loadLibrary(System.java:1136)
	at org.conscrypt.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:54)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.conscrypt.NativeLibraryLoader$1.run(NativeLibraryLoader.java:297)
	at org.conscrypt.NativeLibraryLoader$1.run(NativeLibraryLoader.java:289)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.conscrypt.NativeLibraryLoader.loadLibraryFromHelperClassloader(NativeLibraryLoader.java:289)
	at org.conscrypt.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:262)
	at org.conscrypt.NativeLibraryLoader.load(NativeLibraryLoader.java:162)
	at org.conscrypt.NativeLibraryLoader.loadFirstAvailable(NativeLibraryLoader.java:106)
	at org.conscrypt.NativeCryptoJni.init(NativeCryptoJni.java:50)
	at org.conscrypt.NativeCrypto.<clinit>(NativeCrypto.java:63)
	at org.conscrypt.OpenSSLProvider.<init>(OpenSSLProvider.java:58)
	at org.conscrypt.OpenSSLProvider.<init>(OpenSSLProvider.java:51)
	at org.conscrypt.OpenSSLProvider.<init>(OpenSSLProvider.java:47)
	at com.android.signapk.SignApk.main(SignApk.java:1008)

4、找到 libconscrypt_openjdk_jni库

若是Linux系统
拷贝Android源码目录out/host/linux-x86/lib64/libconscrypt_openjdk_jni.so,最终目录结构如下:

abao@abao-Lenovo:~/Desktop/siginAPK$ tree
.
├── libconscrypt_openjdk_jni.so
├── platform.pk8
├── platform.x509.pem
├── signapk.jar
└── target-debug.apk

0 directories, 5 files

最后在该目录下执行命令:java -Djava.library.path=. -jar signapk.jar platform.x509.pem platform.pk8 target-debug.apk app_sign.apk

参考文献

编译生成SignApk.jar然后给apk 签名

Android系统签名介绍&使用

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值