適用場景
不同的開發版本,需要安裝到同一個手機上,比如debug版本和release版本,但要在android系統裏共存,必須包名唯一;
包名分離實踐
1.build.gradle中配置不同包名
develop {
initWith debug
applicationIdSuffix '.dev'
}
也可在gradle中指定使用不同資源(可選)
develop {
res.srcDirs = ['dev_res']
}
2.AndroidManifest配置
不要使用硬編碼包名,可以使用{applicationId}可以直接使用;
3.layout文件
自定義屬性時,命名空間中不要含有包名,可以用xmlns:app="http://schemas.android.com/apk/res-auto"代替;
4.代碼
代碼文件中如果要使用包名,用BuildConfig.APPLICATION_ID代替;
思考
經過分離實踐,同一份代碼打出來的包已經可以安裝到同一個手機上了,但也有一些缺陷:跟包名緊耦合的功能都會受到影響,與登記包名不一致的app包對應功能都不可用;比如:微信分享、微信支付等;