用Android studio多渠道打包以及使用不同資源(包括icon或者其他圖片等)
阿新 • • 發佈:2019-01-02
自己專案需要分渠道打包,且使用不同資源,所以,在百度之後,總結了一下:
利用友盟分渠道打包,首先在manifest裡面加一句:
<meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" /> <!-- 友盟分渠道打包-結束 -->
然後在build.gradle里加:
defaultConfig{
//友盟分渠道打包 manifestPlaceholders = [ UMENG_CHANNEL_VALUE:"channel_name" ]
}以及加上這個:
// ChannelsproductFlavors { // 自定義偏好設定. //大括號內的 applicationId可以不要,如果加上,便是打包時的包名 google { applicationId "com.broadmobi.channel.google"} wandoujia { applicationId "com.broadmobi.channel.wandoujia" } baidu { applicationId "com.broadmobi.channel.baidu"} qihu360 { applicationId "com.broadmobi.channel.qihu"} } productFlavors.all { flavor -> flavor.manifestPlaceholders = [ UMENG_CHANNEL_VALUE:name ] }
注意:上面productFlavors裡的每個,代表你不同的渠道,大括號內的applicationId,是你打包時不同渠道的報名,如果需要包名一致,大括號為空即可。
另外,如果擔心打包時生成的apk沒辦法區分,可以在build.gradle的buildTypes的release里加入如下程式碼,修改名字:
applicationVariants.all { variant -> variant.outputs.each { output -> def在fileName前後都可以加修飾符,自己定義就好,別用中文,我上面的只是個提示。outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith('.apk')) { def fileName = outputFile.name.replace(".apk", "-${defaultConfig.versionName}.apk") output.outputFile = new File(outputFile.parent, "字首_" + fileName) } } }
另外,如果需要使用不同的icon或者背景圖片等,可以這樣操作:
在src裡面新建一個專案名,與productFlavors裡面的要相同,和main同級,在下面建立你需要的資原始檔夾,放入不同的資原始檔即可。
比如,我的建立了wandoujia和baidu兩個資料夾,因為我需要使用不同的icon和背景圖片。
最主要一點,如果要使用不同的icon,一定要在manifest裡面加兩行程式碼:
xmlns:tools="http://schemas.android.com/tools"
和:
android:icon="@drawable/ic_launcher" tools:replace="android:icon"android:icon="@drawable/ic_launcher"這個是原本就有的,在它下面加一行tools:repalce="android:icon"
這樣,就可以使用不同的icon.
如果要用不同的名字,可以在tools:repalce="android:icon"的裡面加一個例如;tools:repalce="android:icon,android:label"
就可以引用不同的APP名稱了!
自己專案需要,在網上查了好多,沒有一個統一的,就摸索結合了好幾個,希望對你們有用,有問題可以問我。