使用Walle实现多渠道打包

walle的github地址:https://github.com/Meituan-Dianping/walle

1、项目的根目录 build.gradle 文件中添加Walle Gradle插件的依赖
buildscript {
    
    
    dependencies {
    
    
        classpath 'com.meituan.android.walle:plugin:1.1.6'
    }
}
2、app的 build.gradle 文件中apply这个插件,并添加依赖和配置
apply plugin: 'walle'

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

walle {
    
    
    // 指定渠道包的输出路径
    apkOutputFolder = new File("${project.buildDir}/outputs/channels")
    // 定制渠道包的APK的文件名称
    apkFileNameFormat = '${appName}-${packageName}-${channel}-${buildType}-v${versionName}-${versionCode}-${buildTime}.apk'
    // 渠道配置文件
    channelFile = new File("${project.getProjectDir()}/channel")
}
3、创建一个没有后缀、名为channel的文件(注意:文件后缀.txt一定要删除,否则执行打包命令读取不到配置的渠道信息,只能生成一个没有渠道信息的包),配置渠道信息:

在这里插入图片描述

4、打包:

在控制台下的Terminal执行打包命令:

gradlew clean assembleReleaseChannels

然后在build/outputs/channels目录下会生成channel文件配置的所有渠道的包:
在这里插入图片描述

5、补充:

(1)之前项目manifest文件中配置的多渠道信息可以删除了

        <meta-data
            android:name="UMENG_APPKEY"
            android:value="${umeng_appkey}" />
        <meta-data
            android:name="UMENG_CHANNEL"
            android:value="${umeng_channel}" />

(2)之前友盟初始化方法

    UMConfigure.init(this, UMConfigure.DEVICE_TYPE_PHONE, "");

替换为:

    //获取渠道信息
    String channel = WalleChannelReader.getChannel(this.getApplicationContext());
    UMConfigure.init(this, BuildConfig.UMENG_APPKEY, channel, UMConfigure.DEVICE_TYPE_PHONE, "");

友盟集成文档的初始化方法:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sqf251877543/article/details/101208366