常见问题

更新时间:2018-06-08 16:08:44

1. 名词解释

以下仅对热修复服务用到的术语做定义解释。其它地方如遇到同样的名词,含义有可能略不同。

名词
定义
应用版本
客户端的版本,对应APP客户端配置信息的VersionName
Patch
通过指定构建参数,打出的一个下发到客户端的补丁。根据不同平台,Patch类型也不同。
Patch文件以 .tpatch, .zip 结尾。
发布需求
一次热修复的需求,一般修复一个bug,小的需求变更。一个需求对应一个热修复发布单。
发布版本号
唯一标志一个需求发布单,创建发布需求时后台由分配。
某个应用版本上,发布版本号唯一且递增。
发布单
热修复发布单管理一个补丁发布流程。包含变更,构建,灰度发布,正式发布等步骤。
灰度发布
指定部分用户的发布行为,使线上用户区别发布。对应全量发布/正式发布。
正式发布
正式发布的补丁会包含容器版本下所有Patch的信息
全量发布
全量发布一般在正式发布中存在,指定线上版本的所有用户发布。全量发布需要经过
阶梯灰度
发布人数阶梯式递增的灰度发布方式。
【100】- 【500】- 【1000】-【1w】-【3w】

2.构建配置相关

打包配置有两种类型,一种是总的配置,作为基线模版。一种是每个热修复发布单中的配置项,成为单项配置。单项配置根据基线模版生成,单项配置可参考以下说明。

  • dexpatch 配置说明

    • 代码库地址: 构建整包时主工程的git代码库地址
    • 分支: 构建整包时的代码分支
    • 打包脚本:后台服务器上运行的构建脚本
    • 打包脚本:

      1. export
      2. ./gradlew clean assembleRelease
    • 构建产物名称:\*.apk,\*.txt\*.apk,\*.txt,\*.ap,\*.tpatch,\*.apatch,\*.jar,\*.cfg,\*.json,\*.properties

    • 构建产物路径:app/build/outputs,app/build/outputs/apk,app/build/outputs/tpatch-debug,app/build/outputs/tpatch-release
  • Wax 配置说明

    • 代码库地址:wax可以把patch的lua文件单独用一个git工程管理,工程结构只需要保证根目录下有一个patch目录,将所有patch需要的lua文件放入该目录中,此外,还要把我们的build.sh脚本放入根目录下。代码库地址即为该代码库地址;
    • 分支:需要使用的分支
    • 打包脚本:./build.sh
    • 构建产物名称:patch.zip
    • 构建产物路径:workspace/

3. 不清楚dexpatch的技术原理

可以参考文档: dexpatch使用教程

4. dexpatch打包失败

  • 下载console.log.zip,解压,

构建日志

打开xxxxx-build.log查看构建日志,如果其中出现:Could not find com.taobao.android:SecondBundle:1.0.6-SNAPSHOT 类似错误时,请检查工程里配置的仓库地址是否正确,并在仓库中确认该libary/bundle确实已经发布,存在该坐标。

如果该变更的类型是源码依赖,请确认在该源码依赖的构建页面中,已经手动构建发布正式版都构建成功。手工构建成功会发布出该模块的SNAPSHOT版本,这会在编译构建页中dexpatch的编译构建用到;发布正式版成功会发布出该模块的正式版本,这会在后续的构建灰度包构建正式包中用到。

  • 找不到ap-release:1.0.0-SNAPSHOT

确认该修复版本的整包发布时,命令已经加上了publish参数。然后到工程中配置的发布仓库中确认该基线包存在。

5. dexpatch新建发布批次失败

确认发布结果中存在以下文件:

  • xx@xx.tpatch文件;
  • patchs.json文件;
  • dependencyDiff.json文件;

构建产物2

如果不存在,

变更

  1. 检查是否已经添加变更,patch只能通过模块的变更生成;
  2. 检查构建产物路径是否正确;

构建配置

示例:

  1. 构建产物名称: *.apk,*.txt*.apk,*.txt,*.ap,*.tpatch,*.apatch,*.jar,*.cfg,*.json,*.properties
  2. 构建产物路径: app/build/outputs,app/build/outputs/apk,app/build/outputs/tpatch-debug,app/build/outputs/tpatch-release

注意,app/build/outputsapp是指生成apk包的模块目录名称,如果您的apk是直接在根目录的module生成的,直接写build/outputs,build/outputs/apk,build/outputs/tpatch-debug,build/outputs/tpatch-release则可。