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

这篇具有很好参考价值的文章主要介绍了关于使用Android自带的apksigner进行进行签名。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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=%1

echo %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.keystore
set storepass=xxx2023
set keyAlias=xxx2023
set keypass=xxx2023

set 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 %1
java -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://www.toymoban.com/news/detail-718863.html

到了这里,关于关于使用Android自带的apksigner进行进行签名的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android11.0 生成系统签名.jks文件并对Apk进行签名

    V2签名 对应用手动进行系统签名,需要platform.pk8,platform.x509.pem,signapk.jar这三个文件,应用的AndroidManifest.xml中需要添加 android:sharedUserId=“android.uid.system” ,然后输入以下命令就可得到签名后的apk文件: 如果你的应用 targetSdkVersion=30 ,在7.0以上的设备上安装不成功,会报以

    2024年02月07日
    浏览(60)
  • Android查看签名信息系列 · 使用Android Studio获取签名

    前言 Android查看签名信息系列 之使用Android Studio获取签名,通过Android Studio自带的gradle来获取签名信息。 优点:此法可查看 MD5、SHA1 等信息。 缺点:升级某个Studio版本后,没有签名任务了,特别不方便。 实现方法 一、使用 Android Studio 创建gradle获取签名信息。 1、使用 Androi

    2024年02月07日
    浏览(51)
  • Android 如何获取系统签名 并使用系统签名

    1.将源码路径下 buildtargetproductsecurity platform.pk8 和 platform.x509.pem 复制出来放在同一目录下 2.执行命令 后生成 platform.pem 3.行命令生成   platform.pk12 这里需要输入两次密码   4.执行命令 ,生成keystore keytool -importkeystore -deststorepass 123456 -destkeypass 123456 -destkeystore debug.keystore

    2024年02月11日
    浏览(39)
  • Android 签名方法---同时使用V1和V2签名

            V1签名(jar signature):         V1是Android7.0之前的签名方式,使用JDK中的jar signature方式对APK进行签名打包。签名完成后会生成一个META-INF文件夹,里面有三个文件:MANIFEST.MF,CERT.RSA,CERT.SF,是用来记录签名信息的。简单来说V1 签名是对压缩包中单个文件签名验证

    2024年02月03日
    浏览(28)
  • Android查看签名信息系列 · 使用逆向分析工具JadxGUI获取签名

    前言 Android查看签名信息系列之使用逆向分析工具JadxGUI获取签名,通过这种方式,可以获取到的签名信息包括:MD5、SHA1、SHA-256、公钥(模数)等信息 实现方法 1、进入JadxGUI目录下的lib文件夹内,找到jadx-gui-1.4.7.jar文件 2、双击jadx-gui-1.4.7.jar进入图形界面,或者cmd进入lib所在路径

    2024年02月03日
    浏览(48)
  • 使用Android自带模拟器模拟车载多屏显示

    由于车机设备资源不够,可采用 Android Studio 自带模拟器来模拟车机多屏显示,如下图所示模拟一个Activity在不同屏幕显示 更新Android Studio: 配置AVD参数 Android SDK:12 开启第二块屏幕 按如下截图4个步骤,设置Second Display的分辨率和屏幕密度 查看当前屏幕ID信息,用下面adb命令

    2024年02月16日
    浏览(100)
  • Android Apk签名算法使用SHA256

    Android apk签名算法使用SHA256 本文不介绍复杂的签名过程,说一下Android签名算法使用SHA256。 但是SHA1不是相对安全签名算法,SHA256更加安全一些。 一般大公司才会有这种细致的安全要求。 如何查看apk签名是否是SHA1还是SHA256 ··· 1、拿到apk文件,修改文件后缀为.jar 2、解压文件

    2024年04月08日
    浏览(111)
  • android开发使用OkHttp自带的WebSocket实现IM功能

    目录 一、背景 二、在项目中添加依赖包 三、框架调用 1、配置OkHttpClient  2、调用Url,构建WebSocket请求 3、建立连接 4、使用WebSocket对象发送消息     android app开发经常会有IM需求,很多新手不晓得如何入手,难点在于通讯不中断。其实android发展到今天,很多技术都很完善,有

    2024年02月08日
    浏览(40)
  • Android中使用Webview SSL 自签名CA证书安全校验方案

    前言:              因为我们的项目是Android + H5,之前的做法是把H5所需要的资源和html下载到本地这样证书校验不会走系统浏览器层只需要项目中预埋根证书就可以了,但是如果 用webview加载线上的域名自签名证书就会走系统级校验在onReceivedSslError中返回ssl证书不受信,

    2024年02月13日
    浏览(48)
  • 关于安卓13中Android/data目录下的文件夹只能查看无法进行删改的问题

    因为升级了安卓13,然后有个app需要恢复数据,打算和以前一样直接删除Android/data下对应目录再添加,结果不行,以下是结合网上以及自己手机情况来做的一种解决方案。 准备: 待恢复app(包名com.test.ai) 其他app(包名com.other.ai,这个app当做临时变量就行,随便任意app,且知

    2024年02月09日
    浏览(76)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包