android gradle两种多渠道打包方式
android gradle两种多渠道打包方式
gradle多渠道打包,目前已经了解到的有两种方式:
- 一种是利用gradle的manifestPlaceholders属性来替换渠道值
- 另一种是不同的渠道包打不同的资源
一、利用gradle的manifestPlaceholders属性来替换渠道值
1、渠道信息一般在 AndroidManifest.xml中:
<application
<meta-data
android:name="UMENG_CHANNEL"
android:value="${CHANNEL_NAME_VALUE}" />
</application>
2、然后在你的build.gradle的android{}节点里面,添加productFlavors节点,代码如下:
android {
// 其他配置信息...
productFlavors {
wandoujia {}
baidu {}
c360 {}
uc {}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [CHANNEL_NAME_VALUE: name]
}
}
// 其他配置信息...
}
3、生成全部渠道包
在android studio底栏中有个命令行工具Terminal,打开后自动切换到当前项目的目录下,项目下会有graldew.bat这个文件,输入以下命令:
gradlew assembleRelease
就可以一次性生成所有的渠道包了

注:运行gradlew assembleRelease命令前,确保gradle环境变量已配置:
4、gradle环境变量配置
1)、打开我的电脑->属性->高级->环境变量。
2)、新建用户变量GRADLE_HOME
变量名:GRADLE_HOME
变量值:C:\Users\xueliangxia\.gradle\wrapper\dists\gradle-2.9-all\1aw2ic01pldw5fkvoq6t1fsz4\gradle-2.9
3)、选择“新建用户”中变量名为“Path”的环境变量,双击该变量,并使用半角的分号和已有的路径进行分隔。
变量名:Path
变量值:C:\Users\xueliangxia\.gradle\wrapper\dists\gradle-2.9-all\1aw2ic01pldw5fkvoq6t1fsz4\gradle-2.9\bin
5、渠道包截图:

二、第二种实现方式,不同渠道打不同的资源
1、在app/src下面,分别创建和main同级目录的文件夹umeng, wandoujia, yingyongbao,这三个文件夹里面都各只有一个AndroidManifest.xml文件,文件只需要如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="xiaxl.le.com.myapplication">
<application>
<meta-data android:name="UMENG_CHANNEL" android:value="UMENG"/>
</application>
</manifest>
Ps:上面的value的值要和你的渠道名所对应。比如wandoujia里面要对应为你豌豆荚上的渠道名(如WANDOUJAI)。“xiaxl.le.com.myapplication”为包名,记得替换
2、然后在你的build.gradle的android{}节点里面,添加productFlavors节点,代码如下:
android {
// 这里是你的其他配置
productFlavors{
umeng{ }
wandoujai { }
yingyongbao{ }
}
// 你的其他配置
}
3、运行gradlew assembleRelease生成全部渠道包
Ps:若多渠道打包遇到问题 or 遇到签名问题,可参考:
http://xiaxveliang.blog.163.com/blog/static/29708034201602744846450/
代码下载地址如下:
http://download.csdn.net/detail/aiwusheng/9419790
更多推荐
所有评论(0)