多渠道打包上线
在gradle中完成我们的多渠道打包
什么是渠道?
应用市场
多渠道打包的原理是什么?
menedata
引入友盟第三方统计sdk
1.到友盟官网注册,创建项目,获取对应的appkey
2.添加gradle依赖,注册友盟appkey
app
compile 'com.umeng.analytics:analytics:latest.integration'
在Manifest中
<application>
<meta-data android:name="UNENG_APPKEY" android:value="6738jdu93ujdi892idjiu9"/>
<meta-data android:name="UNENG_CHANNEL" android:value="${UNENG_CHANNEL_VALUE}"/>
</application>
3.完成友盟sdk的初始化
application.java
public void initUMeng(){
MobclickAgent.setDebugMode(true);
MobcliceAgent.openActivityDurationTrack(false);
}
多渠道打包脚本编写
apply plugin: 'com.android.application'
android {
defaultConfig{
manifestPlaceholders=["UMENG_CHANNEL_VALUE":"imooc"]
}
signingConfigs{
debug{}
release{
storeFile file("youdu.jks")
storePassword "123456"
keyAlias "qndroid"
keyPassword "123456"
}
}
buildTypes{
release{
...
signingConfig signingConfigs.release
}
}
productFlavors{
imooc{
manifestPlaceholders=[UMENG_CHANNEL_VALUE:"imooc"]
}
googleplyer{
manifestPlaceholders=[UMENG_CHANNEL_VALUE:"googleplyer"]
}
baidu{
manifestPlaceholders=[UMENG_CHANNEL_VALUE:"baidu"]
}
productFlavors.all{
flavor->flavor.manifestPlaceholders =[UMENG_CHANNEL_VALUE:"baidu"]
}
}
}
生成签名文件并放在app目录下
生成所有渠道release包
./gradlew assemblerelease
生成所有渠道debug包
./gradlew assembledebug
生成指定渠道release包
./gradlew assembleBaidudebug
生成apk所在路径
app/build/output/apk/
更改生成apk包的名称
buildTypes {
release {
...
//指定我们release包的输出文件名就是我们的渠道名字
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith(".apk")) {
def fileName = "${variant.productFlavors[0].name}" + ".apk"
output.outputFile = new File(outputFile.parent, fileName);
}
}
}
}
}
资源的改变
productFlavors{
imooc{
...
resValuse("strings","name","imooc")
}
googleplayer{
...
resValuse("strings","name","googleplayer")
}
baidu{
...
resValuse("strings","name","baidu")
}
}
flavors中也可以改变applicationIdsuffix等
Last updated
Was this helpful?