如果需要把原有的app复制一份出来,新的app使用一个新的packageName,有如下几个步骤要做:
- 更改
Manifest.xml中的packageName - 更改
Manifest.xml中<activity><service><receiver><provider>的name为新的完整包名,不能使用简写 - 更改
build.gradle中的applicationId - 更改所有
import了本项目中的R.class语句 - 更改所有
import了本项目中的BuildConfig.class语句项目资源
R.class的包名是根据packageName生成的
传统方式
修改上面1、2、3点比较简单,第4点需要进入每个activity/view/fragment进行修改,工作量很大,而且容易出错
效率方式
- 先不修改1、2、3
- 找到
R.class文件的位置(一般在ApplicationRoot/build/generated/source/r/debug)(Android Studio) - 然后
debug目录下建立新包名的目录 - 把
R.class移动到新的目录下,或者使用refractor->move,此时android studio会触发do refractor的逻辑,此过程会比较久 - 检查
activity/view/fragment的中import R.class是不是都已经指向新的包名 - 再执行1、2、3
同样的方式应用到
BuildConfig.class
补充注意
- 如果有使用到””字符串中包含有包名,要自己手动进行修改
