Android小知识:apktool二次打包

工具:apktool 下载地址:https://ibotpeaches.github.io/Apktool/install/
原料:app-debug.apk
拆包执行命令

apktool d app-debug.apk

执行完该命令后,我们可以在当前目录下看到一个新生成的app-debug目录,里面就是拆包后的app相关源码和配置,其目录结构与我们的项目结构基本一样,接下来在进行打包:
打包执行命令

apktool b app-debug (app-debug是前面通过拆包生成的目录名,也可以改成其他的)

执行完该命令后,我们可以在app-debug目录下发现多了一个dist子目录,这个子目录里还有一个apk,这个apk就是我们执行该命令后生成的目标apk。
此时,生成的apk并不能安装,因为还没有给它签名

给apk签名
如果没有签名文件,则创建签名文件,执行下面命令

keytool -genkey -alias mykeystore -keyalg RSA -validity 2100 -keystore mykey.keystore
-genkey:生成一个密钥(签名文件)
-alias:签名文件别名
-keyalg:生成密钥对的算法(常用RSA/DSA,DSA只用于签名,默认采用DSA)
-validity:签名文件的有效期(单位:天)
-keystore:签名文件名

mykeystore:签名文件别名
在这里插入图片描述
执行完后会在当前目录下生成签名文件:
在这里插入图片描述
查看签名文件信息:

keytool -list -keystore mykey.keystore

在这里插入图片描述
给apk签名,使用命令:

jarsigner -verbose -keystore mykey.keystore -signedjar app-debug-signed.apk app-debug.apk mykeystore

在这里插入图片描述

之后就可以在当前目录下看到生成进行签名过的app-debug-signed.apk接下来可能会遇到下面问题
安装失败,提示failed to install .\app-debug-signed.apk: Failure [INSTALL_FAILED_TEST_ONLY]
在这里插入图片描述
原因: Android Studio 3.0会在打debug apk时,在manifest文件application标签里自动添加 android:testOnly=true;属性
通过查看刚刚解包的mainfest文件
在这里插入图片描述
发现确实添加了该属性:
在这里插入图片描述
解决方法:

  • 方法一

在项目中的gradle.properties全局配置中设置:

android.injected.testOnly=false

  • 方法二,安装加 -t :

adb install -t app-debug-signed.apk

另外,提下我们AS下运行代码生成的debug包apk,它的默认签名文件是debug.keystore
debug.keystore位置: C:\Users\<用户名>\.android\debug.keystore
debug.keystore的密码:android
debug.keystore的别名:androiddebugkey

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值