情景:
主Module引用了多个module,在代码使用R.xx.xx的时候,会import 当前包名.R。而由于需要上架Play做测试,可是目前的包名已经被使用了,所以需要修改包名。
正确使用build.gradle前的解决方案:
在AndroidManifest.xml中用Shift+F6重命名完包名后,再去一个个java文件中手动修改import语句。
正确使用build.gradle后的解决方案:
在AndroidManifest.xml中还是要写有package的属性(假设值为com.placeholder.pkg),然后在项目的其他需要用到包名地方也是直接使用“com.placeholder.pkg”这个包名。
然后在主Module的build.gradle中的android property的defaultConfig中加入applicationId字段,如下:
1 android { 2 defaultConfig { 3 applicationId "新包名" 4 //其他配置 5 } 6 //其他配置 7 }
这样在使用gradle构建项目的时候,gradle就会把项目中所有的“com.placeholder.pkg”这个包名修改为“新包名”。例如上述情景的需求的时候,就只需要修改build.gradle文件的applicationId即可。
但是要注意,假设是在字符串里面使用到的这个包名,那应该就不会被gradle自动修改掉,而是需要自己维护一致性。所以建议在开发中尽量避免这种在字符串里硬式绑定包名的情况的出现。