Friend Alliance multi-channel packaging
Needless 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.
- The first step is to configure placeholder in Androidmanifest.xml.
< Meta-data Android:name = "Umeng_channel" android:value= "${umeng_channel_value}"/>
- The second step is set in Build.gradle productflavors
Android { Productflavors { Xiaomi { manifestplaceholders = [umeng_channel_value: ' Xiaomi '] } _360 { manifestplaceholders = [umeng_channel_value: "_360"] } Baidu { Manifestplaceholders = [Umeng_channel_value: "Baidu"] } 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 task
The previous blog describes the assemble command, which creates its own task in conjunction with the build Type , such as:
In addition, assemble can be combined with Product Flavor to create a new task, in fact assemble is used in conjunction with Build variants , and build variants = Build Type + Product Flavor , for example everyone understands:
If we want to pack the release version of the Wandoujia channel, it's good to do the following:
- ./gradlew Assemblewandoujiarelease
If we only play Wandoujia channel version, then:
- ./gradlew Assemblewandoujia
This command generates release and debug versions of the Wandoujia channel
In the same vein, I want to play all release versions:
- ./gradlew Assemblerelease
This command will flavor the release version of all the channels under product.
In summary, theassemble 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.
The complete Gradle script
Finally, a great benefit, a full gradle file configuration that I used in the project:
Apply plugin: ' Com.android.application ' def releasetime () {return new Date (). Format ("Yyyy-mm-dd", Timezone.gettimezone ("UTC"))} Android {compilesdkversion buildtoolsversion ' 21.1.2 ' defaultconfig {applicationid "com.boohee.*" Minsdkversion targetsdkversion Versioncode 1 Versionname "1.0"//DEX breakout 65535 The limit multidexenabled true//default is Umeng channel manifestplaceholders = [Umeng_channel_value: "Umeng"]} lintoptions {Abortonerror false} signingconfigs {debug {//No debug Config} Release {StoreFile file (".. /yourapp.keystore ") Storepassword" Your password "Keyalias" your alias "Keypassword" Your Password "}} buildtypes {debug {//Display LOG Buildconfigfield" boolean "," Log_de BUG "," true "Versionnamesuffix"-debug "minifyenabled false ZIpalignenabled false shrinkresources false Signingconfig Signingconfigs.debug} releas e {//Do not display LOG Buildconfigfield "boolean", "Log_debug", "false" minifyenabled true zipalignenabled true//Remove useless resource file shrinkresources true Proguardfiles Getdefault Proguardfile (' Proguard-android.txt '), ' Proguard-rules.pro ' Signingconfig signingconfigs.release APPL Icationvariants.all {variant-variant.outputs.each {output, def outputFile = Output.outputfile if (outputFile! = null && outputFile.name.endsWith ('. apk ')) { The output apk name is called boohee_v1.0_2015-01-15_wandoujia.apk def fileName = "Boohee_v${defaultconfig.versio Nname}_${releasetime ()}_${variant.productflavors[0].name}.apk "output.outputfile = new File (OutputF Ile.parent, FileName) }}}}}//Friends multi-channel packaging productflavors {wandoujia {} _360 {} Baidu {} Xiaomi {} tencent {} taobao {} ...} Productflavors.all {flavor-flavor.manifestplaceholders = [Umeng_channel_value:name]}}dependencies { Compile Filetree (dir: ' Libs ', include: [' *.jar ']) compile ' com.android.support:support-v4:21.0.3 ' compile ' com.jakew harton:butterknife:6.0.0 ' ...}
We have questions or questions, suggestions welcome blog comments, Android Studio Tutorial for a moment to end here, I believe we have the basic will be used, there are other skills and operations rely on their own groping, and then there will be time on the blog to sort out some tips and so on, welcome attention.
Transferred from: http://stormzhang.com/devtools/2015/01/15/android-studio-tutorial6/
Go-android Studio Series Tutorial six--gradle multi-channel packaging