Android 基础包拆分

在打包时,不想要把所有的资源都打包到 apk 中,所以可以在打包时进行拆分,只把必要资源打包到 apk 中,首先需要把基础包中的资源进行 pak 拆分,可以把通过 Project Settings-Asset Manager 中进行设置或者通过创建 PrimaryAssetLable 资源进行标记。

目标是:

  1. 把基础包的打包资源拆分到多个 Pak 中
  2. 只把必要的 pak 文件打包到 apk 里
  3. 其余的 pak 在运行时进行下载

第一步都可以通过项目设置进行控制,第二部的条件就是要实现一个过滤规则,不过 UE 已经提供了这个机制,可以指定过滤掉哪些文件,只需要添加配置即可。

1
2
3
4
5
# Config/DefaultEngine.ini
[/Script/AndroidRuntimeSettings.AndroidRuntimeSettings]
+ObbFilters=-pakchunk1-*
+ObbFilters=-pakchunk2-*
+ObbFilters=-pakchunk3-*

ObbFilters 的规则以 - 开头就是排除规则,会把基础包中的 chunk1-3 的 pak 给过滤掉,可以用于后续的下载流程。

也可以指定 ExcluteInclude规则组合来用:

1
2
+ObbFilters=-*.pak
+ObbFilters=pakchunk0-*

第一步忽略掉所有的 pak 文件,然后把 pakchunk0-*.pak 显式添加至 obb 中。