Skip to content

Commit a805970

Browse files
committed
修复异步上传导致线程卡死的bug的规则支持Unity2020
1 parent 7440a38 commit a805970

4 files changed

Lines changed: 121 additions & 2 deletions

File tree

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,11 @@ req.SetEnableCompatibilityChecks(false); // Non-public, needs to be called by re
7171
工程中包含了Android、iOS的发布版本的配置。已测试版本:
7272
* 2022.3.60
7373
* 2022.3.20
74+
* 2020.3.48
7475

7576
#### 在设备上测试配置的正确性
7677
1. 使用[工程](https://discussions.unity.com/t/android-build-project-freezes-after-5-minutes-with-playerloop-in-profiler-at-60-000-ms/784527/337)在设备上复现问题
7778
2. 集成工具,确定问题不再出现
7879

7980
## Todo
80-
* 支持更多的Unity版本(2023、6+)
81+
* 支持更多的Unity版本(6+)

src/UnityBinaryFileRewriter/Assets/Editor/Tests/FixFreezingInAsyncResourceUploadBlocking.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,11 @@ private static (int, int)[] GetDiffs(string feature, BuildTarget target, Archite
5353
var rule = Utility.GetCodeRewriteRule(feature, target, architecture, development);
5454
Assert.IsNotNull(rule);
5555

56+
#if UNITY_2022_1_OR_NEWER
5657
int repeat = target == BuildTarget.iOS ? 5 : 1;
58+
#else
59+
int repeat = target == BuildTarget.iOS ? 7 : 1;
60+
#endif
5761

5862
int expectedCount;
5963
var diffs = new List<(int, int)>();

src/UnityBinaryFileRewriter/Packages/com.modx.enginebinaryfilerewriter/Editor/CodeRewriter/iOS/StaticLibrary.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections.Generic;
33
using System.IO;
44
using System.Text;
5+
using UnityEngine;
56

67
namespace EngineBinaryFileRewriter
78
{
@@ -73,7 +74,7 @@ public static StaticLibrary Parse(string file)
7374
public Item GetItem(string name)
7475
{
7576
if (mDuplicateFile.Contains(name))
76-
throw new NotImplementedException($"Duplicate object files: {name}");
77+
Debug.LogWarning($"Duplicate object files: {name}");
7778

7879
return mItems[name];
7980
}

src/UnityBinaryFileRewriter/ProjectSettings/EngineBinaryFileRewriterSettings.asset

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,119 @@ MonoBehaviour:
313313
- Name: Fix Freezing in AsyncResourceUploadBlocking
314314
Enable: 0
315315
RuleSets:
316+
- UnityVersion: ^2020\.
317+
Rules:
318+
- BuildTarget: 9
319+
Development: 0
320+
Architecture: 1
321+
Symbols:
322+
- DemangledName: CappedSemaphore::Signal(int)
323+
Pattern: ^.*\.a:(.*\.o):.*CappedSemaphore.*Signal.*$
324+
Instructions:
325+
- OriginalInstructionDescription: cmp w10, w9
326+
OriginalMachineCode: 5F01096B
327+
Index: -1
328+
NewInstructionDescription: nop
329+
NewMachineCode: 1F2003D5
330+
- OriginalInstructionDescription: b.eq
331+
OriginalMachineCode: 40020054
332+
Index: -1
333+
NewInstructionDescription: nop
334+
NewMachineCode: 1F2003D5
335+
- OriginalInstructionDescription: cmp w10, w11
336+
OriginalMachineCode: 5F010B6B
337+
Index: -1
338+
NewInstructionDescription: nop
339+
NewMachineCode: 1F2003D5
340+
- OriginalInstructionDescription: b.ne
341+
OriginalMachineCode: 21FEFF54
342+
Index: -1
343+
NewInstructionDescription: nop
344+
NewMachineCode: 1F2003D5
345+
- OriginalInstructionDescription: mov w0, #0
346+
OriginalMachineCode: 00008052
347+
Index: -1
348+
NewInstructionDescription: nop
349+
NewMachineCode: 1F2003D5
350+
- OriginalInstructionDescription: ret
351+
OriginalMachineCode: C0035FD6
352+
Index: 0
353+
NewInstructionDescription: b
354+
NewMachineCode: EAFFFF17
355+
- BuildTarget: 13
356+
Development: 0
357+
Architecture: 1
358+
Symbols:
359+
- DemangledName: CappedSemaphore::Signal(int)
360+
Pattern: ^.*CappedSemaphore.*Signal.*$
361+
Instructions:
362+
- OriginalInstructionDescription: cmp w11, w9
363+
OriginalMachineCode: 7F01096B
364+
Index: -1
365+
NewInstructionDescription: nop
366+
NewMachineCode: 1F2003D5
367+
- OriginalInstructionDescription: b.eq
368+
OriginalMachineCode: 60020054
369+
Index: -1
370+
NewInstructionDescription: nop
371+
NewMachineCode: 1F2003D5
372+
- OriginalInstructionDescription: cmp w11, w12
373+
OriginalMachineCode: 7F010C6B
374+
Index: -1
375+
NewInstructionDescription: nop
376+
NewMachineCode: 1F2003D5
377+
- OriginalInstructionDescription: b.ne
378+
OriginalMachineCode: 21FEFF54
379+
Index: -1
380+
NewInstructionDescription: nop
381+
NewMachineCode: 1F2003D5
382+
- OriginalInstructionDescription: mov w0, wzr
383+
OriginalMachineCode: E0031F2A
384+
Index: -1
385+
NewInstructionDescription: nop
386+
NewMachineCode: 1F2003D5
387+
- OriginalInstructionDescription: ret
388+
OriginalMachineCode: C0035FD6
389+
Index: 0
390+
NewInstructionDescription: b
391+
NewMachineCode: E9FFFF17
392+
- BuildTarget: 13
393+
Development: 0
394+
Architecture: 0
395+
Symbols:
396+
- DemangledName: CappedSemaphore::Signal(int)
397+
Pattern: ^.*CappedSemaphore.*Signal.*$
398+
Instructions:
399+
- OriginalInstructionDescription: cmp r3, r2
400+
OriginalMachineCode: 9342
401+
Index: -1
402+
NewInstructionDescription: nop
403+
NewMachineCode: 00BF
404+
- OriginalInstructionDescription: beq.n
405+
OriginalMachineCode: 18D0
406+
Index: -1
407+
NewInstructionDescription: nop
408+
NewMachineCode: 00BF
409+
- OriginalInstructionDescription: cmp r3, r1
410+
OriginalMachineCode: 8B42
411+
Index: -1
412+
NewInstructionDescription: nop
413+
NewMachineCode: 00BF
414+
- OriginalInstructionDescription: bne.n
415+
OriginalMachineCode: E9D1
416+
Index: -1
417+
NewInstructionDescription: nop
418+
NewMachineCode: 00BF
419+
- OriginalInstructionDescription: movs r0, #0
420+
OriginalMachineCode: 0020
421+
Index: -1
422+
NewInstructionDescription: nop
423+
NewMachineCode: 00BF
424+
- OriginalInstructionDescription: pop {r4, pc}
425+
OriginalMachineCode: 10BD
426+
Index: 0
427+
NewInstructionDescription: b
428+
NewMachineCode: E0E7
316429
- UnityVersion: ^2022\.
317430
Rules:
318431
- BuildTarget: 9

0 commit comments

Comments
 (0)