Gradle插件使用方式
配置build.gradle
在位于项目的根目录 build.gradle 文件中添加Walle Gradle插件的依赖, 如下:
buildscript {
dependencies {
classpath 'com.meituan.android.walle:plugin:1.1.6'
}
}
并在当前App的 build.gradle 文件中apply这个插件,并添加上用于读取渠道号的AAR
apply plugin: 'walle'
dependencies {
compile 'com.meituan.android.walle:library:1.1.6'
}
注意确保有签名
signingConfigs {
config {
keyAlias 'abc'
keyPassword '123456'
storeFile file('E:/keystore/aaa.keystore')
storePassword '123456'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
signingConfig signingConfigs.config
}
}
并在当前App的 build.gradle 配置插件 与 dependencies 平级
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")
}
配置项具体解释: 请看官方文档
搭配渠道
在app工程下新建文件channel,放置渠道信息(根据实际需要修改):
xiaomi
360
huawei
等等根据自己需要设置
如何获取渠道信息
在需要渠道等信息时可以通过下面代码进行获取
String channel = WalleChannelReader.getChannel(this.getApplicationContext());
如何生成渠道包
生成渠道包的方式是和assemble${variantName}Channels指令结合,渠道包的生成目录默认存放在 build/outputs/apk/,也可以通过walle闭包中的apkOutputFolder参数来指定输出目录
用法示例:
window下
在androidStudio Terminal 中(这里注意有时候会因为环境变量原因提示执行失败,尝试切换到cmd中执行试试)
gradlew clean assembleReleaseChannels
mac
./gradlew clean assembleReleaseChannels
到这里基本就没问题了。、
注意:
这中方式用不到友盟那些以前的打包方式
比如以下这些
<meta-data
android:name="UMENG_CHANNEL"
android:value="z1" />
尤其注意 value 不能设置为动态 {$xxx} 这种形式不可接受。不然as3.3左右直接报错。看gradle报错信息很蛋疼的。如果提示mainfest报错 大家可以看下 mainfest.xml中Merged Mainfest 我就是在这里坑了