因需求,需要对项目包名进行更换(原来的包名太短),遂在网上收集一波,看了各种方法,结合对比后用了一个算是稳妥的方法
如图所示,点击小齿轮,取消勾选Compact Middle Packages
取消勾选的效果如下
这里就可以在包名的每个层级使用重命名
选择Rename后弹出提示框
选择Rename current
修改后点击Refactor应用,当前选择的层级包名就改好了,包名后续的层级这样改就行了,如遇到包名层级都,那就再对应的层级下新建package,最后把代码的所有包移到包名的最后一层里
这里修改完后,接着去AndroidManifest.xml修改<manifest .../>下的package的包名
继续去app下的build.gradle下的applicationId,替换成新的包名
理论上这些修改完就可以Build->Clean Project->Make project
其实不然,这里知识修改了部分,代码里R文件所在的包名还没有更改,总不可能一个个去class文件下去修改
幸好Android studio有一键修改的方法
如图,选择自己的应用所在的module,鼠标右键后选择Replace in Path
第一行的输入原包名的R,第二行的输入新的包名的R,然后点击右下角的Replace All就好了
这样编译run就能运行了
不过还有事情要注意,代码混淆的问题
一般对bean实体类都会进行混淆,所以在app下的proguard-rules.pro问价下使用Ctrl+F对当前文件进行搜索,把原来的包名替换成新的包名,替换界面跟全局替换的界面差不多的,就不上图了
入股有使用GreenDao,在app下的build.gradle也配置了greendao,也需要更改其包名
做完这些工作,可以算完成了!
写这篇文章的原因也是因为之前未对代码混淆下的包名进行替换,导致打包的apk运行时,post的实体类参数被混淆,结果就请求失败,找了一圈才发现是代码混淆文件下没有进行修改
解决了问题还是很高兴的!经验+1岂不美哉