xamarin 应用程序很大,为什么以及它们可以更小

xamarin apps are large why and can they be smaller

我使用 Xamarin 和 Android Studio 创建了一个 Hello World 应用程序。当我进入 App Manager 时,使用 Xamarin 构建的应用程序大小为 47 Mb,而使用 Android Studio 构建的应用程序大小为 12 Mb。我知道跨平台一定要大,可是为什么要这么大呢?没有什么导出设置可以变小吗?

它很大,因为它大部分包含一个包含应用程序、库、Mono 运行时等的包,例如 BCL 库(基础 class 库)。下面,您可以找到基本发布包的包大小

对于调试,有点不同。首先,在 Android 设备上调试时,需要复制 2 个大包(Shared Runtime & Platform)。第一个包含 BCL 和单声道运行时,另一个包含您的应用程序将针对的特定机器人 API 级别。

为了在调试时减小应用程序的大小,您可以使用快速程序集部署选项。此选项使您能够直接在测试设备上安装所需的包。这样做,应用程序包的大小大大减少。为此,请在 Xamarin Studio 中找到选项。然后,您将找到构建部分并单击 Android 构建。最后,单击 Use shared Mono runtime 和 Fast assembly deployment 复选框。保存您的更改并在连接设备的情况下构建您的应用程序,您应该可以开始了:)

更新 1

在评论里讨论了一会儿,我发现最好把所有相关信息都在这里,而不是强迫reader在评论区下楼,然后找出答案更多关于 he/she 来到这里寻找的内容。所以我被问及如何在发布模式下减小应用程序的大小。在发布模式下,您将不得不使用@kent.green 的post 链接。 post 的快速概览:Linking enables you to moves from an app with a size of 14.0 Mb to 4.4 Mb by using static analysis and removing assemblies that aren't use by the app in any way possible. For people looking for something similar for iOS, take a look at this post

此外,OP 还担心 his/her 应用程序的调试模式。 OP 想知道通过启用快速程序集部署是否会失去资源监控或崩溃报告等功能。我回答说,从技术的角度来看,事实仍然是相同的功能。不是使用大小为 X 的应用程序包,而是通过使用您的测试设备来减小包的大小,并将 "unnecessary" 东西放在那里以使包更小。我不认为这两个共享库都受此影响。