Android使用productFlavors打不同包名的包
阿新 • • 發佈:2019-01-29
近期得到這樣一個需求,產品要求在原有專案功能不變動的情況下重新打包一個不同包名不同應用名不同圖示的應用方便測試進行功能試驗。所以就有了下面這篇文章,可能寫的不太完善,僅供大家參考。如果大家有更好的方案歡迎留言評論,大家共同進步。
首先在APP下的build.gradle中配置
productFlavors
productFlavors { wisdom { //基礎版本. applicationId "應用包名" resValue "string", "app_name", "應用名稱" manifestPlaceholders = [app_icon : "應用圖示", package_name : applicationId, //下面這些配置根據自己需求進行各自配置 WEIBO_APPKEY : "微博APPKEY", JPUSH_PKGNAME: 接受推送的包名, JPUSH_APPKEY : "極光推送的APPKEY", //JPush上註冊的包名對應的appkey.JPUSH_CHANNEL: "developer-default", //暫時填寫預設值即可. ] } sim { //新版本 applicationId "新的應用包名" resValue "string", "app_name", "新的應用名稱" manifestPlaceholders = [app_icon : "新的應用圖示", package_name : applicationId, WEIBO_APPKEY : "微博APPKEY", JPUSH_PKGNAME: 接受推送的包名, JPUSH_APPKEY : "極光推送的APPKEY", //JPush上註冊的包名對應的appkey. JPUSH_CHANNEL: "developer-default", //暫時填寫預設值即可. ] } }
這就是在build.gradle中進行的配置。
下面還需要在AndroidManifest.xml檔案中進行一些修改.
首先application中
android:icon="${app_icon}"icon圖不能寫成固定的,要根據gradle中配置的進行更改。
好了配置到這樣基本大功告成了,現在信心滿滿高高興興的執行專案了。。。
高興、開心、興奮。。。。。
阿西吧,我明明改過包名也進行過相關配置了啊,怎麼還讓我解除安裝原有的APP。。
經過一頓查閱資料,原來是provider許可權問題導致的。。那怎麼解決呢 。。
其實也沒有那麼難,只需要在AndroidManifest.xml檔案中進行provider的配置即可。。
具體如下:
<provider android:name="android.support.v4.content.FileProvider" android:authorities="${package_name}.provider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" /> </provider>
android:authorities="${package_name}.provider"主要是這一行的配置,原來這裡我是寫死的才會導致讓我解除安裝原有應用,一定注意這一行配置一定要寫成和gradle中配置的相應的包名。。
現在執行,OK兩個應用能夠共存了。。