Xamarin iOS ipa文件大小问题

时间:2017-09-18 18:50:53

标签: xamarin xamarin.ios xamarin.forms xamarin-studio ipa

基于PCL的方法的项目结构:

项目X(解决方​​案)

  • 核心(基于Ioc的设置具有autofac的基础项目)
  • 项目(droid和ios通用代码的90%)
  • Project.Droid(Droid设置,渲染器和图形。)
  • Project.iOS(iOS设置,渲染器和图形。)

我已经通过了所有可能的选项来减少ipa文件的大小。特别是链接。 我使用'全部链接'并剥离调试代码,优化图像等。

最终ipa大小为77 MB。

以下是浏览包内容后文件大小的详细信息。我正在使用arch 7和64。

Project.iOS是42 MB 这很烦人。因为我可以单独看到dll和图像以及此文件。不知道为什么它占用了这么多空间。我可以减小它的大小吗?这是我的首要任务

dll约为15 MB (Xamarin表单,地图,其他第三方库。因为我的目标是7和64.我看到libraryX.dll,libraryX.aotdata.arm64,libraryX.aotdata.arm7) 我相信这是对的。

图片大约20 MB

我计划通过使用“https://tinypng.com/”来展开并将所有图片资源放入“细化”,从而进一步减少。也可能想要使用按需资源选项但是它的低优先级

请告诉我。任何帮助/建议将非常感谢。

Xamarin论坛链接:https://forums.xamarin.com/discussion/103470/xamarin-ios-file-size-is-too-big-tried-all-the-possible-options/p1?new=1

谢谢。

2 个答案:

答案 0 :(得分:2)

使用图标字体有助于减小IPA的大小,因为您将使用字体中的矢量图形替换多个版本的图标。我用这种方法取得了很大的成功。 Details herealso here

答案 1 :(得分:1)

为了最大限度地减少已经完成的部分的大小,我们无法做到这一点。 (链接/链接/剥离调试代码)
Here您可以找到适用于减少应用程序大小的最佳做法列表,还有一个专用于Linking on iOS的Xamarin部分。 (在运行时/限制结构上限制泛型/下载资源)

你可以挖掘出哪些组件最容易占用空间 查看构建的mtouch-cache文件夹的obj文件夹:

ls -laS *.o

就我而言:

-rw-r--r--  1 hichame.yessou  staff  9276292 Sep 13 10:03 mscorlib.dll.o
-rw-r--r--  1 hichame.yessou  staff  5741840 Sep 13 10:03 Newtonsoft.Json.dll.o
-rw-r--r--  1 hichame.yessou  staff  5359900 Sep 13 10:13 ****.Core.dll.o
-rw-r--r--  1 hichame.yessou  staff  4823812 Sep 13 10:03 System.Core.dll.o
-rw-r--r--  1 hichame.yessou  staff  3929056 Sep 13 10:13 ****.iOS.exe.o
-rw-r--r--  1 hichame.yessou  staff  3729004 Sep 13 10:03 NodaTime.dll.o
-rw-r--r--  1 hichame.yessou  staff  3218980 Sep 13 10:03 System.Xml.dll.o
-rw-r--r--  1 hichame.yessou  staff  3014548 Sep 13 10:03 System.dll.o
-rw-r--r--  1 hichame.yessou  staff  2985844 Sep 13 10:03 Xamarin.iOS.dll.o
-rw-r--r--  1 hichame.yessou  staff  2165576 Sep 13 10:03 Ninject.dll.o
-rw-r--r--  1 hichame.yessou  staff  1686992 Sep 13 10:13 registrar.o
-rw-r--r--  1 hichame.yessou  staff  1569908 Sep 13 10:03 System.Net.Http.dll.o
-rw-r--r--  1 hichame.yessou  staff   903048 Sep 13 10:03 SQLite.Net.dll.o
-rw-r--r--  1 hichame.yessou  staff   620200 Sep 13 10:03 ****-iOS.dll.o
-rw-r--r--  1 hichame.yessou  staff   566972 Sep 13 10:03 ********.dll.o
-rw-r--r--  1 hichame.yessou  staff   430432 Sep 13 10:03 ********.dll.o
-rw-r--r--  1 hichame.yessou  staff   396776 Sep 13 10:03 SDWebImage.dll.o
-rw-r--r--  1 hichame.yessou  staff   318632 Sep 13 10:03 ********.dll.o
-rw-r--r--  1 hichame.yessou  staff   268884 Sep 13 10:03 SwipeTableCellBinding.dll.o
-rw-r--r--  1 hichame.yessou  staff   235960 Sep 13 10:03 Flurl.dll.o
-rw-r--r--  1 hichame.yessou  staff   232304 Sep 13 10:03 MonoTouch.******.dll.o



其次,如果你尝试构建一个 Xamarin.iOS项目,它将产生一个37 MB的.ipa,所以我认为它对于一个完整的项目来说是一个合理的77 MB大小。
另外,仅适用于WiFi的应用程序的App Store限制设置为100 MB。