使用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, "");

友盟集成文檔的初始化方法:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章