利用Android源代码生成的签名文件给apk签名的方法
以下方法在9P,10Q,11R,13,15,16版本上确认有效
1,通过java命令给apk文件重新签名的方法
需要源码下文件和几个so库:
out/host/linux-x86/framework/signapk.jar
build/make/target/product/security/platform.x509.pem
build/make/target/product/security/platform.pk8
若signapk.jar不存在,则需要源码下make signapk
Error: Unable to access jarfile out/host/linux-x86/framework/signapk.jar
签名方式
源码根目录下source ./build/env***.sh和lunch ***后,执行以下命令,给app-debug.apk进行系统签名,并输出签名apk为app-debug-out.apk
java-Djava.library.path=out/host/linux-x86/lib64-jar out/host/linux-x86/framework/signapk.jar build/make/target/product/security/platform.x509.pem build/make/target/product/security/platform.pk8 app-debug.apk app-debug-signed.apk2, 利用源码的签名文件,给androidStudio配置源码签名
参考:
https://blog.csdn.net/weixin_40388758/article/details/132259389
https://blog.csdn.net/wang_qian_kun/article/details/117994589
首先将下面的两个文件复制到当前文件夹下
build/make/target/product/security/platform.x509.pem build/make/target/product/security/platform.pk8然后执行命令生成mykey.keystore签名文件
openssl pkcs8-informDER-nocrypt-inplatform.pk8-outkey.pem openssl pkcs12-export-inplatform.x509.pem-inkeykey.pem-outplatform.p12-passwordpass:android-namemykey keytool-importkeystore-deststorepasspassword-destkeystoremykey.keystore-srckeystoreplatform.p12-srcstoretypePKCS12-srcstorepassandroid在AndroidStudio工程的app/build.gradle.kts文件里配置签名信息
app/build.gradle:
android{signingConfigs{getByName("debug"){storeFile=file("/home/签名文件路径/mykey.keystore")storePassword="password"keyAlias="mykey"keyPassword="password"}}}或者通过AndroidStudio提供的Project StructureUI界面配置:
3, 查看apk签名版本方式(V1,V2,V3,V4):
apksigner verify-v~/temp/app-debug-signed.apk 输出为:VerifiesVerifiedusing v1 scheme(JARsigning):falseVerifiedusing v2 scheme(APKSignatureSchemev2):falseVerifiedusing v3 scheme(APKSignatureSchemev3):trueVerifiedusing v4 scheme(APKSignatureSchemev4):falseVerifiedforSourceStamp:falseNumberof signers:1