1. 程式人生 > >用Android studio多渠道打包以及使用不同資源(包括icon或者其他圖片等)

用Android studio多渠道打包以及使用不同資源(包括icon或者其他圖片等)

自己專案需要分渠道打包,且使用不同資源,所以,在百度之後,總結了一下:

利用友盟分渠道打包,首先在manifest裡面加一句:

<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
<!--  友盟分渠道打包-結束  -->

然後在build.gradle里加:

defaultConfig{
//友盟分渠道打包
manifestPlaceholders = [ UMENG_CHANNEL_VALUE:"channel_name" ]
}
以及加上這個:
// Channels
productFlavors { // 自定義偏好設定. //大括號內的 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 
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) } } }
在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名稱了!

自己專案需要,在網上查了好多,沒有一個統一的,就摸索結合了好幾個,希望對你們有用,有問題可以問我。