Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/runtime.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEgor Bogatov <egorbo@gmail.com>2020-05-27 16:57:20 +0300
committerGitHub <noreply@github.com>2020-05-27 16:57:20 +0300
commitd422b0fba578003fc4b801b2b71adac70d1d8013 (patch)
treeaa3e2ed34d06b04ee484ae4f6f7a91d27d881858 /tools-local
parent8b92b46602bafafb9b345a6c4c897e9ace02297d (diff)
Reduce app size for iOS (#36902)
We did the same mistake for Android - `libmonosgen-2.0.dylib` shouldn't be copied to bundle (we already have a mono runtime there)
Diffstat (limited to 'tools-local')
-rw-r--r--tools-local/tasks/mobile.tasks/AppleAppBuilder/AppleAppBuilder.cs2
-rw-r--r--tools-local/tasks/mobile.tasks/AppleAppBuilder/Xcode.cs18
2 files changed, 17 insertions, 3 deletions
diff --git a/tools-local/tasks/mobile.tasks/AppleAppBuilder/AppleAppBuilder.cs b/tools-local/tasks/mobile.tasks/AppleAppBuilder/AppleAppBuilder.cs
index 4722c7f0a5f..39ba74d890f 100644
--- a/tools-local/tasks/mobile.tasks/AppleAppBuilder/AppleAppBuilder.cs
+++ b/tools-local/tasks/mobile.tasks/AppleAppBuilder/AppleAppBuilder.cs
@@ -163,7 +163,7 @@ public class AppleAppBuilderTask : Task
if (GenerateXcodeProject)
{
XcodeProjectPath = Xcode.GenerateXCode(ProjectName, MainLibraryFileName, assemblerFiles,
- AppDir, binDir, MonoRuntimeHeaders, !isDevice, UseConsoleUITemplate, UseAotForSimulator, NativeMainSource);
+ AppDir, binDir, MonoRuntimeHeaders, !isDevice, UseConsoleUITemplate, UseAotForSimulator, Optimized, NativeMainSource);
if (BuildAppBundle)
{
diff --git a/tools-local/tasks/mobile.tasks/AppleAppBuilder/Xcode.cs b/tools-local/tasks/mobile.tasks/AppleAppBuilder/Xcode.cs
index 821f2671500..76ec75c0d32 100644
--- a/tools-local/tasks/mobile.tasks/AppleAppBuilder/Xcode.cs
+++ b/tools-local/tasks/mobile.tasks/AppleAppBuilder/Xcode.cs
@@ -22,10 +22,15 @@ internal class Xcode
bool preferDylibs,
bool useConsoleUiTemplate,
bool useAotForSimulator,
+ bool stripDebugSymbols,
string? nativeMainSource = null)
{
// bundle everything as resources excluding native files
- string[] excludes = {".dll.o", ".dll.s", ".dwarf", ".m", ".h", ".a", ".bc"};
+ var excludes = new List<string> { ".dll.o", ".dll.s", ".dwarf", ".m", ".h", ".a", ".bc", "libmonosgen-2.0.dylib" };
+ if (stripDebugSymbols)
+ {
+ excludes.Add(".pdb");
+ }
string[] resources = Directory.GetFiles(workspace)
.Where(f => !excludes.Any(e => f.EndsWith(e, StringComparison.InvariantCultureIgnoreCase)))
@@ -150,7 +155,16 @@ internal class Xcode
args.Append(" -configuration ").Append(config);
Utils.RunProcess("xcodebuild", args.ToString(), workingDir: Path.GetDirectoryName(xcodePrjPath));
- return Path.Combine(Path.GetDirectoryName(xcodePrjPath)!, config + "-" + sdk,
+
+ string appPath = Path.Combine(Path.GetDirectoryName(xcodePrjPath)!, config + "-" + sdk,
Path.GetFileNameWithoutExtension(xcodePrjPath) + ".app");
+
+ long appSize = new DirectoryInfo(appPath)
+ .EnumerateFiles("*", SearchOption.AllDirectories)
+ .Sum(file => file.Length);
+
+ Utils.LogInfo($"\nAPP size: {(appSize / 1000_000.0):0.#} Mb.\n");
+
+ return appPath;
}
}