Skip to content

Commit 4d00826

Browse files
committed
支持在Windows、Linux上出iOS包
1 parent 7ef52b5 commit 4d00826

25 files changed

Lines changed: 254 additions & 241 deletions

Assets/Editor/Tests/DisableAssetBundleCompatibilityChecks.cs

Lines changed: 6 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using EngineBinaryFileRewriter;
66
using NUnit.Framework;
77
using UnityEditor;
8+
using UnityEngine;
89

910
public class DisableAssetBundleCompatibilityChecks
1011
{
@@ -23,26 +24,7 @@ public void TestAndroidGradleProject([Values] bool development, [Values] bool st
2324
Utility.BuildAndroid(GradleProjectDir, development, stripEngineCode, Feature, TargetAndroidArchitectures);
2425
}
2526

26-
int archCount = 0;
27-
28-
foreach (var kv in Utility.AndroidArchitectures)
29-
{
30-
var arch = kv.Key;
31-
var archName = kv.Value;
32-
33-
var path = Path.Combine(GradleProjectDir, "unityLibrary/src/main/jniLibs", archName, "libunity.so");
34-
if (File.Exists(path))
35-
{
36-
var diffs = GetDiffs(Feature, BuildTarget.Android, arch, development).ToArray();
37-
38-
var backupPath = Path.Combine(AndroidBackupDir, archName, "libunity.so");
39-
Utility.CompareFiles(backupPath, path, diffs);
40-
41-
archCount++;
42-
}
43-
}
44-
45-
Assert.AreEqual(2, archCount);
27+
Utility.ValidateAndroid(GradleProjectDir, development, Feature, AndroidBackupDir, GetDiffs);
4628
}
4729

4830
[Test]
@@ -53,80 +35,25 @@ public void TestAndroidApk([Values] bool development, [Values] bool stripEngineC
5335
Utility.BuildAndroid(Apk, development, stripEngineCode, Feature, TargetAndroidArchitectures);
5436
}
5537

56-
string outputDir = Path.GetFileNameWithoutExtension(Apk);
57-
Utility.Unzip(Apk, outputDir);
58-
59-
int archCount = 0;
60-
61-
foreach (var kv in Utility.AndroidArchitectures)
62-
{
63-
var arch = kv.Key;
64-
var archName = kv.Value;
65-
66-
var path = Path.Combine(outputDir, "lib", archName, "libunity.so");
67-
if (File.Exists(path))
68-
{
69-
var diffs = GetDiffs(Feature, BuildTarget.Android, arch, development).ToArray();
70-
71-
var backupPath = Path.Combine(AndroidBackupDir, archName, "libunity.so");
72-
Utility.CompareFiles(backupPath, path, diffs);
73-
74-
archCount++;
75-
}
76-
}
77-
78-
Assert.AreEqual(2, archCount);
38+
Utility.ValidateAndroid(Apk, development, Feature, AndroidBackupDir, GetDiffs);
7939
}
8040

8141
[Test]
8242
public void TestIOS([Values] bool development)
8343
{
8444
Utility.BuildIOS(XcodeProjectDir, development, Feature);
8545

86-
var path = Path.Combine(XcodeProjectDir, "Libraries/libiPhone-lib.a");
87-
var backupPath = path + ".bak";
88-
89-
#if UNITY_2020_1_OR_NEWER
90-
var diffsInUIDAndGID = Utility.GetDiffsInUIDAndGID(backupPath, path);
91-
var diffs = GetDiffs(Feature, BuildTarget.iOS, Architecture.ARM64, development, diffsInUIDAndGID).ToArray();
92-
93-
Utility.CompareFiles(backupPath, path, diffs);
94-
#else
95-
var archs = new Architecture[] { Architecture.ARMv7, Architecture.ARM64 };
96-
97-
foreach (var arch in archs)
98-
{
99-
var archStr = arch.ToString().ToLowerInvariant();
100-
101-
string file1 = $"{archStr}.a";
102-
string file2 = $"{archStr}.a.bak";
103-
104-
Utility.ExtractThinLibrary(path, archStr, file1);
105-
Utility.ExtractThinLibrary(backupPath, archStr, file2);
106-
107-
var diffsInUIDAndGID = Utility.GetDiffsInUIDAndGID(file2, file1);
108-
var diffs = GetDiffs(Feature, BuildTarget.iOS, arch, development, diffsInUIDAndGID).ToArray();
109-
110-
Utility.CompareFiles(file2, file1, diffs);
111-
}
112-
#endif
46+
Utility.ValidateIOS(XcodeProjectDir, development, Feature, GetDiffs);
11347
}
11448

