公司之前买了一套系统,由于商务原因其中一个广告的app,卖家不提供源码。上面的广告、logo和语音播报信息都是卖家的(不更改相当于变是给卖家做宣传了)。虽然app的功能比较简单,但是因为里面涉及一些后台的接口。自己写一个稍微有点麻烦。而且要改的内容也不多,只是替换掉一些图片和文本。所以采用的方案是:反编译>重新打包(不推荐我这种行为)。这里姑且当成总结写下来。
配置apktool环境:
反编译apk包
1、将要反编译的apk,移动到apktool.bat 同一目录,cd到这个目录,执行命令:apktool.bat d -f test.apk
2、反编译后文件
3、Ⅰ. 替换图片、logo,在res文件中找到相应资源覆盖即可;
Ⅱ. 修改文本信息,如果是写在string.xml直接修改,如果是写在代码里面需进行如下步骤:
⑴ 下载dex2jar和jd-gui
dex2jar: https://github.com/pxb1988/dex2jar
jd-gui: http://jd.benow.ca/
⑵ 将要反编译的APK后缀名改为.rar或则 .zip,并解压,得到其中的额classes.dex文件,将获取到的classes.dex放到之前解压出 来的工具dex2jar 文件夹内,在命令行下定位到dex2jar.bat所在目录,输入dex2jar.bat classes.dex,效果如下:
⑶ 使用下载好的jd-gui工具,打开classes_dex2jar.jar,效果如下:
⑷ 搜索找到要修改的文本的.class文件和所在的方法
⑸ 并找到同名的.smali 文件,因为.smali文件中文本采用unicode编码。需使用sublime打开,搜索文本unicode编码替换成要修改文本的unicode即可:
注:unicode<>中文转换工具:http://tool.chinaz.com/tools/unicode.aspx
重新签名打包
1.回编译apkapktool b filename -o test.apk
2、重新打包的apk,是没有签名的,找个工具进行签名:
或者使用命令签名: http://blog.csdn.net/gold_brick/article/details/52850169