将 .APK 和 .OBB 文件拖放到此处
选择一个或多个 .apk 拆分和可选的 .obb 扩展文件
支持多个文件 • 自动生成 XAPK v2 manifest.json为什么要将 APK + OBB 打包到 XAPK 容器中?
当分发大型 Android 版本、QA 测试版本或包含单独 main.<ver>.<pkg>.obb 资产存档或模块化 ABI 拆分的个人备份时,发送多个松散文件会导致用户放错 OBB 文件夹。将它们打包到单个 .xapk 捆绑包中可以干净地解决这个问题。
- 自动 OBB 路径路由: 将每个 .obb 文件放入 Android/obb/<package_name>/ 中,并将确切的 install_location: "EXTERNAL_STORAGE" 规则写入 manifest.json 中。
- 自动分割 ID 分配: 分配 base 和 config.* 分割标识符,以便开源安装程序和我们的 XAPKS 到 APK 合并 识别每个模块。
- 从 OBB 文件名自动检测包名称: 如果您删除 main.104.com.company.title.obb,构建器会自动提取 com.company.title 和版本代码 104。
XAPK 规范 v2 参考和 APK 到 XAPK / APKS 转换指南
XAPK 容器规范使用标准 DEFLATE ZIP 框架,以及以 UTF-8(无 BOM)编码的强制根级 manifest.json 文件。为了保证桌面解包程序、ADB 部署脚本和拆分 APK 安装程序之间的兼容性,XAPK 捆绑包必须遵循以下结构约定:
- 根级拆分 APK (split_apks): 捆绑包内的每个 .apk 文件都存储在 ZIP 存档的根目录中。主模块必须带有 "id": "base",而体系结构、密度和区域设置模块则带有 "id": "config.<qualifier>"(例如,config.arm64_v8a 或 config.xxhdpi)。
- 扩展资产层次结构 (expansions): 每个 .obb 扩展 blob 都存储在 ZIP 树内的 Android/obb/<package_name>/<filename>.obb 内,并在 expansions 数组中使用 "install_location": "EXTERNAL_STORAGE" 和 "install_path": "Android/obb/<package_name>/<filename>.obb" 进行声明。
- 字节精确的 total_size 计算: 安装程序验证 manifest.json 中的 total_size 整数是否等于所有打包的 .apk 和 .obb 文件的未压缩字节长度的精确总和,以便设备可以在提取之前预先检查可用的闪存存储。我们的构建器会自动计算这个精确的字节总和。