APK包名修改 请问如何修改APK包名
目的声明:本文只是为了满足DIY的需要,并不是为了成为打包党,窃取别人的劳动成果,本文所涉及的工具也均为开源的,仅供学习交流之用。
DIY前提:在国内的论坛里,搜索了一下,找到了各种解包,打包的技术内容,以及各种汉化、去广告的帖子,但这个并不是本文的目的。以前见过打包党不仅修改了别人apk的广告用来获利,还将别人apk的包名修改了,所以有人早就实现了,但未能找到相关的技术文章,本文涉及的知识都还是比较浅显的,没有深入的研究底层原因,也参考了网上几个帖子。
PS:在国内论坛上,找一篇原创的帖子很难,基本都是转载的,还不附原文链接,引入了的很多错误,想找到原文都很难,真是很悲剧。国内论坛里,热心人还是少了点,很多问题都死了,无人回答,笔者尝试在CSDN、ITEYE、EOE发过几个帖子,但很少能解决问题,于是只能求助于国外论坛,这也是一个悲剧。
这个问题解决完了,也很简单,至少我这个比较简单,我是想多安装几个QQ浏览器(有IT屌丝安装了10个微信的,这个我表示很汗),基本过程如下:
1、将apk解包成一个文件夹
2、修改AndroidManifest.xml中对应的包名
3、修改smali目录下中的包
4、将文件夹打包成apk
5、将apk重新签名
6、验证apk的签名
7、优化apk
8、安装apk,并测试
基本前提条件:
1、java的环境
2、Eclipse及android的开发环境(这个主要是用来进行调试)
3、text文本编辑器,本人用的是UEdit,也可以用类似的,主要是利用其查找及替换功能
这篇文章主要用来反编译apk得到源码,但google进行了反制,只能得到一些可读性不高的源码,这里主要是利用反编译apk生成程序的源代码和图片、XML配置、语言资源等文件.
参考文献里提到的apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip均可以从http//code.google.com/p/android-apktool/上下载,下载好之后,将涉及的命令行目录及exe目录添加到电脑的path路径中,这样就便于操作了,如检测apktool是否可以,可以在命令行中输入apktool,如果可以识别就表示OK了。
参考了国内的技术文章后,有人发帖以上面的思路进行操作,但没有发技术文章,所以笔者只能去国外论坛中逛逛了,在Stack Overflow中,找到了相关的帖子,有老外留言"you can't do this",这个的确有违技术道德,但这里只做学习参考或交流。找到了一片帖子http://stackoverflow.com/questions/9218641/renaming-the-package-name-inside-an-apk,这篇帖子的回答给了比较详细的步骤(如上),他的情况比这个还稍微复杂点,简化后就是我要的结果,我就是按照这个基本步骤来的,回答的英文比较好懂(很有可能是国人)。
下面就按照上面的步骤一步步操作:我是已QQ浏览器4.0版的apk来操作的。
1、我的apktool安装到了E盘下的apktool目录下,所以的操作也在这个目录下进行 E:\apkTool
将apk复制到E:\apkTool目录下,重命名为qq4.0.apk(这个没有要求,随意就好)
将apk解包 命令行下cd到E:\apkTool这个目录 apktool d qq4.o.apk qq4 将apk解包到qq4(这个也可以随意)这个目录
E:\apkTool\qq4这个目录下内容如下:
2、修改AndroidManifest.xml中的包名,
将package后面的包名com.tencent.qbx改为你想要的新包名,我改为了com.tianxiao.tencentweb
将涉及原包名的com.tencent.qbx的相关activity的声明中的包名均改为新包名com.tianxiao.tencentweb
至于intent-filter里面的action名中包含原包名的,则可以不改,如果改的话,代码中也要相应的改变
另外,如果有provider,provider的authorities也得改,这个在同一手机上必须唯一,否则安装会失败
3、在E:\apkTool\qq4\smali目录下,有很多子目录,子目录下的文件多以smali结尾,这中文件的语法有点类似于汇编语言,具体原理就不深究了。
将smali目录下的所有文件中的原包名的声明形式com/tencent/qbx改为新包名com/tianxiao/tencentweb
具体如下,用UEdit在文件中替换即可,将目标目录指向E:\apkTool\qq4\smali,这个将近1000条左右
如果之前改为action里面的包名,也要将字符串形式的包名com.tencent.qbx改为com.tianxiao.tencentweb
如果有provider也要讲原来的authorities值改为在AndroidManifest.xml中新改的authorities值。
4、将E:\apkTool\qq4重新打包为apk
apktool b qq4 newqq.apk
5、将新的newqq.apk 重新签名
签名的方法很多,一主要是手动生成签名,用命令行签名
我采用的现成的,下载了一个Auto-sign的文件夹,进行了签名,这个比较简单,网上帖子很多,就不赘述。
新签名后的apk名为 newqq4signed.apk
6、验证签名 是否正确
jarsigner -verify -verbose -certs newqq4signed.apk
一般来说,没问题,略过
7、优化apk
zipalign -v 4 newqq4signed.apk latestqq.apk 优化过的apk名为latestqq.apk
8、安装新的apk,验证是否成功
这个最好把Eclipse打开,手机连上,查看logcat的安装信息。
我尝试了3次才成功,主要是忘了 provider的authorities的处理,
出错信息如下: Can't install because provider name qbx_bookmarks (in package com.tianxiao.tencentweb) is already used by com.tencent.qbx
原因很清楚,所以debug还是相当给力的,原来不喜欢debug,看debug过程可以更好的了解执行过程。
在进行了测试后,笔者有多次重复了2-8这几个步骤,共得到了4个新的apk,安装后的结果如下图:
如图,QQ4.0的浏览器,原装的装了一个,重新打包的有4个,预期目标达到了。
本次尝试成功了,花了不少时间查资料,基本原理相当的清楚,本文中笔者尽可能不产生歧义,欢迎各位交流和批评。
APK包名修改 请问如何修改APK包名相关推荐
- 如何修改安卓手机的APK应用图标
我们继续以"食品真相大揭秘.apk"为例,讲解如何修改apk应用图标(安装后在手机中显示的应用图标). 正常情况下,"食品真相大揭秘.apk"安装到手机后的应用 ...
- 游走Android系列之APK文件的反编译、修改和重新编译打包
Android apk反编译.重新编译和签名 将apk文件解压后有两部分文件需要处理,一种是xml文件,另一种一个dex文件(.dex),我们可以从.dex文件中得到.class,再将.class处理 ...
- 安卓apk修改(Android反编译apk)
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程.APK修改,分为以下几步:反编译解包,修 ...
- Unity 安卓 apk 反编译 重新打包 签名修改
拿到一个Unity 打包出来的apk,如果没有加密的话 ,你是可以通过反编译修改其中的属性的. 步骤一 apk 解压 方法1: apk 变成 .zip 并解压 然后修改 \assets\bin\D ...
- android adb apk包名,ADB命令简单使用--查看包名、activity等
1.连接设备 adb connect ip 2.查看连接的设备 adb devices 3.安装/卸载Android 应用 adb install packagesname adb uninstall ...
- 通过输入ab包名和后缀名自动添加或修改ab包名(同一文件夹下的所有文夹都会被修改包括子文件夹)
说明 temp = temp.Substring(temp.IndexOf("Assets")); 这段代码主要是获取的文件路径为完整路径,而AssetImporter.GetAt ...
- java 获取apk版本号_纯JAVA环境获取APK信息:包名,版本,版本号,大小,权限...
[实例简介] 纯JAVA环境获取APK信息:包名,版本,版本号,大小,权限... 代码讲解地址:http://blog.csdn.net/chillax_li/article/details/4185 ...
- APK改之理 手游修改改编安卓程序工具安装使用教程
APK改之理 手游修改改编安卓程序工具安装使用教程 --APK破解付费程序 apk改之理是pc平台上一款非常好用的apk反编译工具,他将反编译以及签名等功能集中在一起,并且拥有非常人性化的操作界面,如 ...
- eclipse修改android包名,Eclipse 如何快速修改工程名及包名
修改工程名/包名,也是咱们在开发中常常遇到的问题,好比咱们在开发过程当中忽然以为项目名不合适,或者根包名不合适想修改一下怎么办? 缓存 在Eclipse中修改Android应用程序包名时,须要修改的几 ...
最新文章
- (转)jLink使用ITM机制实现调试stm32单片机
- 代码跑得慢?分分钟教你如何给代码提速30%!!!
- Xamarin.Forms中为WebView指定数据来源Source
- inodesusedpercent_Linux运维监控基础采集项
- java多态和继承_Java学习--继承与多态
- 双目视觉几何框架详解(玉米专栏8篇汇总)
- python的数据库中间件_数据库中间件设计方案
- 关于An association from the tablea refers to an unmapped classB
- Linux搭建NFS文件服务器
- 微信小程序的剪贴板 +复制剪贴,在淘宝中打开就可以获取到商品
- Delphi 11.1 Alexandria 下载地址集合(包括以前版本)
- 常用思维模式大全(上)
- mysql es 父子关系 下级数据查询效率对比
- roaringbitmap java,BitMap与RoaringBitmap、JavaEWAH
- foxmail 163企业邮箱配置
- 空间参考系统据库srs.db的使用
- Windows Server 2008 安装VMware Tools
- node.js实现图片裁剪+获取图片大小+加logo水印
- GPU暗战CPU十年凭什么?
- yolov8 OpenCV DNN 部署 推理报错
热门文章
- 【My Electronic Notes系列——逻辑函数的化简】
- 【计算机组成原理】计算机系统硬件结构存储器
- “讲得清,控得住,降得下”——红辽公司备件全生命周期管理创新实践
- 如何用power bi做库存周转率分析?
- a different object with the same identifier value was already associated with异常解决
- asp.net(vb)与sql的连接(代码写在web.config中的)
- Java常见面试题(八股文)汇总
- v7.widget.SearchView的使用
- 若依前后端分离框架学习-6:日志管理
- (附源码)springboot建材市场销售管理系统 毕业设计 191544