Version: 2020.3
Play 资源交付
Android symbols

为应用程序打补丁以实现快速开发迭代

根据项目规模,为 Android 构建应用程序可能会花费相当长的时间。为了在开发过程中更快地进行迭代,您可以选择为应用程序包打补丁,而不是对其进行重新构建。为某个构建版本打补丁后,仅会将脚本相关文件发送到设备。

Android 的 Build Settings 窗口
Android 的 Build Settings 窗口

为应用程序打补丁

必须首先构建应用程序,将其安装在设备上,然后才可以为此应用程序打补丁。有关更多信息,请参阅构建 Android 应用程序

重要: 基于 Chrome OS 的设备不支持为应用程序打补丁。

要为应用程序打补丁,请执行以下步骤:

1.更新脚本文件。

**注意**:如果您更改附加到某个游戏对象的脚本的布局(例如新增公共变量),则"仅限脚本构建"(Script Only Build) 和打补丁过程会失败。

2.在 Editor 中,单击 File > Build Settings。 3.从 Build Type 下拉菜单中,选择 Development。 4.如果使用的是 IL2CPP 脚本后端(否则,请转到下一步):

1.单击 __Player Settings__ 按钮。
2.在 __Inspector__ 中,展开 __Other Settings__ 部分。
3.如果已选中 __Strip Engine Code__,请取消选中此选项。

5.选中 Scripts Only Build 复选框。 6.单击 PatchPatch & Run

构建更新的脚本文件后,Unity 会将更新的文件发送到 Run Device 字段中指定的设备。

如果您已实施自己的构建管线,可以使用脚本 API,通过将 BuildOptions.BuildScriptsOnlyBuildOptions.PatchPackage 选项传递到 BuildPipeline.BuildPlayer 方法来为您的应用程序打补丁。

例如:

    BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions();
        buildPlayerOptions.scenes = new[] { "Assets/Scene1.unity"};
        buildPlayerOptions.target = BuildTarget.Android;

        // 正常构建并运行游戏,这会在 Android 设备上安装应用程序
        buildPlayerOptions.options = BuildOptions.AutoRunPlayer
        BuildPipeline.BuildPlayer(buildPlayerOptions);

        // 修改 Unity 项目中的某些脚本
        // 为应用程序打补丁并运行此应用程序
        //(Unity 仅会重新编译脚本文件,并仅将必要文件推送到 Android 设备)
        buildPlayerOptions.options = BuildOptions.BuildScriptsOnly | BuildOptions.PatchPackage | BuildOptions.AutoRunPlayer;
        BuildPipeline.BuildPlayer(buildPlayerOptions);

应用程序打补丁的工作原理

Unity 将包含更新脚本的文件发送到应用程序的缓存文件夹。应用程序启动后,会先检查缓存文件夹,然后加载文件。如果应用程序找到所需文件,会加载缓存文件夹(而不是应用程序的数据文件夹)中的文件。

Unity 发送的文件取决于您使用的脚本后端:

Mono

从项目脚本文件、软件包脚本文件或 asmdef 文件编译的托管程序集将发送到 /storage/emulated/0/Android/data/<PackageName>/cache/ScriptOnly/<UnityVersion>/mono/Managed

IL2CPP

  • libil2cpp.so 将发送到 /data/data/<PackageName>/cache/ScriptOnly/<UnityVersion>/il2cpp

    __注意:__这是内部缓存。由于 Android 7.0 中引入了安全性增强功能,因此无法从模拟存储中加载动态库。有关其他信息,请参阅 Android 开发者网站上的 Android 7.0 行为变化 (Android 7.0 Behavior Changes)

  • IL2CPP 资源文件将发送到 /storage/emulated/0/Android/data/<PackageName>/cache/ScriptOnly/<UnityVersion>/il2cpp

清除补丁文件

可以使用 Android 存储设置来清除应用程序的缓存,从而删除“仅限脚本构建”(Script Only build) 过程安装的补丁文件。要清除设备上的缓存,请转到设置,然后打开应用程序列表。通常,有一个选项可用于清除存储的数据和/或缓存。在 Android 操作系统的某些实现中,可能需要向下深入到存储选项才能找到可清除缓存的选项。


2018–11–13 页面已发布

Play 资源交付
Android symbols