这几天工作需要研究了一下apktool
1、下载和安装
官网下载地址
https://ibotpeaches.github.io/Apktool/install/
先check一下自己的Java JDK的版本,然后在本地新建了个apktool文件夹
1)下载apktool.bat,右键点击wrapper script,链接另存为…,把下载的文件放到apktool文件夹下,名字保存为apktool.bat;
2)下载apktool.jar文件,点击find newest here,跳到下载页,下载最新版本。
3)把下载的jar文件重新命名为:apktool.jar。
4)配置环境变量,如果保存在C盘Windows下,就不用配置环境变量。
5)检查是否安装成功apktool -version
出现刚才下载jar文件的版本号就成功了。如果不成功,先检查Java JDK版本 ;再检查apktool的环境变量;再检查apktool.bat文件是不是有内容(我之前出现了这种情况,不知道为啥apktool.bat是空的,重新下载正常了)
2、反编译apk
apktool d test.apk
(需要反编译apk包的名字)
执行完成之后,会在apktool文件夹下生成一个tets文件夹
然后就可以修改了(smali文件对应的就是java代码,可以对smali文件做直接修改)
命令行输入apktool b test -o new_test.apk
,会生成一个名为new_test的apk包
然后可以尝试装到手机上了,会发现不能安装,是因为这个包没有签名
3、签名生成
命令行输入keytool -genkey -alias abc.keystore -keyalg RSA -validity 20000 -keystore abc.keystore
-genkey 产生证书文件
-alias 产生别名
-keystore 指定密钥库的.keystore文件中
-keyalg 指定密钥的算法,这里指定为RSA(非对称密钥算法)
-validity 为证书有效天数
签名文件生成后,在apktool文件夹里面多了一个abc.keystore文件
(如果你的命令行显示乱码,不要慌,一步一步输入下去即可)
4、编译和签名打包
命令行输入jarsigner -verbose -keystore abc.keystore -signedjar new_test_signed.apk new_test.apk abc.keystore
new_test_signed.apk为签名后的文件名
new_test.apk签名前的文件名
然后就有一个new_test_signed.apk文件生成了