多渠道打包上线
在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?