一、使用Gradle进行类似小米这样的多渠道打包
使用Gradle Android插件里的productFlavors。
假设我们要打包出如下的渠道xiaomi,waps
第一种方法
在app/src同级目录下新建xiaomi,waps文件夹,这两个文件夹里面都各只有一个AndroidManifest.xml文件
内容如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="package name">
<application>
<meta-data android:name="XIAOMI_CHANNEL" android:value="xiaomi"/>
</application>
</manifest>
注意,上面的value的值要和你的渠道名所对应。
然后在build.gradle的android{}节点里面,添加productFlavors节点,代码如下:
//其他配置
productFlavors {
waps {}
xiaomi{}
}
//其他配置
注意:这里的productFlavors 的名字要和你的文件夹的名字对应。这样配置之后,构建的就是多渠道的APK了。 同步一下配置文件,就可以执行Build-Generate Signed APK 打包。
第二种方法
不用创建那些文件,它使用的是Gradle Android插件里的另一个功能,manifestPlaceholders。
你只需要在AndroidManifest.xml中,进行这样配置:
<meta-data android:name="XIAOMI_CHANNEL" android:value="${CHANNEL_NAME}" />
然后同样使用productFlavors,它的配置是这样的:
productFlavors{
xiaomi{
manifestPlaceholders = [ CHANNEL_NAME:"xiaomi"]
}
waps{
manifestPlaceholders = [ CHANNEL_NAME:"waps"]
}
}
使用manifestPlaceholders的这种配置,同样适用于manifest的其他配置。比如你需要在不同渠道发布的apk里面,指定不同的启动Activity。比如在小米里发布的,启动的Activity显示的是小米首发的界面,你就可以对你的activity的值使用 activityname的方式,然后在productFlavors里面配置这个 {activityname}的值。