有几年没有弄渠道包了,最近有需求,都搞忘了使用方式,简单记录一下,以备后需
感谢开源人
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的文件名称, 默认值为'{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