情景:
主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自動修改掉,而是需要自己維護一致性。所以建議在開發中盡量避免這種在字符串里硬式綁定包名的情況的出現。