Android Studio 使用Gradle多渠道打包

Lisa322發表於2016-11-22

一、使用Gradle進行類似小米這樣的多渠道打包

使用Gradle Android外掛裡的productFlavors。
假設我們要打包出如下的渠道xiaomi,waps

第一種方法

在app/src同級目錄下新建xiaomi,waps資料夾,這兩個資料夾裡面都各只有一個AndroidManifest.xml檔案
內容如下:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="package name">
    <application> 
    <meta-data android:name="XIAOMI_CHANNEL" android:value="xiaomi"/>
    </application>
</manifest>

注意,上面的value的值要和你的渠道名所對應。
然後在build.gradle的android{}節點裡面,新增productFlavors節點,程式碼如下:

  //其他配置
 productFlavors {
        waps {}
        xiaomi{}
    }
  //其他配置

注意:這裡的productFlavors 的名字要和你的資料夾的名字對應。這樣配置之後,構建的就是多渠道的APK了。 同步一下配置檔案,就可以執行Build-Generate Signed APK 打包。

第二種方法

不用建立那些檔案,它使用的是Gradle Android外掛裡的另一個功能,manifestPlaceholders。
你只需要在AndroidManifest.xml中,進行這樣配置:

<meta-data android:name="XIAOMI_CHANNEL" android:value="${CHANNEL_NAME}" />

然後同樣使用productFlavors,它的配置是這樣的:

  productFlavors{
        xiaomi{
            manifestPlaceholders = [ CHANNEL_NAME:"xiaomi"]
        }
        waps{
            manifestPlaceholders = [ CHANNEL_NAME:"waps"]
        }

    }

使用manifestPlaceholders的這種配置,同樣適用於manifest的其他配置。比如你需要在不同渠道釋出的apk裡面,指定不同的啟動Activity。比如在小米里釋出的,啟動的Activity顯示的是小米首發的介面,你就可以對你的activity的值使用activitynameproductFlavors

{activityname}的方式,然後在productFlavors裡面配置這個
{activityname}的值。

相關文章