Skip to content

Commit

Permalink
支持2022.3.0,调整相应文档
Browse files Browse the repository at this point in the history
  • Loading branch information
walon committed Jun 1, 2023
1 parent 8426455 commit 3ba4bc9
Show file tree
Hide file tree
Showing 12 changed files with 46 additions and 37 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ HybridCLR是原生的c#热更新方案。通俗地说,il2cpp相当于mono的ao

## 兼容性

- 支持2019.4.x、2020.3.x、2021.3.x全系列LTS版本。`2022.2.x``2023.2.0ax`版本也已支持,但未对外发布。
- 支持2019.4.x、2020.3.x、2021.3.x、2022.3.x全系列LTS版本。`2023.2.0ax`版本也已支持,但未对外发布。
- 支持常见平台。已稳定支持 PC(Win32和Win64)、macOS(x86、x64、Arm64)、Android(armv7、armv8)、iOS(64bit)、WebGL、**微信小程序平台**,剩余平台有待测试。
- 测试过大量游戏常见库,未发现跟il2cpp原生兼容但使用HybridCLR后不兼容性的库。只要能在il2cpp backend下工作的库都可以在HybridCLR下正常工作。甚至那些与il2cpp因为AOT问题不兼容的库,现在因为HybridCLR对il2cpp的能力扩充,反而可以正常运行了。

Expand Down
2 changes: 1 addition & 1 deletion _sidebar.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
* [内存与GC](basic/memory.md)
* [运行性能](basic/performance.md)
* [不支持的特性](basic/notsupportedfeatures.md)
* [hybridclr_unity包手册](basic/com.focus-creative-games.hybridclr_unity.md)
* [hybridclr Package手册](basic/com.code-philosophy.hybridclr.md)
* [最佳实践](basic/bestpractice.md)
* 开发者文档-高级
* [Differential Hybrid Execution技术](advanced/differentialhybridexecution.md)
Expand Down
2 changes: 1 addition & 1 deletion advanced/workwithscriptlanguage.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ xlua并未考虑过模块化,生成的代码全在全局Assembly-CSharp里,
HybridCLR对 `[MonoPInvokeCallbackAttribute]` 的支持跟原生完全。由于每个标注 `[MonoPInvokeCallbackAttribute]` 的函数必须有一个唯一对应的c++函数,而AOT限制导致不可能运行时新增函数,
因而要提前为每个`[MonoPInvokeCallbackAttribute]`函数生成一个`c++ wrapper函数`,用于与之绑定。这些wrapper函数在 `hybridclr/generated/ReversePInvokeMethodStub_{abi}.cpp` 文件中。

[hybridclr_unity](/basic/com.focus-creative-games.hybridclr_unity.md) 已经提供了脚本帮助自动生成这些wrapper函数,运行菜单命令`HybridCLR/Generate/ReversePInvokeWrapper` 即可。
[hybridclr_unity](/basic/com.code-philosophy.hybridclr.md) 已经提供了脚本帮助自动生成这些wrapper函数,运行菜单命令`HybridCLR/Generate/ReversePInvokeWrapper` 即可。

## 预留 ReversePInvokeWrapper 函数

Expand Down
2 changes: 1 addition & 1 deletion basic/buildpipeline.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
- iOS平台的特殊处理

手动操作这些是烦琐易错的,`com.focus-creative-games.hybridclr_unity` package包含了打包工作流相关的标准工具脚本,将这些复杂流程简化为一键操作。
详细实现请看源码或者[hybridclr_unity介绍](/basic/com.focus-creative-games.hybridclr_unity.md)
详细实现请看源码或者[hybridclr_unity介绍](/basic/com.code-philosophy.hybridclr.md)

## 打包流程

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
# com.focus-creative-games.hybridclr_unity
# com.code-philosophy.hybridclr

`com.focus-creative-games.hybridclr_unity`是一个Unity package,它提供了HybridCLR所需的Editor工作流工具脚本及Runtime脚本。借助
`com.code-philosophy.hybridclr`是一个Unity package,它提供了HybridCLR所需的Editor工作流工具脚本及Runtime脚本。借助
hybridclr_unity提供的工作流工具,打包一个支持HybridCLR热更新功能的App变得非常简单。hybridclr_unity包主要包含以下内容:

- Editor相关脚本
- Runtime相关脚本
- iOSBuild脚本

!> v3.0.0 之前的包名叫 `com.focus-creative-games.hybridclr_unity`


## HybridCLR菜单介绍

Expand All @@ -18,7 +20,7 @@ hybridclr_unity提供的工作流工具,打包一个支持HybridCLR热更新

