Android应用增量更新
Android 的 APK 增量生成与重建。 英语 | 简体中文 SmartAppUpdates 从两个 APK 生成 BSDIFF40 补丁,并利用原始 APK 与该补丁重建新 APK。它提供了一个 Android 库、一个主机命令行工具,以及一个涵盖重建、完整性校验和 Android 安装流程的离线示例。 补丁大小取决于 APK 之间的差异;不保证下载体积更小。
| 组件 | 用途 | 文档 |
|---|---|---|
ApkPatchLibrary |
提供 Java/JNI 补丁 API 的 Android AAR 库 | 库 |
ApkPatchLibraryServer |
用于在 macOS 和 Linux 上生成和应用补丁的 Java/JNI 命令行工具 | CLI |
ApkPatchLibrarySample |
使用本地提供的 APK 对进行离线操作的 Android 示例 | 示例 |
CLI 与 Android 库共享相同的补丁解析器和 bzip2 源码。解析器会验证补丁结构和边界,并通过错误码报告原生失败。CLI 将原生操作隔离在 worker JVM 中,并设置超时和临时输出清理。
在 macOS 或 Linux 上从仓库根目录运行命令。目前不支持原生 Windows 构建。
| 依赖项 | 版本 / 要求 |
|---|---|
| JDK | 17 或 21 |
| Gradle | 8.11.1,由 Wrapper 提供 |
| Android Gradle Plugin | 8.10.1 |
| Android SDK | Platform 36 |
| Android NDK | 29.0.14206865 |
| CMake | 3.31.6 |
| 主机工具 | Python 3 和 C 编译器 |
通过 ANDROID_HOME 或本地、被 Git 忽略的 local.properties 文件中的 sdk.dir 来配置 Android SDK。首次构建需要访问依赖仓库。
该 Android 库支持 API 21+,并构建 armeabi-v7a、arm64-v8a 和 x86_64 原生库,且采用 16 KB 页对齐。示例项目目标为 API 36。
以下命令不需要示例 APK:
./gradlew :apkPatchLibrary:check :apkPatchLibrary:assembleRelease :server:build构建输出:
ApkPatchLibrary/build/暂无开放 Issues,或尚未同步最近议题。