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

原文链接:
https://blog.csdn.net/hellolefty/article/details/80259659
https://blog.csdn.net/fenggewan/article/details/103622254

一. 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。

二.签名签名文件

Android源码目录/build/target/product/security/中找到platform.pk8 platform.x509.pem等签名文件,把platform.pk8 与platform.x509.pem 拷贝出来。

java -jar signapk.jar  platform.x509.pem platform.pk8 old.apk new.apk

可能会出现错误如下,那就执行第三步

Exception in thread "main" java.lang.UnsatisfiedLinkError: no conscrypt_openjdk_jni in java.library.path
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
	at java.lang.Runtime.loadLibrary0(Runtime.java:870)
	at java.lang.System.loadLibrary(System.java:1122)
	at org.conscrypt.NativeCryptoJni.init(NativeCryptoJni.java:25)
	at org.conscrypt.NativeCrypto.(NativeCrypto.java:54)
	at org.conscrypt.OpenSSLBIOInputStream.(OpenSSLBIOInputStream.java:34)
	at org.conscrypt.OpenSSLX509Certificate.fromX509PemInputStream(OpenSSLX509Certificate.java:119)
	at org.conscrypt.OpenSSLX509CertificateFactory$1.fromX509PemInputStream(OpenSSLX509CertificateFactory.java:220)
	at org.conscrypt.OpenSSLX509CertificateFactory$1.fromX509PemInputStream(OpenSSLX509CertificateFactory.java:216)
	at org.conscrypt.OpenSSLX509CertificateFactory$Parser.generateItem(OpenSSLX509CertificateFactory.java:94)
	at org.conscrypt.OpenSSLX509CertificateFactory.engineGenerateCertificate(OpenSSLX509CertificateFactory.java:272)
	at java.security.cert.CertificateFactory.generateCertificate(CertificateFactory.java:339)
	at com.android.signapk.SignApk.readPublicKey(SignApk.java:182)
	at com.android.signapk.SignApk.main(SignApk.java:1087)

三.找到 libconscrypt_openjdk_jni库
若是Linux系统
拷贝prebuilts/sdk/tools/linux/lib64/libconscrypt_openjdk_jni.so
若是mac系统
拷贝prebuilts/sdk/tools/darwin/lib64/libconscrypt_openjdk_jni.dylib
到同一文件夹下

四.如下命令即可完成签名:
java -Djava.library.path=. -jar signapk.jar platform.x509.pem platform.pk8 app.apk app_sign.apk

五.在主机用adb push apk到虚拟机

adb push app_sign.apk /storage/emulated/0/Download

六.安装apk pm install app_sign.apk
出现错误


Failure [INSTALL_FAILED_INVALID_INSTALL_LOCATION: Package couldn't be installed in /data/app/com.example.settingapplication-1: Cannot install platform packages to user storage!]

七:错误正在解决。。。。

你可能感兴趣的:(framework)