在android 平常项目开发中,修改项目包名是很常见的事,哪如何有限修改包名一步到位呢?经过几次痛苦的经历后,觉得有必要记录一番!
对于修改包名,一般有两种情况:
1)一个是包名目录结构不变,比如说,将包名“com.zlc.xuexi”,改成"com.xuexi.zlc"
2)另一个是包名目录结构改变了,目录级数改变了,比如说,从"com.xuexi.zlc",改变成"com.xuexi.zlc.zlc",这里包名的目录结构就从3级改变成为了4级
下面分别来讲解一下这两种情况
1、第一种情况:包名目录结构不变
针对第一种情况,其实特别好改,步骤截图如下:
切换的Progject结构,查看java包名结构,一般是这样的

点击show options menu按钮


去掉勾上的 Hide Empty Middle Packages 和 Show Members

java包的展示目录结构就改变了

对于包名目录结构不改变的。就分别改各个层次对应的包名或者直接按快捷键 Shift + F6


同理,假如是3级目录结构包名,每一个都要改变的话,就按照上图的做法一个个更改
接着,去改app模块下的build.gradle文件


然后去修改AndroidManifest.xml文件

最后,点击sync同步一下就大功告成了
2、第二种情况:包名目录结构要改变的
针对第二种情况,步骤截图如下:

点击show options menu按钮


去掉勾上的 Hide Empty Middle Packages 和 Show Members

java包的展示目录结构就改变了

对于包名目录结构不改变的。就分别改各个层次对应的包名或者直接按快捷键 Shift + F6


假如是3级目录结构包名,改成4级包名目录机构,首先要新建包然后去移动其他的目录包

新建好多一级的目录包之后,需要移动启动文件夹到该目录包下

接着,去改app模块下的build.gradle文件


然后去修改AndroidManifest.xml文件

最后,点击sync同步一下就大功告成了
3、注意
如果项目上用了DataBinding框架,特别是第二种情况,恭喜你,你肯能有得忙了。项目上有DataBinding框架的时候,当你按照上面的步骤修改了包名,就会报一个这样的错


遇到这个情况,肯定是修改包名或者移动了包名结构,但是布局文件或者java文件的的dataBinding的引用没有改变


这里我没找到特别快速修改的方法,放在我是一个个去检查java文件的导包和xml布局文件的应用,看对不对,不对就要手动改过来了,呜呜。。。。。。

如果,确定全部改完无误之后,重新Rebuild Project

万一,还是有刚才那个错误的话,记得再回头检查一遍java文件和布局文件,看看各自的引用对不对,如果全部都改对之后,还是有错误的话,哪就静下心来错误提示

如果不是DataBinding引起的话,一般都会找到比较明显的提示
网友评论
如果使用的地方多,可以写个解析类,替换字符串就行了