安装器需要从匹配版本的Unity安装目录复制il2cpp(类似`C:\Program Files\Unity\Hub\Editor\2020.3.33f1\Editor\Data\il2cpp`)相关文件。

- 对于2019.4.40+、2021.3.26+、2021.3.0+ 版本,直接从该版本的安装目录复制il2cpp文件。
- 对于2019.4.40+、2021.3.26+、2021.3.0+、2022.3.0+ 版本,直接从该版本的安装目录复制il2cpp文件。
- 对于2020.3.16-2020.3.25版本,需要额外安装2020.3.26或更高版本,在Installer中完成安装后再切回当前版本。
- 对于2019.4.0-2019.4.39版本,需要额外安装2019.4.40版本,在Installer中完成安装后再切回当前版本。

Expand Down Expand Up @@ -224,10 +226,6 @@ preserveHotUpdateAssemblies字段用来满足这种需求。打包时不检查

裁剪后的AOT dll的暂存目录。最终目录在该目录的平台子目录下,即 `${strippedAOTDllOutputRootDir}/{platform}`

### strippedAOTDllSnapshotDir

AOT dll的快照目录。由于经常发生临时性打包,并不是每次打包都需要保存AOT dll。当需要保存AOT dll时,通过运行该菜单命令,将AOT dll复制到该目录。

### patchAOTAssemblies

补充元数据AOT dll列表。**package本身没有用到这个配置项**。它提供了一个配置AOT dll列表的地方,方便开发者在自己的打包流程中使用,这样就不用开发者单独再定义一个补充元数据AOT dll配置脚本了。
Expand Down
25 changes: 13 additions & 12 deletions basic/install.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@

## 安装兼容的Unity版本

安装 2019.4.x、2020.3.16+、2021.3.x 中任一版本。推荐安装2019.4.40、2020.3.26+、2021.3.x版本。
支持2019.4.x、2020.3.16+、2021.3.x、2022.3.x 中任一版本。推荐安装2019.4.40、2020.3.26+、2021.3.x、2022.3.x版本。

如果你的版本为 2019.4.0-2019.4.39、2020.3.16-2020.3.25,**需要先切换到2019.4.40和2020.3.33版本完成HybridCLR安装,再切换回当前版本**

如果你不是经验丰富的Unity开发者,推荐先使用2021.3.1版本来体验HybridCLR。
?> 如果你不是经验丰富的Unity开发者,推荐先使用2021.3.1版本来体验HybridCLR。

根据你打包的目标平台,安装过程中选择必要模块。如果打包Android或iOS,直接选择相应模块即可。如果你想打包Standalone,必须额外选中 `Windows Build Support(IL2CPP)``Mac Build Support(IL2CPP)`

Expand All @@ -25,19 +25,21 @@
- 安装cmake


### 选择 `com.focus-creative-games.hybridclr_unity` 版本
### 选择 `com.code-philosophy.hybridclr` 版本

当前 `v2.x.y` tag 和 `1.0`分支 系列都非常稳定
!> v3.0.0 之前的包名叫 `com.focus-creative-games.hybridclr_unity`

`1.0`分支稳定运行很久,一些较早接入HybridCLR的项目在使用`1.0`分支版本。该分支已经停止维护
当前存在三大系列版本:`1.0`分支、`v2.x.y`系列、`v3.x.y`(也是当前main分支)系列

main分支`v2.x.y`版本对工作流有较大改进,而且修复了一些`1.0`分支的bug。
- `1.0`分支过于久远,虽然工作稳定,但Package相关工作流比较陈旧,不如后续版本便捷,而且已经停止了维护,强烈建议**不要**再使用。
- `v2.x.y`系列的tag 版本工作流优化合理,经过大量项目验证,推荐使用Unity 2019或2020版本或马上要上线的项目使用。
- `v3.x.y`系列tag版本 **移除了对Unity 2019和2020**的支持,新增了`2022`版本支持。推荐使用Unity 2021及以后的版本,并且处于项目中早期的项目使用。

**推荐新接入的项目使用`v2.x.y`系列版本**
?> 这三大系列的版本都很稳定,不必纠结哪个更好,一般来说越新的版本优化越多,使用体验越好

## 安装 com.focus-creative-games.hybridclr_unity package
## 安装 `com.code-philosophy.hybridclr` package

