Because of the many channels in the domestic Android market, in order to count the download of each channel and other data statistics, we need to be packaged separately for each channel, if let you hit dozens of market package is not bored to death, but with Gradle, this is no longer a thing.
Friend Alliance multi-channel packagingNeedless to say, in the case of Friends of the league statistics, in Androidmanifest.xml there will be such a paragraph:
<meta-data android:name="UMENG_CHANNEL" android:value="Channel_ID" />
The channel_id inside is the channel mark. Our goal is to automatically change this value at compile time.
<meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" />
Android{Productflavors{Xiaomi{Manifestplaceholders=[Umeng_channel_value:"Xiaomi"] } _360 {manifestplaceholders Span class= "o" >= [umeng_channel_value: "_360" Span class= "P" >] } baidu {manifestplaceholders Span class= "o" >= [umeng_channel_value: "Baidu" Span class= "P" >] } wandoujia {manifestplaceholders = [umeng_channel_value: " Wandoujia "" } } }
or batch Modification
android { productFlavors { xiaomi {} _360 {} baidu {} wandoujia {} } productFlavors.all { flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] }}
Very simple and clear, is there? Execute directly./gradlew assemblerelease, then you can have a quiet cup of coffee and wait for the package to finish.
Assemble combining build variants to create a taskThe previous blog describes the assemble command, which creates its own task in conjunction with the build Type, such as:
./gradlew Assembledebug
./gradlew Assemblerelease
In addition assemble can create new tasks in conjunction with Product Flavor, in fact assemble is used in conjunction with build variants, while build variants = Build Type + Product Fl Avor, for example, everyone understands:
If we want to pack the release version of the Wandoujia channel, it's good to do the following:
If we only play Wandoujia channel version, then:
This command generates release and debug versions of the Wandoujia channel
In the same vein, I want to play all release versions:
This command will flavor the release version of all the channels under product.
In summary, the assemble command creates a task with the following usage:
**assemble**: Allows you to build a variant version directly, such as Assembleflavor1debug.
**assemble**: Allows you to build all the APK for the specified build type, for example Assembledebug will build Flavor1debug and Flavor2debug two variant versions.
**assemble**: Allows all apk to be built for the specified flavor, for example AssembleFlavor1 will build Flavor1debug and Flavor1release two variant versions.
Finally, a great benefit, a full gradle file configuration that I used in the project:
ApplyPlugin' Com.android.application 'DefReleasetime(){ReturnNewDate().Format("Yyyy-mm-dd",TimeZone.getTimeZone("UTC"))}Android{Compilesdkversion21stBuildtoolsversion' 21.1.2 'Defaultconfig{ApplicationID"Com.boohee.*"Minsdkversion14Targetsdkversion21stVersioncode1Versionname"1.0"//DexBreakthrough65535The restrictionsMultidexenabledTrue//Default isUmengThe ChannelManifestplaceholders=[Umeng_channel_value:"Umeng"]}Lintoptions{AbortonerrorFalse}Signingconfigs{Debug{//NoDebugConfig}Release{StoreFileFile(".. /yourapp.keystore ")Storepassword"Your password"Keyalias"Your Alias"Keypassword"Your password"}}Buildtypes{Debug{//ShowLogBuildconfigfield"Boolean","Log_debug","True"Versionnamesuffix"-debug"MinifyenabledFalseZipalignenabledFalseShrinkresourcesFalseSigningconfigSigningconfigs.Debug}Release{//does not displayLogBuildconfigfield"Boolean","Log_debug","False"MinifyenabledTrueZipalignenabledTrue//Remove the UselessResourceFileShrinkresourcesTrueProguardfilesGetdefaultproguardfile(' Proguard-android.txt '),' Proguard-rules.pro 'SigningconfigSigningconfigs.ReleaseApplicationvariants.All{Variant-Variant.Outputs.each{Output-DefOutputFile=Output.OutputFileIf(OutputFile!=Null&&OutputFile.Name.EndsWith('. apk ')){//OutputapkName calledBoohee_v1.0_2015-01-15_wandoujia.apkDefFileName="Boohee_v${defaultconfig.versionname}_${releasetime ()}_${variant.productflavors[0].name}.apk"Output.OutputFile=NewFile(OutputFile.Parent,FileName)}}}}}//Friend Alliance multi-channel packagingProductflavors{Wandoujia{}_360{}Baidu{}Xiaomi{}Tencent{}Taobao{}...}Productflavors.All{Flavor-> flavor. Manifestplaceholders =