115-
private static (int, int)[] GetDiffs(string feature, BuildTarget target, Architecture architecture, bool development, (int, int)[] diffsInUIDAndGID = null)
49+
private static (int, int)[] GetDiffs(string feature, BuildTarget target, Architecture architecture, bool development)
11650
{
11751
var rule = Utility.GetCodeRewriteRule(feature, target, architecture, development);
11852
Assert.IsNotNull(rule);
11953

12054
var expectedCount = 1;
12155
var diffs = new List<(int, int)>();
12256

123-
if (target == BuildTarget.iOS)
124-
{
125-
diffs.AddRange(diffsInUIDAndGID);
126-
diffs.AddRange(diffsInUIDAndGID);
127-
expectedCount += diffsInUIDAndGID.Length * 2;
128-
}
129-
13057
Assert.AreEqual(1, rule.Symbols.Length);
13158

13259
foreach (var symbol in rule.Symbols)
@@ -147,6 +74,7 @@ private static (int, int)[] GetDiffs(string feature, BuildTarget target, Archite
14774
}
14875

14976
Assert.AreEqual(expectedCount, diffs.Count);
77+
15078
return diffs.ToArray();
15179
}
15280
}

Assets/Editor/Tests/FixFreezingInAsyncResourceUploadBlocking.cs

Lines changed: 7 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using EngineBinaryFileRewriter;
66
using NUnit.Framework;
77
using UnityEditor;
8+
using UnityEngine;
89

910
public class FixFreezingInAsyncResourceUploadBlocking
1011
{
@@ -25,26 +26,7 @@ public void TestAndroidGradleProject([Values] bool stripEngineCode)
2526
Utility.BuildAndroid(GradleProjectDir, development, stripEngineCode, Feature, TargetAndroidArchitectures);
2627
}
2728

28-
int archCount = 0;
29-
30-
foreach (var kv in Utility.AndroidArchitectures)
31-
{
32-
var arch = kv.Key;
33-
var archName = kv.Value;
34-
35-
var path = Path.Combine(GradleProjectDir, "unityLibrary/src/main/jniLibs", archName, "libunity.so");
36-
if (File.Exists(path))
37-
{
38-
var diffs = GetDiffs(Feature, BuildTarget.Android, arch, development).ToArray();
39-
40-
var backupPath = Path.Combine(AndroidBackupDir, archName, "libunity.so");
41-
Utility.CompareFiles(backupPath, path, diffs);
42-
43-
archCount++;
44-
}
45-
}
46-
47-
Assert.AreEqual(2, archCount);
29+
Utility.ValidateAndroid(GradleProjectDir, development, Feature, AndroidBackupDir, GetDiffs);
4830
}
4931

5032
[Test]
@@ -57,66 +39,18 @@ public void TestAndroidApk([Values] bool stripEngineCode)
5739
Utility.BuildAndroid(Apk, development, stripEngineCode, Feature, TargetAndroidArchitectures);
5840
}
5941

