目前,在网上大部分的apk重打包修改包名方法都是全局查找包名进行字符串替换。这样有个问题,就是当app上有native方法时,如果进行了全局替换,有些native方法将无法访问。最近有个需求我尝试研究非全局替换的方式修改包名,竟然成功了,过程给有需要的朋友参考一下。
实验apk:菜谱大全(非加固的app,加固的app本方法无效)原包名:net.meishi360.app修改后包名:net11.meishi360.app
重打包工具:Android Killer
apktool版本:2.4.1
一、先把apk拖进Android Killer反编译,然后不作任何修改重打包一次,在手机上可以顺利安装和使用。
![](https://static.52pojie.cn/static/image/common/none.gif)
QQ截图20200729161001.png (150.84 KB, 下载次数: 0)
下载附件
1
2020-7-29 16:49 上传
二、打开AndroidManifest.xml,首先修改包名package="net.meishi360.app" 为package="net11.meishi360.app",再次重打包,竟然可以顺利成功重打包。
![](https://static.52pojie.cn/static/image/common/none.gif)
QQ截图20200729161133.png (157.78 KB, 下载次数: 0)
下载附件
2
2020-7-29 16:53 上传
三、在手机安装打包后的apk,在没有卸载原来的apk时,发现安装过程中出错,新apk安装不进去。查看adb logcat,发现有些provider、intent名称已经被原apk注册进系统,q名称有冲突所以apk安装被中止。
四、继续修改provider、intent等名称。再次重打包,可以成功安装,并可以正常使用。修改包名成功。
![](https://static.52pojie.cn/static/image/common/none.gif)
QQ截图20200729162530.png (302.25 KB, 下载次数: 1)
下载附件
3
2020-7-29 17:03 上传
附:
修改前AndroidManifest.xml
[XML] 纯文本查看 复制代码
修改后AndroidManifest.xml
net11.meishi360.app.
DataProvider
" android:exported="false" android:name="cn.jpush.android.service.DataProvider" android:process=":pushcore"/>