Skip to content

Commit bd0e46d

Browse files
committed
移除过时的link.xml相关处理文档
1 parent 65063bd commit bd0e46d

2 files changed

Lines changed: 0 additions & 103 deletions

File tree

docs/manual/incremental-obfuscation-and-hotupdate.md

Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -27,55 +27,3 @@ Obfuz支持增量混淆,大多数Obfusaction Pass会尽力保持混淆的稳
2727

2828
修改`ConstEncrypSettings.EncryptionLevel``FieldEncryptSetings.EncryptionLevel``CallObfusSettings.ObfuscationLevel`也可以影响混淆结果。
2929
不过增大这些值会造成加密性能下降,所以建议不要频繁修改它。
30-
31-
## HybridCLR的一些问题
32-
33-
HybridCLR的`HybridCLR/Generate/All``HybridCLR/Generate/LinkXml`都是基于未混淆的代码生成的link.xml,这导致混淆后生成的link.xml关于混淆程序集相关的预留完全
34-
没有生效,因为对应的名字在混淆后的程序集中并不存在。
35-
36-
解决办法为为混淆后的程序集额外生成一个link.xml,代码如下:
37-
38-
```csharp
39-
40-
41-
public static class GenerateLinkXmlForObfuscatedAssembly
42-
{
43-
[MenuItem("Obfuz/GenerateLinkXmlForHybridCLR")]
44-
public static void GenerateLinkXml()
45-
{
46-
CompileDllCommand.CompileDllActiveBuildTarget();
47-
BuildTarget target = EditorUserBuildSettings.activeBuildTarget;
48-
var obfuzSettings = ObfuzSettings.Instance;
49-
50-
var assemblySearchDirs = new List<string>
51-
{
52-
SettingsUtil.GetHotUpdateDllsOutputDirByTarget(target),
53-
};
54-
ObfuscatorBuilder builder = ObfuscatorBuilder.FromObfuzSettings(obfuzSettings, target, true);
55-
builder.InsertTopPriorityAssemblySearchPaths(assemblySearchDirs);
56-
57-
Obfuscator obfuz = builder.Build();
58-
obfuz.Run();
59-
60-
61-
List<string> hotfixAssemblies = SettingsUtil.HotUpdateAssemblyNamesExcludePreserved;
62-
63-
var analyzer = new Analyzer(new PathAssemblyResolver(builder.ObfuscatedAssemblyOutputPath));
64-
var refTypes = analyzer.CollectRefs(hotfixAssemblies);
65-
66-
// HyridCLR中 LinkXmlWritter不是public的,在其他程序集无法访问,只能通过反射操作
67-
var linkXmlWriter = typeof(SettingsUtil).Assembly.GetType("HybridCLR.Editor.Link.LinkXmlWriter");
68-
var writeMethod = linkXmlWriter.GetMethod("Write", BindingFlags.Public | BindingFlags.Instance);
69-
var instance = Activator.CreateInstance(linkXmlWriter);
70-
string linkXmlOutputPath = $"{Application.dataPath}/Obfuz/link.xml";
71-
writeMethod.Invoke(instance, new object[] { linkXmlOutputPath, refTypes });
72-
Debug.Log($"[GenerateLinkXmlForObfuscatedAssembly] output:{linkXmlOutputPath}");
73-
AssetDatabase.Refresh();
74-
}
75-
}
76-
77-
```
78-
79-
:::warning
80-
构建游戏前请一定要先运行`Obfuz/GenerateLinkXmlForHybridCLR`,再运行`HybridCLR/Generate/All`,否则会出现裁剪异常。
81-
:::

i18n/en/docusaurus-plugin-content-docs/current/manual/incremental-obfuscation-and-hotupdate.md

Lines changed: 0 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -27,54 +27,3 @@ If incremental obfuscation stability is not a concern, you can modify the follow
2727

2828
Modifying `ConstEncrypSettings.EncryptionLevel`, `FieldEncryptSettings.EncryptionLevel`, and `CallObfusSettings.ObfuscationLevel` can also affect obfuscation results.
2929
However, increasing these values will cause encryption performance degradation, so it's recommended not to modify them frequently.
30-
31-
## HybridCLR Issues
32-
33-
HybridCLR's `HybridCLR/Generate/All` and `HybridCLR/Generate/LinkXml` both generate link.xml based on unobfuscated code, which causes the link.xml generated after obfuscation to have completely ineffective reservations for obfuscated assemblies, since the corresponding names don't exist in the obfuscated assemblies.
34-
35-
The solution is to generate an additional link.xml for the obfuscated assemblies, with the following code:
36-
37-
```csharp
38-
39-
40-
public static class GenerateLinkXmlForObfuscatedAssembly
41-
{
42-
[MenuItem("Obfuz/GenerateLinkXmlForHybridCLR")]
43-
public static void GenerateLinkXml()
44-
{
45-
CompileDllCommand.CompileDllActiveBuildTarget();
46-
BuildTarget target = EditorUserBuildSettings.activeBuildTarget;
47-
var obfuzSettings = ObfuzSettings.Instance;
48-
49-
var assemblySearchDirs = new List<string>
50-
{
51-
SettingsUtil.GetHotUpdateDllsOutputDirByTarget(target),
52-
};
53-
ObfuscatorBuilder builder = ObfuscatorBuilder.FromObfuzSettings(obfuzSettings, target, true);
54-
builder.InsertTopPriorityAssemblySearchPaths(assemblySearchDirs);
55-
56-
Obfuscator obfuz = builder.Build();
57-
obfuz.Run();
58-
59-
60-
List<string> hotfixAssemblies = SettingsUtil.HotUpdateAssemblyNamesExcludePreserved;
61-
62-
var analyzer = new Analyzer(new PathAssemblyResolver(builder.ObfuscatedAssemblyOutputPath));
63-
var refTypes = analyzer.CollectRefs(hotfixAssemblies);
64-
65-
// LinkXmlWriter in HybridCLR is not public and cannot be accessed in other assemblies, can only be operated through reflection
66-
var linkXmlWriter = typeof(SettingsUtil).Assembly.GetType("HybridCLR.Editor.Link.LinkXmlWriter");
67-
var writeMethod = linkXmlWriter.GetMethod("Write", BindingFlags.Public | BindingFlags.Instance);
68-
var instance = Activator.CreateInstance(linkXmlWriter);
69-
string linkXmlOutputPath = $"{Application.dataPath}/Obfuz/link.xml";
70-
writeMethod.Invoke(instance, new object[] { linkXmlOutputPath, refTypes });
71-
Debug.Log($"[GenerateLinkXmlForObfuscatedAssembly] output:{linkXmlOutputPath}");
72-
AssetDatabase.Refresh();
73-
}
74-
}
75-
76-
```
77-
78-
:::warning
79-
Before building the game, be sure to run `Obfuz/GenerateLinkXmlForHybridCLR` first, then run `HybridCLR/Generate/All`, otherwise trimming exceptions will occur.
80-
:::

0 commit comments

Comments
 (0)