本文简单介绍apk是如何修改logo(ic_launcher),类似的资源文件修改也可以通过此方式。不过要修改class的话就要涉及到smali的学习了,这里就暂且不谈,后续有需要再做更新。
工具介绍
- apktool:用来反编译apk,apk重新打包
- autosign:自动签名工具,将重新打包的apk进行签名,如果不签名,无法安装使用
- jadx-0.6.1-dev-build226:查看源码及目录结构,相当于dex2jar + jd-gui
这些工具在网上都可以下载的到,如果需要的话留下邮箱即可
工具使用
jadx-0.6.1-dev-build226
双击jadx-0.6.1-dev-build226\bin目录下jadx-gui.bat,选择test.apk即可看到源码及目录结构,如下这只是用于查看源码,并起不到修改作用,不过可以查看要修改的东西在哪个位置,真正修改要通过apktool反编译apk的源码才可以修改。
apktool
该目录下有三个文件:aapt.exe,apktool.bat,apktool.jar ,将需要反编译的APK文件放到该目录下,如图:
在该目录下,按住Shift,然后右键选择“在此处打开命令窗口”,输入一下命令:
apktool.bat d -f test.apk -o test
apktool -f [待反编译的apk] -o [反编译之后存放文件夹]
如果反编译过程中遇到Exception in thread “main” 错误,可能是apktool.jar的版本太低,使用高版本不会出现异常。
请往https://ibotpeaches.github.io/Apktool/
重新下载,下载到的apktool_xxx.jar文件改名为apktool.jar,然后替换掉老版本的apktool.jar,重新执行命令应该就正常了。
反编译之后会得到test 文件夹,打开test文件夹,里边就是反编译出来的各种资源文件
然后进行test\res目录去修改ic_launcher,这里所有的ic_launcher都要做替换。
修改成功,保存,重新打包,执行打包命令
apktool.bat b test
在test文件内会多出两个文件如下图所示:
dist文件内就是我们需要的apk。
autosign
签名apk,重新发布
接下来就要用到签名工具了,如果不经过签名是不能正确运行的。工具: auto-sign.zip
将打包好的test.apk 拷贝到解压好的auto-sign文件夹下,执行命令:
java -jar signapk.jar testkey.x509.pem testkey.pk8 test.apk test_signed.apk
test_signed.apk就是签名后的apk
到此修改资源文件就大功告成了,也是很简单的
参考:https://blog.csdn.net/sxk874890728/article/details/80486223