Gradel文件配置(多渠道打包)
原创
©著作权归作者所有:来自51CTO博客作者lxn1615404043的原创作品,请联系作者获取转载授权,否则将追究法律责任
这里以友盟打包为例
在manifest中添加如下代码
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"
>
<meta-data android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}"/>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
然后在build.gradle中添加渠道名
defaultConfig {
manifestPlaceholders=[UMENG_CHANNEL_VALUE:'Umeng'] // 默认渠道为Umeng
applicationId "com.example.hecun.myapplication"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
productFlavors {
googleplay {
manifestPlaceholders = [UMENG_CHANNEL_VALUE:'Google Play']
}
wandoujia{
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "Wandoujia"]
}
xiaomi{
}
tencent{
}
}
还有一种简单的写法
productFlavors {
wandoujia {}
baidu {}
c360 {}
uc {}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
}
其中name的值对相对应各个productFlavors的选项值,这样就达到自动替换渠道值的目的了。
这样生成apk时,选择相应的Flavors来生成指定渠道的包就可以了,而且生成的apk会自动帮你加上相应渠道的后缀,非常方便和直观。大家可以自己反编译验证
如何进行单个渠道的打包
![这里写图片描述 Gradel文件配置(多渠道打包)_ico](https://s2.51cto.com/images/blog/202211/22110909_637c3d557e34451834.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
我们在右侧的Gradle Task面板可以选中相应的渠道包,然后双击,开发工具就自动帮我们打包了。
![这里写图片描述 Gradel文件配置(多渠道打包)_ico_02](https://s2.51cto.com/images/blog/202211/22110909_637c3d55a71e498929.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184)
manifestPlaceholders是替换占位符的,用法如下
在manifest文件中用${value}定义
在gradle文件中manifestPlaceholders = [value:”替换结果”]