Debugging 为什么Xamarin调试构建如此之大,如何减小大小?

Debugging 为什么Xamarin调试构建如此之大,如何减小大小?,debugging,xamarin,Debugging,Xamarin,在Xamarin中使用调试模式构建的一个简单的“Hello World”程序的大小为50mb,甚至不包括已安装的Monoruntime和其他类似的东西 虽然我猜测发布版本更小,但我也希望在不丢失任何调试功能的情况下减小调试版本的大小,以便更快地重建应用程序 那么,为什么Xamarin调试构建如此之大?我如何在不牺牲调试功能的情况下减小它们的大小?在项目构建选项中,启用链接。默认情况下,它在调试中关闭以缩短生成时间 此处有更多详细信息:在项目构建选项中,启用链接。默认情况下,它在调试中关闭以缩短生

在Xamarin中使用调试模式构建的一个简单的“Hello World”程序的大小为50mb,甚至不包括已安装的Monoruntime和其他类似的东西

虽然我猜测发布版本更小,但我也希望在不丢失任何调试功能的情况下减小调试版本的大小,以便更快地重建应用程序


那么,为什么Xamarin调试构建如此之大?我如何在不牺牲调试功能的情况下减小它们的大小?

在项目构建选项中,启用链接。默认情况下,它在调试中关闭以缩短生成时间


此处有更多详细信息:在项目构建选项中,启用链接。默认情况下,它在调试中关闭以缩短生成时间


这里有更多细节:和

Xamarin.Android

我们这里有一个详细介绍Xamarin的指南。Android应用程序大小:

Xamarin.iOS

Xamarin应用程序的大小略大于Objective-C应用程序,因为Mono框架是应用程序包的一部分

您构建的架构也将增加应用程序的大小,因为将为每个架构创建二进制文件-我建议您仅为ARMv7和ARM64构建,省略ARMv7,除非您需要使用该架构提供的特定优化

通过将链接器选项设置为链接发布配置中的所有程序集,您可以潜在地减小应用程序大小:

添加到项目中的每个nuget包也会增加应用程序的大小。但是,使用链接器后,其影响将取决于您实际使用的软件包的数量。在链接过程中,任何未使用的内容都将被剥离

对于一个统一的应用程序(支持多种体系结构),苹果公司正在分别考虑每种体系结构对应用商店下载大小的限制。因此,如果您的可交付内容是100mb(例如,每个架构50mb),苹果会将其视为50mb的下载,而不是整个100mb

您还可以通过查看应用程序中包含的其他资源(如图像)来减小应用程序的大小,并查看是否可以通过缩小或增加压缩来节省空间


最后,应用商店将自己的加密添加到你的应用中,这可以显著增加应用的整体大小。由于encrpytion会混淆模式,因此恢复压缩的应用程序将更大。影响因应用程序而异。将数据(如长字符串或表格)移出代码并放入外部文件将使最终下载更小,因为这些文件将被更有效地压缩。

Xamarin.Android

我们这里有一个详细介绍Xamarin的指南。Android应用程序大小:

Xamarin.iOS

Xamarin应用程序的大小略大于Objective-C应用程序,因为Mono框架是应用程序包的一部分

您构建的架构也将增加应用程序的大小,因为将为每个架构创建二进制文件-我建议您仅为ARMv7和ARM64构建,省略ARMv7,除非您需要使用该架构提供的特定优化

通过将链接器选项设置为链接发布配置中的所有程序集,您可以潜在地减小应用程序大小:

添加到项目中的每个nuget包也会增加应用程序的大小。但是,使用链接器后,其影响将取决于您实际使用的软件包的数量。在链接过程中,任何未使用的内容都将被剥离

对于一个统一的应用程序(支持多种体系结构),苹果公司正在分别考虑每种体系结构对应用商店下载大小的限制。因此,如果您的可交付内容是100mb(例如,每个架构50mb),苹果会将其视为50mb的下载,而不是整个100mb

您还可以通过查看应用程序中包含的其他资源(如图像)来减小应用程序的大小,并查看是否可以通过缩小或增加压缩来节省空间


最后,应用商店将自己的加密添加到你的应用中,这可以显著增加应用的整体大小。由于encrpytion会混淆模式,因此恢复压缩的应用程序将更大。影响因应用程序而异。将数据(如长字符串或表)移出代码并移入外部文件将使最终下载更小,因为这些文件将被更有效地压缩。

我想问:构建的调试大小有什么关系?您可以启用
链接
,这通常仅用于发布打包,但会以构建时间为代价,但这会使使用调试共享运行时来启用更快的构建/部署/调试周期失败。我想问:构建的调试大小为何重要?您可以启用
链接
,这通常仅用于发布打包,但会以生成时间为代价,但这会妨碍使用调试共享运行时来实现更快的生成/部署/调试周期。启用链接如何减少调试生成时间,毕竟,它不会减少最终应用程序的大小吗?启用链接会增加构建时间。这就是为什么默认情况下对调试生成禁用它。启用链接如何减少调试生成时间,毕竟它不会减少最终应用程序的大小吗?启用链接会增加生成时间。这就是为什么默认情况下对调试构建禁用它。