前言
為了更好的統計每個來源的下載量,當我們項目打包的時候,需要打出不同渠道的包。如何打多渠道包?新一代構建工具gradle,其中的一大優勢就是支持多渠道,多Apk打包。
Gradle的基礎概念
flavors
創建新工程時,自動會生成默認的flavor配置。查看Moudle的build.gradle文件 如下標紅處:
也可以在Project struct 的flavors標簽看到,如下標紅處:
build Types
創建新工程時,也會自動的生成默認的build type 配置,查看相應Moucle的build.gradle 文件,如下標紅處:
也可以在Project struct 的build Types 標簽看到,如下標紅處:
這些默認的配置,當沒有額外的打包需求,這些默認的配置也能夠滿足了。
在gradle中,可以添加 buildTypes 和 productFlavors 來配置不同的打包類型,它們的關系是:
Build Type + Product Flavor = Build Variant
友盟多渠道打包
通過使用友盟的多渠道打包,分析如何使用build Types 和 Flavors 。
獲取 友盟Appkey
這個就不說了,誰用誰知道。
在manifest文件配置友盟 appkey,如下:
在圖中標藍處,設置一個占位符變量UMENG_CHANNEL_VALUE動態的生成該值。如何生成,下面有說。
配置Flavors
可以在Moudle下的build.gradle文件配置你所需要的渠道,也可以在Project struct 中Flavors 標簽手動添加。我這里使用的在build.gradle文件中配置:
在標藍處的代碼,生成在manifest文件占位符變量UMENG_CHANNEL_VALUE的值,該值來源與標黃處。
通過這樣配置,打開Project struct ,如下:
可以看到,除了默認的配置,還多了我們在build.gradle 文件中配置的Flavors。
打開Build Varian面板,如下:
可以在build variants面板中可以選擇構建的flavor;
打包
在Android studio 的Terminal 終端輸入如下命令:
Mac :
|操作|命令|
|:---:|:---:|:---:|
| clean|./gradlew clean
| build|./gradlew build
| assemble|./graldew assemble
Win :
|操作|命令|
|:---:|:---:|:---:|
| clean|gradlew clean
| build|gradlew build
| assemble|graldew assemble