Android Studio中通过gradle实现多渠道打包
分类:Android, Java
阅读 (1,809)
Add comments
1月 172017
在使用友盟统计的时候,我们需要在AndroidManifest.xml为每个不同的渠道设置一个渠道名称,然后修改一次打一次包,当渠道多的时候这样非常的麻烦。庆幸的是,gradle脚本有方便的方法可以实现多渠道一次打包。
首先在AndroidManifest.xml中这样配置友盟的渠道信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<application android:name=".NoteApplication" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:supportsRtl="false" android:theme="@style/AppTheme"> ... <meta-data android:name="UMENG_CHANNEL" android:value="${umeng_channel_holder}"/> ... </application> |
umeng_channel_holder相当于为gradle的脚本定义了一个变量,稍后会在gradle脚本中使用,你也可以定义成其他的名字,只要用${}括起来就可以了。
下面我们在主gradle文件中为这个变量设置不同的配置信息,这段信息要放在android->productFlavors节点下,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
apply plugin: 'com.android.application' android { ... productFlavors { wandoujia { manifestPlaceholders = [umeng_channel_holder: "wandoujia"] } baidu { manifestPlaceholders = [umeng_channel_holder: "baidu"] } xiaomi { manifestPlaceholders = [umeng_channel_holder: "xiaomi"] } tencent { manifestPlaceholders = [umeng_channel_holder: "tencent"] } jeoe { manifestPlaceholders = [umeng_channel_holder: "jeoe"] } } } dependencies { compile 'com.umeng.analytics:analytics:latest.integration' compile 'com.android.support:appcompat-v7:25.0.0' compile 'com.android.support:support-v4:25.0.0' compile 'com.android.support:recyclerview-v7:25.0.0' } |
如上代码我配置了wandoujia, baidu, xiaomi, tencent, jeoe共五个渠道,这样就配置完成了,点击Build->Generate Signed APK,在第三步的时候所选要打包的flavor就可以一次生成多个安装包了。