Unreal 技术笔记

Unreal 安卓分包

2022-11-24  本文已影响0人  子夜书案
安卓包有 2G 大小的限制,超过这个阈值,就会报各种各样的错误,导致打包失败。虽然有各种别的办法可以临时逃脱这个限制,例如 勾选大文件,可以打出小于4G的包

但根本的办法还是分包。分包的步骤有这么几个:

一,项目设置

开启分包

二,划分Chunk

AssetsManager中设置区块信息
设置自定义资产

如果我需要将某个大目录下的某个小目录另外打包,应该如何设置?这就要用到 Primary Asset Label 了。

三,使用 Primary Asset Label 特殊设置

创建数据资源.png
  1. 打开Label_Bonis并填写以下属性:

    LabelBorisSettings.png
Property Value
Chunk ID 区块ID,最终会按这个ID分到不同的 APK中,默认-1,大于等于0才会生效
Priority 优先级,默认为-1
Cook Rule Cook 策略
Label Assets in My Directory 将目录所有资产全按此标签执行,一般设为True

四,用资产审计工具(Asset Audit )检查分包情况:

五,设置入包过滤条件

UE 对 Android 默认提供了 ObbFilter 的功能,可以指定哪些文件要被添加到 Obb 中(pak/mp4)等。

控制方法只需要添加配置即可。

# Config/DefaultEngine.ini
[/Script/AndroidRuntimeSettings.AndroidRuntimeSettings]
+ObbFilters=-pakchunk1-*
+ObbFilters=-pakchunk2-*
+ObbFilters=-pakchunk3-*

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

也可以指定 Exclute 和 Include 规则组合来用:

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

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

六,上传除主包之外的资源上CDN

一般是在打包后,将 pakchunk 后大于0的都上传到CDN,大概的脚步如下:

def find_base_pak(work_path):
    if not path.exists(work_path):
        print(f"ERROR {work_path} not exit")
        return None
    base_paks = []
    for r, d, f in os.walk(work_path):
        for ff in f:
            local_path = f"{r}/{ff}".replace("\\", "/")
            base_name = path.basename(local_path)
            if base_name.startswith("pakchunk") and not base_name.startswith("pakchunk0") and base_name.endswith(
                    ".pak"):
                base_paks.append(local_path)
    return base_paks


def upload(cdn_local_path, cdn_remote_path):
    cmd_string = f"{UPLOAD_TOOL} --cmd=upload_file --remote={cdn_remote_path} --local={cdn_local_path}"
    run_cmd(cmd_string)


def push_pkg(version, work_path, cdn_remote_path):
    paks = find_base_pak(work_path)
    if paks is None:
        return
    for pak in paks:
        upload(pak, f"{cdn_remote_path}/{path.basename(pak)}")

七,下载入包

这个逻辑和项目关联性比较大,可以按照实际情况处理,这里分享下unreal 官方的一套方案:Chunkdownloader

上一篇 下一篇

猜你喜欢

热点阅读