Xamarin.Forms:Apk大小太大

8

我在Xamarin.Forms中创建了一个新项目并进行了调试。我没有做任何操作,只是创建了一个Apk文件,其大小为14.2 MB。我发现一些教程关于更改链接器的行为以链接所有程序集。这将Apk的大小减小到1或2 MB。实际上,我期望这样的Apk大小应该在几KB之内。我在这里漏掉了什么?


1
Xamarin正在将其运行时打包到APK中,以便能够实际运行应用程序。没有运行时,应用程序无法在Android上运行。如果您计划将应用程序交付给大多数用户,则除了在APK中包含MONO运行时之外,没有其他选择。这是制作跨平台应用程序的代价。 - Vladyslav Matviienko
1个回答

15
您可以在文档中详细了解这个问题。
您的主要问题在于,由于默认情况下您的Android设备上没有可用,因此很多.NET内容被包含在内。 APK size without Linker (Image by Xamarin) 15.8 MB是一个比我们想象中更大的下载大小。问题在于BCL库,因为它们包括mscorlib、System和Mono.Android,这些库提供了运行您的应用程序所需的许多必要组件。然而,它们还提供了您可能没有在应用程序中使用的功能,因此排除这些组件可能更好。
但是它们可能不是必需的!这就是链接器的作用。 APK size when using the Linker (Image by Xamarin) 当我们构建一个分布式应用程序时,我们执行一个称为链接的过程,该过程检查应用程序并删除不直接使用的任何代码。这个过程类似于垃圾回收为堆分配的内存提供的功能。
您可以从Xamarin.Droid项目属性中访问链接器设置。在那里查看不同的设置并尝试一下,看看它对效果有什么影响。

感谢您的及时回复。我按照以下步骤操作 - 双击 Android 项目->Android Build ->Linker ->Link All Assemblies。这样可以吗?还是有其他方法? - Dipak
我选择连接器行为仅链接SDK程序集 - Lutaaya Huzaifah Idris
当我使用链接器时,会出现以下错误:“LinkAssemblies”任务意外失败 - Beingnin
检查输出的其余部分。可能有原因。 - Gerald Versluis
1
我使用链接和Proguard仍无法将APK大小降至16 MB以下,在Android设备上甚至达不到30 MB以下 : ( - BloodyRain2k

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接