原文链接:
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.<clinit>(NativeCrypto.java:54)
at org.conscrypt.OpenSSLBIOInputStream.<init>(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!]
七:错误正在解决。。。。