<commit_before>---
layout: post
title: 差量更新验证问题总结
categories: [Android]
description: some word here
keywords: keyword1, keyword2
---

### 问题描述

差量包上线后，原本的验证思路：接口能够返回差量包的地址，确认该地址能够下载差量包，接口返回的差量包的大小，versioncode正确，最后也能成功升级到目标版本，OK！。

本次验证过程中有一个问题：差量包下载的时候，进度条走了两遍。确认了一下接口返回的地址能够成功下载差量包之后，就认为是客户端的问题，因此反馈给客户端的同事后，就发了测试通过的确认信

结果，客户端同事发现进度条走两遍是因为请求了两遍，先请求了差量包的地址下载成功后，又重新请求了全量包的地址又进行下载，因此才导致进度条走了两遍<commit_msg>补充差量更新的内容<commit_after>---
layout: post
title: 差量更新问题总结
categories: [Android]
description: some word here
keywords: keyword1, keyword2
---

### 什么是差量更新
新版本v2.0比旧版本v1.0代码发生的变化部分生成patch包，用户更新app的时候只用下载patch包进行本地合并即可

### 差量更新的原理
1. 服务器端将旧版本Apk和新版本Apk比较差异，生成补丁patch
2. 用户下载patch文件到手机中
3. 将手机端data/app下面的相应apk复制到SD卡或者cache中，与下载的patch进行组合，生成一个新版本的apk应用
4. 安装应用新版本并删除旧版本和patch

### 问题描述

差量包上线后，原本的验证思路：diff接口能够返回差量包的地址，确认该地址能够下载差量包，接口返回的差量包的大小，versioncode正确，最后也能成功升级到目标版本，OK！。

本次验证过程中有一个问题：差量包下载完了之后，进度条又走了一遍。确认了一下接口返回的地址能够成功下载差量包之后，就武断的认为是客户端的问题，因此反馈给客户端的同事后，就发了测试通过的确认信

结果，客户端同事发现进度条走两遍是因为请求了两遍，先请求了差量包的地址下载成功后，又重新请求了全量包的地址又进行下载，因此才导致进度条走了两遍
{'fraction_non_alphanumeric': 0.09090909090909091, 'fraction_numerical': 0.011483253588516746, 'mean_word_length': 11.91358024691358, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4645289', 'n_tokens_mistral': 800, 'n_tokens_neox': 997, 'n_words': 46}