Android(安卓)Signature V2 Scheme签名下的新一代渠道包打包神器--Walle(瓦力)使用详解
开头总要说点什么
话说Android studio升级到3.0后,发现打出来的渠道包在7.0的系统上无法安装,于是查了下资料,发现是V2签名的问题,于是开始着手配置V2签名的渠道包配置,
如果不需要V2签名的同学可以在gradle里这样设置
android { ... defaultConfig { ... } signingConfigs { config{ ... v2SigningEnabled false //禁用V2签名 } } }
准备
第一步当然是去github上了解Walle相关信息了
github项目地址
第二步:参照 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进行参考:
V2Channels
更多相关文章
- Android(安卓)提高显示布局文件的性能[Lesson 2 - 使用include标
- Android(安卓)AppLink功能实现,原理和干货,包教会
- Android通过ant脚本打包带Library project的方法
- 深入浅出Android(安卓)Gradle构建系统 (三:build task)
- 在android应用中使用luasocket
- Android自定义进度条颜色
- Android里webviewActivity一般功能实现
- Android阅读源码的几种方法
- Android(安卓)实现阅读pdf格式的文件和android 7.0以上版本出现F