Android 多渠道打包(walle 打包)+Umeng渠道配置

以前项目一直使用Python脚本进行打包,自打Android7.0出来之后发现Python脚本打出来的包,不能以adb install 方式安装到7.0 的手机上,于是市场毫不留情的就把Apk打回来了,原来Android 7.0 引入一项新的应用签名方案 APK Signature Scheme v2,它能提供更快的应用安装时间和更多针对未授权 APK 文件更改的保护。原来的Python脚本打出来的包都是基于v1打的,不适用于Android7.0。这个时候发现Android Studio 自身的打包可以打V2的包,但是试了一次打三个渠道包,速度真是不忍直视,打个包出来速度出奇的慢,Android 的渠道有多,这种方式打包太费时间,于是找到了美团的walle 打包,集成后发现速度杠杠的。下面来介绍一下walle的集成步骤吧
1、配置gradel
在位于项目的根目录 build.gradle 文件中添加Walle Gradle插件的依赖, 如下:

buildscript {
    dependencies {
        classpath 'com.meituan.android.walle:plugin:1.1.5'
    }
}

在当前App的 build.gradle 文件中apply这个插件,并添加上用于读取渠道号的AAR

apply plugin: 'walle'

dependencies {
    compile 'com.meituan.android.walle:library:1.1.5'
}

2、配置插件
在当前App的 build.gradle 文件中配置

walle {
    apkOutputFolder = new File("${project.buildDir}/outputs/channels")
    apkFileNameFormat = '${appName}-${channel}.apk'
    //configFile与channelFile两者必须存在一个,否则无法生成渠道包。两者都存在时优先执行configFile
    channelFile = new File("${project.getProjectDir()}/channel")
    //configFile = new File("${project.getProjectDir()}/config.json")
}

配置解释:
apkOutputFolder apk输出目录 例子中的最终Apk 目录是在 app/build/outputs/channels 下,这个目录不需要我们自己建,打包完成会自己建好的
apkFileNameFormat 打包出来的App名字
channelFile 渠道包信息文件目录

渠道包信息文件配置,上述例子中的文字路径是app/channel

#自定义的
#自定义的
line
#应用宝
myapp
#360市场
market360
#豌豆荚
wandoujia
#小米
xiaomi
#华为
huawei
#百度
baidu
#vivo
vivo
#open
oppo
#酷安
kuan


贴一张我的项目结构出来,看一下配置文件对应的目录

Android 多渠道打包(walle 打包)+Umeng渠道配置_第1张图片
40A6D3ED-D053-4EBF-9C14-B398F6DE06E1.png

到这里我们配置信息就完成了,接下来就可以直接打包了
在Android studio 的Terminal 中输入 ./gradlew clean assembleReleaseChannels 回车即可

6206C550-C71E-4012-A36A-1752EE5625CC.png

回车后看见下列信息就表示打包完成了

Android 多渠道打包(walle 打包)+Umeng渠道配置_第2张图片
7016A99F-7CFC-4600-AC52-EB3E05BAE802.png
Android 多渠道打包(walle 打包)+Umeng渠道配置_第3张图片
3F60EC10-A7C3-4CFD-B2F6-C6F31AA8CA37.png

10个渠道只用了三分多钟是不是挺快,如果使用Android studio自带打包工具,至少30+分钟。

渠道包是可以打好了,但是这个渠道umeng并不知道,所以我们还需要将这个渠道名配置到umeng中去
walle 提供了获取渠道信息的类

String channel = WalleChannelReader.getChannel(this.getApplicationContext());

我们需要做的是将它赋值给umeng
在Application 中初始化umeng

    String channel =  Const.DEBUG ? "line" : WalleChannelReader.getChannel(this.getApplicationContext());
        String umengAppkey = "1111111111111111";
        MobclickAgent.UMAnalyticsConfig umAnalyticsConfig = new MobclickAgent.UMAnalyticsConfig(this,
                umengAppkey,
                channel,
                MobclickAgent.EScenarioType.E_UM_NORMAL,
                true);
        MobclickAgent.startWithConfigure(umAnalyticsConfig);
        MobclickAgent.setDebugMode(Const.DEBUG);

这样我们就可以在umeng里统计到渠道信息了
walle 更多使用可以去看官方的文档:https://github.com/Meituan-Dianping/walle
APK Signature Scheme v2介绍可以去这里:http://blog.csdn.net/vane918/article/details/54099373

你可能感兴趣的:(Android 多渠道打包(walle 打包)+Umeng渠道配置)