同一應用不同包名實踐

適用場景

不同的開發版本,需要安裝到同一個手機上,比如debug版本和release版本,但要在android系統裏共存,必須包名唯一;

包名分離實踐

1.build.gradle中配置不同包名

develop {
      initWith debug

      applicationIdSuffix '.dev'
}

也可在gradle中指定使用不同資源(可選)

develop {
      res.srcDirs = ['dev_res']
}

2.AndroidManifest配置

不要使用硬編碼包名,可以使用applicationId{applicationId}代替,{applicationId}可以直接使用;

3.layout文件

自定義屬性時,命名空間中不要含有包名,可以用xmlns:app="http://schemas.android.com/apk/res-auto"代替;

4.代碼

代碼文件中如果要使用包名,用BuildConfig.APPLICATION_ID代替;

思考

經過分離實踐,同一份代碼打出來的包已經可以安裝到同一個手機上了,但也有一些缺陷:跟包名緊耦合的功能都會受到影響,與登記包名不一致的app包對應功能都不可用;比如:微信分享、微信支付等;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章