diff options
author | Egor Bogatov <egorbo@gmail.com> | 2020-05-27 16:57:20 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-27 16:57:20 +0300 |
commit | d422b0fba578003fc4b801b2b71adac70d1d8013 (patch) | |
tree | aa3e2ed34d06b04ee484ae4f6f7a91d27d881858 /tools-local | |
parent | 8b92b46602bafafb9b345a6c4c897e9ace02297d (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.cs | 2 | ||||
-rw-r--r-- | tools-local/tasks/mobile.tasks/AppleAppBuilder/Xcode.cs | 18 |
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; } } |