hybridclr_unity 仓库地址为 [github](https://github.com/focus-creative-games/hybridclr_unity) ,国内快速的镜像仓库为[gitee](https://gitee.com/focus-creative-games/hybridclr_unity)
仓库地址为 [github](https://github.com/focus-creative-games/hybridclr_unity) ,国内快速的镜像仓库为[gitee](https://gitee.com/focus-creative-games/hybridclr_unity)

有三种安装方式:

Expand All @@ -51,10 +53,9 @@ hybridclr_unity 仓库地址为 [github](https://github.com/focus-creative-games


- main分支地址为 `https://gitee.com/focus-creative-games/hybridclr_unity.git`
- 1.0分支地址为 `https://gitee.com/focus-creative-games/hybridclr_unity.git#1.0`
- 其他tag版本地址为 `https://gitee.com/focus-creative-games/hybridclr_unity.git#{tag}`

想安装某个分支或者tag版本,请在地址后加上`#{tag}`,如 `https://gitee.com/focus-creative-games/hybridclr_unity.git#v2.4.1`
想安装某个分支或者tag版本,请在地址后加上`#{tag}`,如 `https://gitee.com/focus-creative-games/hybridclr_unity.git#v3.0.1`

![add package](../img/hybridclr/install_hybridclrunity_package.jpg)

Expand All @@ -68,7 +69,7 @@ openump地址 [com.focus-creative-games.hybridclr_unity](https://openupm.com/pac

### 从本地文件安装

将仓库clone到本地后,目录改名为com.focus-creative-games.hybridclr_unity,再直接移到项目的Packages目录即可。
将仓库clone到本地后,目录改名为`com.code-philosophy.hybridclr`(v3.0.0之前的版本请用 `com.focus-creative-games.hybridclr_unity`,再直接移到项目的Packages目录即可。


## 初始化HybridCLR
Expand Down
6 changes: 3 additions & 3 deletions basic/projectsettings.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# 配置HybridCLR

安装完hybridclr_unity包后,需要正确设置相关参数。配置相关详细文档可见 [hybridclr_unity包介绍](/basic/com.focus-creative-games.hybridclr_unity.md)
安装完hybridclr_unity包后,需要正确设置相关参数。配置相关详细文档可见 [hybridclr_unity包介绍](/basic/com.code-philosophy.hybridclr.md)

## 配置PlayerSettings

- 关闭增量式GC(Use Incremental GC) 选项。因为目前不支持增量式GC。WebGL平台忽略此选项。 **hybridclr_unity会自动关闭此选项,可以不用手动执行此操作**
- `Scripting Backend` 切换为 `il2cpp`, WebGL平台不用设置此选项。**`v2.4.0`起,会自动设置此选项,可以不用手动执行此操作**
- `Api Compatability Level` 切换为 `.NetFramework 4`(Unity 2019、2020) 或 `.Net Framework`(Unity 2021+)。**`v2.4.0`起,会自动设置此选项,可以不用手动执行此操作**
- `Api Compatability Level` 切换为 `.NetFramework 4`(Unity 2019、2020) 或 `.Net Framework`(Unity 2021+)。

## 配置热更新程序集

Expand All @@ -25,4 +25,4 @@

## 其他参数

大多数参数保持默认值即可,一般开发者不用关心。详细请查看[hybridclr_unity包介绍](/basic/com.focus-creative-games.hybridclr_unity.md)
大多数参数保持默认值即可,一般开发者不用关心。详细请查看[hybridclr_unity包介绍](/basic/com.code-philosophy.hybridclr.md)
2 changes: 1 addition & 1 deletion basic/supportedplatformanduniyversion.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ HybridCLR已经稳定支持了2019.4.x、2020.3.x、2021.3.x系列LTS版本,
- 2019.4.x
- 2020.3.16 - 最新(`2020.3.0 - 2020.3.15` 由于改动较大,需要单独移植,有需要的可以联系我们提供[商业技术支持](/other/business.md)
- 2021.3.x
- 2022.2.x (已经支持,**尚未对外开放**
- 2022.3.x
- 2023.2.0ax (已经支持,**尚未对外开发**


Expand Down
4 changes: 3 additions & 1 deletion beginner/quickstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@

### 安装Unity

- 安装 2019.4.40、2020.3.26+、2021.3.0+ 中任一版本。如果你不是经验丰富的Unity开发者,推荐使用2021.3.1版本。
!> HybridCLR也支持2019.4.x、2020.3.x,但新手请务必按照下面的要求安装合适版本,不要自作主张装了2019或2020的版本。跑通流程后,再仔细阅读[安装HybridCLR](/basic/install.md)文档尝试其他版本。

- 安装 2021.3.0+、2022.3.0+ 中任一版本。如果你不是经验丰富的Unity开发者,推荐使用2021.3.1版本。
- 根据你所用的操作系统,安装过程中选择模块时,必须选中 `Windows Build Support(IL2CPP)``Mac Build Support(IL2CPP)`

![select il2cpp modules](../img/hybridclr/select_il2cpp_modules.jpg)
Expand Down
19 changes: 17 additions & 2 deletions help/commonerrors.md
Original file line number Diff line number Diff line change
Expand Up @@ -341,11 +341,26 @@ Wrapper函数不足。你需要为热更新中的添加了MonoPInvokeCallback特

### 使用MemoryProfile抓取内存快照会崩溃

商业版本支持。请看[商业化服务](/other/business.md)
如果你使用Unity 2021或更高的版本,升级 hybridclr package到`v3.0.2`或更高版本即可。如果使用Unity 2019或2022,请自行查看main分支的提交记录,将相应修复代码合并到你当前版本即可。

### profile的 BeginSample和EndSample 无法生效

商业版本支持。请看[商业化服务](/other/business.md)
因为 BeginSample之类的函数有[Condition]编译注解,以Release方式编译dll时,会自动剔除这些代码,导致Profile失效。解决办法是以Developemnt方式编译热更新dll即可,代码如下。
如果你使用`v3.0.2`及更高版本,已经附带了`HybridCLR/CompileDll/ActivedBuildTarget_Development`菜单命令。

```csharp
var group = BuildPipeline.GetBuildTargetGroup(target);

ScriptCompilationSettings scriptCompilationSettings = new ScriptCompilationSettings();
scriptCompilationSettings.group = group;
scriptCompilationSettings.target = target;
if (developmentBuild)
{
scriptCompilationSettings.options |= ScriptCompilationOptions.DevelopmentBuild;
}
Directory.CreateDirectory(buildDir);
ScriptCompilationResult scriptCompilationResult = PlayerBuildInterface.CompilePlayerScripts(scriptCompilationSettings, buildDir);
```

### 使用 Unity.netcode.runtime 后出现 NotSupportNative2Managed 桥接函数缺失异常

Expand Down
3 changes: 0 additions & 3 deletions other/business.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
- 包含独创的`DHE`技术,未变化部分代码性能与原生完全相同,相较社区版本纯解释方式提升惊人的**3-30**倍甚至更高,整体**几乎达到**原生性能水平。
- **高级解释指令优化**,支持函数inline(对于短函数有10多倍的性能提升)、newobj inline、类成员访问优化、typeof优化、**数值指令**优化等重要优化。最为核心的数值指令性能提升100-300%,让解释器模块执行重度数值计算成为可能。
- 更敏捷的维护支持,随时获得最新的代码(社区版本出于维护成本考虑,只会定期发布版本)。
- 对Profile支持更佳,支持Memory Profiler的内存快照,支持Profiler.BeginSample和EndSample。
- 原生代码已全部在包体中,被各大AppStore拒审的风险大幅降低。
- 附含一年的技术支持,快速解决使用过程中遇到的各种问题。

Expand All @@ -39,7 +38,6 @@ HotReload特别版提供独创的`热重载技术`的支持。可以运行中完
- 支持卸载单独的assembly,卸载大部分内存(预计95%以上),但有少量残留(如`[ThreadStatic]`标记的线程静态成员字段占据的内存)
- 支持重新加载assembly,代码基本可以任意变化甚至完全不同(除MonoBehaviour类外)。MonoBehaviour及ScriptableObject的热重载。
- 更敏捷的维护支持,随时获得最新的代码(社区版本出于维护成本考虑,只会定期发布版本)。
- 对Profile支持更佳,支持Memory Profiler的内存快照,支持Profiler.BeginSample和EndSample。


## WebGL 增强版
Expand All @@ -50,7 +48,6 @@ HotReload特别版提供独创的`热重载技术`的支持。可以运行中完

- **对WebGL支持更完善**
- 更敏捷的维护支持,随时获得最新的代码(社区版本出于维护成本考虑,只会定期发布版本)。
- 对Profile支持更佳,支持Memory Profiler的内存快照,支持Profiler.BeginSample和EndSample。

## 企业技术支持

Expand Down
4 changes: 0 additions & 4 deletions other/business_partner.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,8 @@
- 巨人
- 叠纸 (*
- 游族 (*)
- 智明星通
- bilibili
- IGG
- 散爆网络
- 上海紫龙
- 乙亥互娱
- 完美
- 英雄互娱

Expand Down

0 comments on commit 3ba4bc9

Please sign in to comment.