Android APK v1签名库,便于开发跟APK签名有关的应用 或者利用生成的jar包手动签名
本项目包含两个Module, 使用的均是V1签名,签名后可适用所有Android版本。
JarSigner-> sun提供的签名方案ApkSigner-> android提供的签名方案
还有一个名为app的DEMO模块,可运行试用
本项目可在Android7.0及以上运行(暂不兼容Android10.0)
由于
JarSigner和ApkSigner中有相同的class,无法打包成release的APK,接入时需要去掉一个module,但是debug模式可以直接运行
本Module的关于签名的源码全部来源于 https://github.com/frohoff/jdk8u-jdk ,用于给Android Apk签名
-
如果是使用
java开发,只需要复制com.sun.jarsigner和sun.security.tools.jarsigner两个package到你的项目中即可 -
如果是
android开发-
添加
jitpack的maven库repositories { maven { url 'https://jitpack.io' } } -
添加依赖
dependencies { implementation 'cn.janking.V1Signer:jarsigner:0.0.1' }
-
-
调用
sun.security.tools.jarsigner.Main.main(String[] args)//例如 sun.security.tools.jarsigner.Main.main( arrayOf( "-verbose", "-keystore", "[keystore路径]", "-storepass", "[storepass]", "-keyPass", "[keyPassword]", "-signedjar", "[签名后apk输出路径]", "[待签名apk路径]", "[key alias秘钥别名]" ) )
直接使用打包好的jarsigner.jar包(链接),在命令行中输入
//linux
$jarsigner [-verbose] -keystore "~/Desktop/test.jks" -storepass 123456 -keyPass 123456 -signedjar "~/Desktop/test.apk" "~/Desktop/unsigned.apk" test
//windows
$java -jar .\jarsigner.jar [-verbose] -keystore "C:\\test.jks" -storepass 123456 -keyPass 123456 -signedjar "C:\\test.apk" "C:\\unsigned.apk" test如果是在Android设备上适用,要使用BKS-V1类型的秘钥,一般用AndroidStudio生成的jks秘钥是JKS类型,可以使用 KeyStore Explorer 查看和转换签名类型
本Module的关于签名的源码来源于Android源码和jdk1.8.0_241,使用IntelliJ Idea反编译获得,用于给Android Apk签名
-
如果是
java开发,只需要复制SignApk.java(链接)文件到你的项目中即可 -
如果是
android开发-
添加
jitpack的maven库repositories { maven { url 'https://jitpack.io' } } -
添加依赖
dependencies { implementation 'cn.janking.V1Signer:apksigner:0.0.1' }
-
-
调用
SignApk.Main(String[] args)//例如 com.android.signapk.SignApk.main( arrayOf( "[公钥路径]", "[私钥路径]", "[待签名apk路径]", "[签名后apk输出路径]" ) )
直接使用打包好的apksigner.jar包(链接),在命令行中输入
//linux
$signapk [-w] publickey.x509[.pem] privatekey.pk8 input.jar output.jar
//windows
$java -jar apksigner.jar [-w] publickey.x509[.pem] privatekey.pk8 input.jar output.jar