开头总要说点什么
话说Android studio升级到3.0后,发现打出来的渠道包在7.0的系统上无法安装,于是查了下资料,发现是V2签名的问题,于是开始着手配置V2签名的渠道包配置,
如果不需要V2签名的同学可以在gradle里这样设置
android {
...
defaultConfig { ... }
signingConfigs {
config{
...
v2SigningEnabled false //禁用V2签名
}
}
}
准备
第一步当然是去github上了解Walle相关信息了
第二步:参照 README.md配置依赖
注意,你的项目必须签名,不然会出现如下错误
Error:Plugin requires 'APK Signature Scheme v2 Enabled' for release.
在位于项目的根目录 build.gradle 文件中添加Walle Gradle插件的依赖, 如下:
buildscript {
dependencies {
classpath 'com.meituan.android.walle:plugin:1.1.3'
}
}
并在当前App的 build.gradle 文件中apply这个插件,并添加上用于读取渠道号的AAR
apply plugin: 'walle'
dependencies {
compile 'com.meituan.android.walle:library:1.1.3'
}
添加完后,重新构建一下build,然后配置如下插件
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.txt文件,写入渠道名,例如:
meituan # 美团
samsungapps #三星
hiapk
anzhi
xiaomi # 小米
·#为注释,不会写入渠道。当然文件也可以建在别处,只要路径,名称和walle{}里的channelFile的配置一样
下一步,打开Terminal,在AS的下方
输入指令:gradlew clean assembleReleaseChannels
即可生成所有的渠道包,如果只需要生成一个渠道,可以输入gradlew clean assembleReleaseChannels -PchannelList=渠道名
多个渠道用逗号隔开
如果出现“不是内部或外部命令,也不是可运行程序或批处理文件”这种错误,可以参考这篇博文: Android Studio Terminal 不是内部或外部命令,也不是可运行程序或批处理文件
一般两三分钟就构建完成了,这时,依次打开app–>build–>outputs–>channels就能看到我们打的渠道包了。
项目渠道获取
获取渠道可以通过下面的代码获取:
String channel = WalleChannelReader.getChannel(this.getApplicationContext());
到这里,我们的渠道包就生成了,最后,如果还有疑问的同学可以下载我的demo进行参考: