1. 重命名办法,网上很多见

2. 对于需要重新修改包名的级别的

a. 修改package 和 gradle 的包名,对应一致。

b. 修改R 所在包名,使用crtl+n修改R文件的路径

c. 手动首改manifest文件的报错信息,和相关的包名路径,activity建议使用局对路径

d. clean 和rebuild 项目,此时如果r的引用还在报错的话,可以全局替换的方法,替换旧的R为新的方法。

参考文档http://blog.csdn.net/qq_21445563/article/details/52057189

今天有个朋友问我,怎么用Android Studio改应用的包名。
他的情况是,项目是从eclipse那里导入到AS上面的,不知道为毛,原包名是com.xxx.yyy.activity,想改成com.aaa.bbb。
好吧,其实我也没在AS上改过包名,于是试着自己玩了下,过程有点坑,写篇博客总结一下。

用Android Studio自带的Refactor-Rename(重构-重命名)更改包名

当然,一开始想到的就是AS的重命名功能(快捷键shift+f6),
恩,挺好用,但是发现一次只能包路径的单一层次?嗯,什么鬼?

就是上图那样,每次只能改一层,也只能重命名一层。
而且最重要的是,无法更改层次结构,就是说原来包名是com.xxx.yyy,没法改成 com.xxx 或者 com.xxx.yyy.zzz。
如果目标包名跟原包名层次结构一样,那么可以无视下文了。AS的这个重命名功能就十分好使。
改完后顺便把gradle的applicationId改了就OK了。

另辟蹊径

如果只用AS的重命名功能,估计没法完成我朋友的需求了,毕竟要改层次。
看来只能手动改完清单文件的包名后,再一个个去改代码中R文件的包名。
感觉要疯,毕竟代码中,引用R文件的频率略高,一个一个改工作量太大。

想起试过在AS里面移动过xxx.Java,然后所有引用xxx类的文件也会更改相应导入包的路径。
于是就想着是不是可以从R文件入手,把R文件移动到新包上,利用AS强大的重构功能去自动更改其他文件引用R文件的路径。
发现的确可行。

下面简单归纳一下步骤:

  1. 更改AS项目结构的显示方式,如下图;

  2. 修改目标moduleAndroidManifest.xml中的package,还有build.gradle中的applicationId

  3. 定位R文件(这里用快捷键ctrl+n),在R文件所在的那些个目录(这个不知道怎么用文字描述,等下看图吧)中建立新包;

  4. 移动R文件到新包中,根据提示选择重构相关文件。

  5. AndroidManifest.xml中某些四大组件的name属性可能用了相对路径,这时会提示出错,重新改一下路径即可,最好改成绝对路径。

上面是没啥营养的文字说明,具体操作还是看动图吧。
注意移动R文件并Refactor其他文件的时候,AS会卡一阵,其实后面还有内容的。

就是这样,其实挺简单的。
注意到R文件其实在build文件夹里面,也就是说其实是自动生成的文件,
所以更改包名后,如果残留原包的文件夹,其实可以不用去管它,下次编译的时候会自动消失的。

最新文章

  1. Sublime Text 2 增加python版本
  2. Boot 44b0x by uboot
  3. Ubuntu14.04搭建LAMP环境
  4. MVC的System.Web.Mvc.ViewPage小结
  5. html背景自动移动
  6. hover和mouseover,mouseout的区别
  7. css圆角 四边投影
  8. php防止sql注入函数
  9. IIS上不能播放mp4
  10. java之Thread.sleep(long)与object.wait()/object.wait(long)的区别(转)
  11. <经验杂谈>前端form提交导出数据
  12. 团队作业8----第二次项目冲刺(beta阶段)5.21
  13. YYHS-NOIP模拟赛-gcd
  14. github pages绑定域名
  15. C#模拟Https请求时出现 基础连接已经关闭 未能为 SSLTLS 安全通道建立信任关系
  16. PYTHON进阶(4)
  17. 深入理解koa中的co源码
  18. Validation failed for one or more entities. See ‘EntityValidationErrors’解决方法;关于如何查看 EntityValidationErrors 详细信息的解决方法
  19. SSH免密码登录教程
  20. Add custom field in Material Master

热门文章

  1. Python功能键
  2. redis's usage
  3. python编程中的if __name__ == 'main与windows中使用多进程
  4. 背景新增属性和css渐变及倒影
  5. 二叉树遍历等基本操作(Java实现)
  6. 使用 win10 的正确姿势
  7. KVM之一:安装准备(基于CentOS6.7)
  8. 听翁恺老师mooc笔记(7)--字符串1
  9. bug终结者 团队作业第六、七周
  10. 201421123042 《Java程序设计》第8周学习总结