本篇介绍自己接入Bugly多渠道热更新还有使用360加固的过程。
在热更新使用详解里面https://bugly.qq.com/docs/user-guide/instruction-manual-android-hotfix-demo/?v=20170912151050#_3介绍了多渠道打包,我们使用推荐的多渠道打包工具的方式

我们打开链接https://buglydevteam.github.io/2017/05/15/solution-of-multiple-channel-hotpatch/
看到

配置记录
1.配置项目的根目录的build.gradle
buildscript {
dependencies {
classpath 'com.meituan.android.walle:plugin:1.1.5'
}
}
2.配置当前App的 build.gradle
apply plugin: 'walle'
dependencies {
compile 'com.meituan.android.walle:library:1.1.5'
}
3.在app目录下新建文件channel配置我们的渠道信息

4.在app目录下新建文件multiple-channel.gradle
文件内容
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")
}
5.在当前App的build.gradle添加
apply from: 'multiple-channel.gradle',好了,配置完成。
如何获取渠道信息
String channel = WalleChannelReader.getChannel(this.getApplicationContext());
看一下自己写的一个bug

很明显,点击就会报空指针异常
命令行打渠道包
./gradlew clean assembleReleaseChannels
我们在Terminal运行这行命令

我们看到,打包速度真的很快,然后就可以看到生成的渠道包

这个时候注意生成的基准包目录,一会我们需要修改baseApkDir以便生成我们的补丁包

我们选择期中的一个渠道包安装到自己的手机上,我们选择渠道为小米的文件安装到自己的手机上,我们可以从log里面看到我们从代码里面获取到的渠道,可以看到

我们点击按钮,就会看到

现在我们来修复这个bug,然后打个补丁包,打补丁包前记得要修改tinker-support.gradle文件中的baseApkDir和tinkerId,生成补丁包后上传到bugly后台,我们重新运行下自己的程序,可以看到


可以看到,我们修复了这个bug。
下面我们解决使用加固的问题,使用加固我们需要先加固然后再加渠道,注意我们加固的话要先在tinker-support.gradle里面启用加固模式,设置isProtectedApp=true

我们先使用assembleRelease生成一个基准包,然后把这个基准包上传到360加固http://jiagu.360.cn/,注册后点击主页面立即使用,进入

我们点击上传应用后上传我们的基准包

然后点击开始加固,然后生成

我们点击下载应用,对应用进行多渠道打包,推荐使用多渠道打包工具
https://github.com/Jay-Goo/ProtectedApkResignerForWalle
我们先按照

配置自己的信息,然后运行命令python ApkResigner.py

瞬间生成了各种渠道包,速度非常快

demo地址https://github.com/yanchenling/MyHotFixDemo
网友评论