美团Walle打包工具

942 阅读2分钟

有几年没有弄渠道包了,最近有需求,都搞忘了使用方式,简单记录一下,以备后需

美团walle

适配gradle7.x的walle

感谢开源人

Gradle插件使用方式

项目下的 build.gradle.kts

allprojects {
		repositories {
		    maven(url = "https://jitpack.io")
		}
}
buildscript {
    dependencies {
        classpath("com.github.Petterpx.walle:plugin:1.0.5")
    }
}

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

app下的 build.gradle.kts

plugins {
    id("walle")
}

dependencies {
    implementation("com.github.Petterpx.walle:library:1.0.5")
}

配置插件 app下的 build.gradle.kts 和android{}同级

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

====注意channel文件,不要直接下载项目中的channel文件,用android studio新建channel文件,放在app module下就行,不让会出现channel file does not exist的错误====

配置项具体解释:

apkOutputFolder:指定渠道包的输出路径, 默认值为new File("${project.buildDir}/outputs/apk")

apkFileNameFormat:定制渠道包的APK的文件名称, 默认值为'appName{appName}-{buildType}-${channel}.apk' 可使用以下变量:

     projectName - 项目名字
     appName - App模块名字
     packageName - applicationId (App包名packageName)
     buildType - buildType (release/debug等)
     channel - channel名称 (对应渠道打包中的渠道名字)
     versionName - versionName (显示用的版本号)
     versionCode - versionCode (内部版本号)
     buildTime - buildTime (编译构建日期时间)
     fileSHA1 - fileSHA1 (最终APK文件的SHA1哈希值)
     flavorName - 编译构建 productFlavors 名

channelFile:包含渠道配置信息的文件路径。 具体内容格式详见:渠道配置文件示例,支持使用#号添加注释。

如何获取渠道信息

在需要渠道等信息时可以通过下面代码进行获取

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

如何生成渠道包

生成渠道包的方式是和assemble${variantName}Channels指令结合,渠道包的生成目录默认存放在 build/outputs/apk/,也可以通过walle闭包中的apkOutputFolder参数来指定输出目录

用法示例:

生成渠道包 ./gradlew clean assembleReleaseChannels
支持 productFlavors ./gradlew clean assembleMeituanReleaseChannels

以上便是插件法添加渠道

我们推荐使用channelFile/configFile配置来生成渠道包,但有时也可能有临时生成渠道包需求,这时可以使用:

生成单个渠道包: ./gradlew clean assembleReleaseChannels -PchannelList=meituan

更多请查看项目说明