Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin iOS应用程序是否过度膨胀?_Ios_Xamarin.ios_Xamarin - Fatal编程技术网

Xamarin iOS应用程序是否过度膨胀?

Xamarin iOS应用程序是否过度膨胀?,ios,xamarin.ios,xamarin,Ios,Xamarin.ios,Xamarin,我正在使用Xamarin iOS开发一个相当简单的应用程序,我得到的.app文件的最小大小是13.5MB 我已经执行了所有推荐的优化-无调试符号、LVVM代码生成、thumb-2、链接所有程序集、仅限单一体系结构(ARMV7) 第一个问题是,我的13.5MB听上去像是Xamarin iOS所期待的,还是我可能做错了什么 第二个问题是,Xamarin iOS为等效的本机实现(大致上)增加了多少额外的大小开销 第三个问题是,使用Xamarin iOS,Hello World应用程序的编译规模究竟有多

我正在使用Xamarin iOS开发一个相当简单的应用程序,我得到的.app文件的最小大小是13.5MB

我已经执行了所有推荐的优化-无调试符号、LVVM代码生成、thumb-2、链接所有程序集、仅限单一体系结构(ARMV7)

第一个问题是,我的13.5MB听上去像是Xamarin iOS所期待的,还是我可能做错了什么

第二个问题是,Xamarin iOS为等效的本机实现(大致上)增加了多少额外的大小开销

第三个问题是,使用Xamarin iOS,Hello World应用程序的编译规模究竟有多小


第四个问题是,一个本机Hello World应用程序可以编译到多小?

这个
.dSYM
是一个包含调试符号的目录。这不是作为应用程序的一部分(向最终用户)提供的东西。请注意,这甚至在非调试版本中也会产生,因为它允许您符号化崩溃报告(来自运行版本二进制文件的最终用户)

要了解实际的应用程序大小,您需要查看
.app
目录


通过观看今年的视频,您可以学到许多减少应用程序大小(和构建时间)的技巧。这也将回答你的其他问题。

正如人们所预料的那样,Xamarin应用程序在发布模式下要大一些。举个例子,看看我的两个出货应用程序中的二进制文件,二进制+DLL大约有1200万和1800万(我想我需要研究一下为什么1800万的那个要大得多…)。我猜,如果我用objective-c做这些,根据过去构建本地应用程序的经验,它们的大小大约是这个数字的一半


如果您正在运行调试硬件构建,那么它们将是巨大的。对于二进制+DLL,上面的12m示例跳到96M(?!)。在我检查这一点之前,我的脑海中有一个想法,那就是为了处理软件调试器,它们的大小增加了一倍,但我想还有很多其他我不知道的废话。

只使用“SDK程序集”@eMi:尽管文档中有这样的说法,链接SDK程序集实际上只会使应用程序变大-14.3MB。嗯,好吧,我不知道你的设置到底是怎样的。。制作了4个应用程序,还有一个相当“大”的应用程序,大小为6.8MB。。你肯定做错了什么嗯。。。也许我明天会提供一个答案,因为我现在无法访问任何sourcecode@eMi字体很高兴知道。。这种尺寸非常合理,不会让我的客户感到不安。我已经从其他项目导入了很多未使用的可重用通用代码。文档似乎暗示链接器会忽略这一点,但您认为这可能会影响它吗?@poupou:link就在它所说的地方——以下步骤将有助于减小此大小:将链接器选项设置为链接SDK程序集。感谢您的澄清。它实际上更糟糕——16.7MB。我使用link-all将它减少到13.5MB。这就是您对Xamarin iOS的期望吗?幻灯片21暗示10.9MB是“现场服务示例”应用程序的“最佳大小”。因此,我认为缺乏响应意味着10-15MB的大小是发布版本的预期最小大小?不。HelloWorld应用程序的大小低于3MB。应用程序大小因代码和其中包含的非代码资产(例如图像、视频、声音、数据库等)而异。在某些应用程序中,资产可能非常大。例如,所有设备/方向的所有启动图像(尤其是包含iPad视网膜版本时)都可能比应用程序可执行文件本身大得多。无论您使用什么工具构建iOS应用程序,OTOH的资产大小都是相同的。我的应用程序中没有资产,只有12MB。似乎只要代码开始使用库,由于AOT'ing了所有可能的泛型和代码依赖树,库的大小就可能以几何级数增长。我错了吗?有没有一个应用程序的复杂性与3mb范围内的twitter应用程序相同的例子?(不需要资产)除了初始命中(包括运行时库)之外,大小增长应该是线性的,并且类似于ObjC。您可能希望查看您的托管链接器设置(例如,默认的Link SDK与更优化的Link All)以及本机链接的方式(如果您有到本机库的绑定)。这两个主题都是上面提到的视频的一部分。假设链接正常工作,随着越来越多的mono框架中的链接,它将比objective-c增长得更快(超过最初的命中率)。Objective-c正在链接到二进制文件中未包含的系统框架。如果代码完全本地链接,为什么它会包含DLL?它们还在用吗?谢谢你的帮助回答。顺便说一句@poupou:为什么它应该线性增长,因为随着应用程序使用API的增加,更多的代码由于依赖关系图和潜在的泛型而被AOT。e、 g.在列表上调用Sum()将导致无法使用IEnumerable,需要ICollectionAssembly(
.dll
.exe
),因为它们包含.NET元数据。默认情况下,在发布配置中,它们内部没有IL(已剥离)。这些信息也是我视频的一部分;-)