当前位置: 首页 > news >正文

使用ADB命令操作Android的apk/aab包

keystore文件转换jks文件

 操作步骤:

步骤1,生成P12文件:
keytool -importkeystore -srckeystore [文件名].keystore -srcstoretype JKS -deststoretype PKCS12 -destkeystore [文件名].p12

步骤2,生成jks文件:
keytool -v -importkeystore -srckeystore [文件名].p12 -srcstoretype PKCS12 -destkeystore [文件名].jks -deststoretype JKS

示例演示: 

步骤1:
keytool -importkeystore -srckeystore /Users/zcs/Desktop/AAB/AnimalCrusher.keystore -srcstoretype JKS -deststoretype PKCS12 -destkeystore /Users/zcs/Desktop/AAB/AnimalCrusher.p12


步骤2:
keytool -v -importkeystore -srckeystore /Users/zcs/Desktop/AAB/AnimalCrusher.p12 -srcstoretype PKCS12 -destkeystore /Users/zcs/Desktop/AAB/AnimalCrusher.jks -deststoretype JKS

查看apk的签名信息

操作:

keytool -printcert -jarfile [文件名].apk

示例:

keytool -printcert -jarfile /Users/zcs/Desktop/Test/Build/Test.apk

查看aab的签名信息

操作步骤:

步骤1:

解压待查看的apk,得到META-INF/CERT.RSA文件

步骤2:

keytool -printcert -file META-INF/CERT.RSA

示例演示:

 keytool -printcert -file /Users/zcs/Desktop/AAB/AnimalCrusher/META-INF/ANDROID.RSA


查看jks、keystore的证书指纹

操作:

keytool -list -v -keystore [文件名].jks
keytool -list -v -keystore [文件名].keystore

示例:

keytool -list -v -keystore upload_jks.jks
keytool -list -v -keystore upload_keystore.keystore

安装aab包到真机

操作步骤:

步骤1,将aab文件转换为apks文件:
java -jar <bundletool.jar的路径> build-apks --bundle=<.aab文件的路径> --output=<输出.apks的路径> --ks=<打包使用的证书文件的路径> --ks-pass=pass:<证书密码> --ks-key-alias=<证书别名> --key-pass=pass:<证书别名密码,通常与证书密码一致>
 
步骤2,安装apks文件到手机: 
java -jar <bundletool.jar的路径> install-apks --apks=<上一步中生成的.apks文件路径>

示例演示:

步骤1:
java -jar /Users/zcs/Desktop/AAB/bundletool-all-1.9.1.jar build-apks \
--bundle=/Users/zcs/Desktop/AAB/AnimalCrusher.aab \
--output=/Users/zcs/Desktop/AAB/AnimalCrusher.apks \
--ks=/Users/zcs/Desktop/AAB/AnimalCrusher.jks \
--ks-pass=pass:AnimalCrusher \
--ks-key-alias=android \
--key-pass=pass:AnimalCrusher

步骤2:
java -jar /Users/zcs/Desktop/AAB/bundletool-all-1.9.1.jar install-apks --apks=/Users/zcs/Desktop/AAB/AnimalCrusher.apks

http://www.dtcms.com/a/188524.html

相关文章:

  • PyTorch 分布式训练
  • 2025年渗透测试面试题总结-渗透测试红队面试九(题目+回答)
  • Milvus(21):过滤搜索、范围搜索、分组搜索
  • 【2025最新】Pycharm里如何运行多个py文件
  • Python基础学习-Day23
  • 撤回不了一点 v1.0.2,支持微信QQ钉钉飞书等消息防撤回
  • yolo11n-obb训练rknn模型
  • 博客系统技术需求文档(基于 Flask)
  • ArcGIS、InVEST与RUSLE在水土流失模拟及分析中的实践技术
  • 使用docker安装clickhouse集群
  • K230 ISP:一种新的白平衡标定方法
  • 0.66kV0.69kV接地电阻柜常规配置单
  • Data.olllo:一个可以打开 100GB CSV 文件的桌面工具
  • JavaScript-02
  • 2025.5.13总结
  • PYTHON训练营DAY24
  • 佰力博科技与您探讨表面电阻的测试方法及应用领域
  • 中国品牌日 | 以科技创新为引领,激光院“风采”品牌建设结硕果
  • 微服务,服务粒度多少合适
  • 最优化方法Python计算:有约束优化应用——线性可分问题支持向量机
  • 影刀RPA开发-采集爬取京东读书书籍
  • 【redis】缓存策略
  • [Java实战]Spring Boot 3构建 RESTful 风格服务(二十)
  • Telnet 类图解析
  • 我的五周年创作纪念日
  • 股指期货是什么?有啥特点?怎么用?
  • Linux 内核网络协议栈:从 Socket 类型到协议注册的深度解析
  • 大模型常用位置编码方式
  • MYSQL 查询去除小数位后多余的0
  • Oracle SYSTEM/UNDO表空间损坏的处理思路