返回顶部
首页 > 资讯 > 移动开发 >关于使用Android自带的apksigner进行进行签名
  • 470
分享到

关于使用Android自带的apksigner进行进行签名

androidandroidstudiojava 2023-09-15 15:09:44 470人浏览 八月长安
摘要

apksigner.jar是Android自带的 工具中的命令,放在SDK->build-tools工具中; 以往的使用 jarsigner、sign.jar的签名只支持V1签名; Android 7

apksigner.jar是Android自带的 工具中的命令,放在SDK->build-tools工具中;

以往的使用 jarsigner、sign.jar的签名只支持V1签名;
Android 7.0以前只支持V1签名;
apksigner.jar支持Android 7.0之后的V1、V2、V3、V4签名;
注意使用了V2签名之后,无法使用apk对齐方法,即zipalign命令;

zipalign -v 4 in.apk out.apk //4字节对齐优化zipalign -c -v 4 in.apk  //检查APK是否对齐

所以:zipalign不能在V2签名后执行,只能在V2签名之前执行!!!

1.验证签名的命令:

java -jar apksigner.jar -v -print-certs xxx.apk

其中:
-v, --verbose 显示详情(显示是否使用V1和V2签名)
–print-certs 显示签名证书信息

2.签名:

java -jar apksigner.jar --ks debug.keystore --ks-key-alias debugKey xxx.apk然后输入密码即可获取到对应的v2签名的APK,他是在原APK基础上进行修改的;而keytool是新创建一个apk,对原APK并不影响;

其中:

--ks-key-alias       密钥别名,若密钥库有一个密钥对,则可省略,反之必选--v1-signing-enabled 是否开启V1签名,默认开启--v2-signing-enabled 是否开启V2签名,默认开启--v3-signing-enabled 是否开启V2签名,默认开启--v4-signing-enabled 是否开启V2签名,默认开启

其中如果不v4签名会生成一个.idsig文件,这个文件不用处理,可以直接删掉;
上面的命令需要用户输入密码操作,如想一步到位,可使用下面的命令,在命令行中直接携带密码:

//下面的your换成对应你们自己的即可;java -jar .\apksigner.jar sign --ks .\yourkeystore.keystore --ks-key-alias youralias --ks-pass pass:yourpassWord [–out output.apk] .\unsign.apk

3.用pk8、pem密码的签名;(因为自动打包中有需要),可以使用另外一种签名;

java -jar apksigner.jar --key key.pk8 --cert cert.x509.pem  [signer_options]  Myapk.apk

其中【signer_options】则是上面提到的参数,因为有时候不想生成v4的临时文件,所以不使用V4签名;携带--v4-signing-enabled false即可;

以下是我写的一个工具bat,仅供参考:

@echo off@echo "------------------sign apk start-----------------------"set curTime=%Date:~0,4%%Date:~5,2%%Date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%set srcApkPath=%1echo %srcApkPath%| findstr "_unsign.apk" >nul && (    set newAppName=%srcApkPath:~0,-11%) || echo %srcApkPath%| findstr ".apk"  >nul &&(    set newAppName=%srcApkPath:~0,-4%)||(    set newAppName=%srcApkPath%)set keystorePath=%~dp0/xxx.keystoreset storepass=xxx2023set keyAlias=xxx2023set keypass=xxx2023set newAppName=%newAppName%_signed_%curTime%.apk@rem java -jar F:/local_package/walle/libs/apksigner.jar --key key.pk8 --cert cert.x509.pem --v4-signing-enabled false %1java -jar %~dp0/libs/apksigner.jar sign --ks %keystorePath% --ks-key-alias %keyAlias% --ks-pass pass:%keypass% --v4-signing-enabled false -out %newAppName% %srcApkPath%del %srcApkPath%@echo "------------------sign apk complete--------------------"@pause

将上面代码复制保存为.bat文件,将未签名的apk文件拖到此bat上面即可;

参考连接:
https://developer.android.Google.cn/studio/command-line/apksigner?hl=zh-cn
Https://blog.csdn.net/qq_42351033/article/details/122301020
https://www.cnblogs.com/slysky/p/9780015.html
https://blog.csdn.net/lxlmycsdnfree/article/details/80801719

来源地址:https://blog.csdn.net/qq_24032059/article/details/130320404

--结束END--

本文标题: 关于使用Android自带的apksigner进行进行签名

本文链接: https://www.lsjlt.com/news/408770.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作