60-
string outputDir = Path.GetFileNameWithoutExtension(Apk);
61-
Utility.Unzip(Apk, outputDir);
62-
63-
int archCount = 0;
64-
65-
foreach (var kv in Utility.AndroidArchitectures)
66-
{
67-
var arch = kv.Key;
68-
var archName = kv.Value;
69-
70-
var path = Path.Combine(outputDir, "lib", archName, "libunity.so");
71-
if (File.Exists(path))
72-
{
73-
var diffs = GetDiffs(Feature, BuildTarget.Android, arch, development).ToArray();
74-
75-
var backupPath = Path.Combine(AndroidBackupDir, archName, "libunity.so");
76-
Utility.CompareFiles(backupPath, path, diffs);
77-
78-
archCount++;
79-
}
80-
}
81-
82-
Assert.AreEqual(2, archCount);
42+
Utility.ValidateAndroid(Apk, development, Feature, AndroidBackupDir, GetDiffs);
8343
}
8444

8545
[TestCase(false)]
8646
public void TestIOS(bool development)
8747
{
8848
Utility.BuildIOS(XcodeProjectDir, development, Feature);
8949

90-
var path = Path.Combine(XcodeProjectDir, "Libraries/libiPhone-lib.a");
91-
var backupPath = path + ".bak";
92-
93-
#if UNITY_2020_1_OR_NEWER
94-
var diffsInUIDAndGID = Utility.GetDiffsInUIDAndGID(backupPath, path);
95-
var diffs = GetDiffs(Feature, BuildTarget.iOS, Architecture.ARM64, development, diffsInUIDAndGID).ToArray();
96-
97-
Utility.CompareFiles(backupPath, path, diffs);
98-
#else
99-
var archs = new Architecture[] { Architecture.ARMv7, Architecture.ARM64 };
100-
101-
foreach (var arch in archs)
102-
{
103-
var archStr = arch.ToString().ToLowerInvariant();
104-
105-
string file1 = $"{archStr}.a";
106-
string file2 = $"{archStr}.a.bak";
107-
108-
Utility.ExtractThinLibrary(path, archStr, file1);
109-
Utility.ExtractThinLibrary(backupPath, archStr, file2);
110-
111-
var diffsInUIDAndGID = Utility.GetDiffsInUIDAndGID(file2, file1);
112-
var diffs = GetDiffs(Feature, BuildTarget.iOS, arch, development, diffsInUIDAndGID).ToArray();
113-
114-
Utility.CompareFiles(file2, file1, diffs);
115-
}
116-
#endif
50+
Utility.ValidateIOS(XcodeProjectDir, development, Feature, GetDiffs);
11751
}
11852

119-
private static (int, int)[] GetDiffs(string feature, BuildTarget target, Architecture architecture, bool development, (int, int)[] diffsInUIDAndGID = null)
53+
private static (int, int)[] GetDiffs(string feature, BuildTarget target, Architecture architecture, bool development)
12054
{
12155
var rule = Utility.GetCodeRewriteRule(feature, target, architecture, development);
12256
Assert.IsNotNull(rule);
@@ -127,23 +61,14 @@ private static (int, int)[] GetDiffs(string feature, BuildTarget target, Archite
12761
var diffs = new List<(int, int)>();
12862

12963
if (target == BuildTarget.iOS)
130-
{
131-
expectedCount = diffsInUIDAndGID.Length + repeat * (diffsInUIDAndGID.Length + 24);
132-
133-
diffs.AddRange(diffsInUIDAndGID);
134-
}
64+
expectedCount = repeat * 24;
13565
else
136-
{
13766
expectedCount = architecture == Architecture.ARMv7 ? 11 : 24;
138-
}
13967

14068
Assert.AreEqual(1, rule.Symbols.Length);
14169

14270
while (repeat-- > 0)
14371
{
144-
if (target == BuildTarget.iOS)
145-
diffs.AddRange(diffsInUIDAndGID);
146-
14772
foreach (var symbol in rule.Symbols)
14873
{
14974
Assert.AreEqual(6, symbol.Instructions.Length);
@@ -163,6 +88,7 @@ private static (int, int)[] GetDiffs(string feature, BuildTarget target, Archite
16388
}
16489

16590
Assert.AreEqual(expectedCount, diffs.Count);
91+
16692
return diffs.ToArray();
16793
}
16894
}

0 commit comments

Comments
 (0)