android 二次打包工具,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:签名文件别名

b508bfd6bb5160d0f101ce59ed1e21ba.png

执行完后会在当前目录下生成签名文件:

873ee10d33dcdd77f53cbba33793fdec.png

查看签名文件信息:

keytool -list -keystore mykey.keystore

3b9436c87770b9f6caf89d10ebee6525.png

给apk签名,使用命令:

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

d7b864b1a2fef50c9c16208911d08005.png

之后就可以在当前目录下看到生成进行签名过的app-debug-signed.apk接下来可能会遇到下面问题

安装失败,提示failed to install .\app-debug-signed.apk: Failure [INSTALL_FAILED_TEST_ONLY]

e9e1cd8b1639befd7fff973e070d6b9a.png

原因: Android Studio 3.0会在打debug apk时,在manifest文件application标签里自动添加 android:testOnly=true;属性

通过查看刚刚解包的mainfest文件

7d7977183f5789e529fa5744ed618627.png

发现确实添加了该属性:

64b8001a6cf8062356e5714cb2a4d43b.png

解决方法:

方法一

在项目中的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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值