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