My *_*per 11 xamarin.android xamarin xamarin.forms
因此,在使用Xamarin.Forms开发应用程序的所有艰苦工作之后,当我今天尝试创建发布版本时,我惊讶地看到应用程序大小为~25MB - ~31MB(在SDK Only Linking,ProGuard,Creating apk之后)为每个abi).我的资源文件夹仅以KB为单位.在调试模式下,apk实际上只有5MB,很高兴看到它.我后来意识到这是因为我们不应该在发布模式中使用"使用共享运行时"选项.
然后我尝试创建一个空白的Xamarin.Android应用程序,但是每个abi的链接SDK和用户程序集,ProGuard,APK的发布版本仍然是~8MB到~13MB.
根据以下链接,Hello World应用程序的最小大小为2.9MB,但是我无法创建这样的大小.https://developer.xamarin.com/guides/android/advanced_topics/application_package_sizes/
对于我的应用程序和我创建的空白应用程序,必要的dll似乎很高(例如mscorlib.dll是2.2mb等,其中链接后链接说它将变为1 mb)这是我看到的我的程序集文件夹之后提取apk

在最近的一次微软技术会议上,我碰巧知道"9 News"应用程序(链接如下)是使用xamarin构建的,创作者出现在舞台上.但是我对它的应用程序大小感到惊讶.它只有5.85 MB.我不确定如何实现这一目标?
任何人都可以帮助我吗?
https://play.google.com/store/apps/details?id=nineNewsAlerts.nine.com
我也很想知道微软是否会采取措施来改善应用包的尺寸?或者,如果他们将.NET核心带到xamarin,这会得到解决吗?
小智 11
Xamarin Android APK文件的大小比平常大,因为它们包含Xamarin库,可将C#代码转换为Java代码,在Android OS中运行.
使用以下选项,您可以减小APK大小:
这是一个打印屏幕示例:
这是来自 Google Play 控制台的 Xamarin.Forms 应用程序大小的统计信息。一旦我认真对待这个主题并远离默认的 Xamarin 设置,您就可以看到它下降了多少:
除了在谷歌搜索主题时通常会发现的措施(链接、关注自己的资源、每个 ABI 的 APK 等),这里有一些我自己的发现和怪癖:
启用 aapt2打包程序仅为 App Compat 库资源(Xamarin.Forms 引用和包含的资源)减少约 1MB。如果你有很多自己的资源,可能会给更多。您可以通过在 Android 的 .csproj 文件中使用以下额外参数,让 aapt2 进一步剥离资源:
Run Code Online (Sandbox Code Playgroud)<PropertyGroup> <AndroidUseAapt2>true</AndroidUseAapt2> <AndroidAapt2LinkExtraArgs>--no-version-vectors -c en-rUS</AndroidAapt2LinkExtraArgs> </PropertyGroup>
打开 D8 和 R8为小型 Xamarin.Forms 应用程序(项目选项 -> Android 选项或 .csproj)提供了大约 1MB 的空间
Run Code Online (Sandbox Code Playgroud)<PropertyGroup> <AndroidDexTool>d8</AndroidDexTool> <AndroidLinkTool>r8</AndroidLinkTool> </PropertyGroup>
与更新的版本(例如 1.68.0)相比,SkiaSharp 1.60.3为每个架构提供了约 2MB 的经济性。值得留意依赖项及其版本使您的 APK 膨胀。
禁用 AoT(如果您之前启用了它,默认情况下它是关闭的)可以轻松地将您的应用程序大小减少一半。开启 Ahead-of-Time 复杂功能可能是提高应用程序启动性能的故意步骤。有一个明显的权衡,要么你使用 AoT 并拥有巨大的应用程序大小,要么你没有它并在应用程序启动缓慢时保持最小的大小。决定权衡时要考虑的要点之一......大多数 ASO 文章(以及 Google Play 控制台)都提到应用小尺寸以增加安装转化率是多么重要。很明显,在浏览 Google Play 时显示的是应用下载大小,而不是应用启动时间。
调整 AoT以最小化其占用空间,在 .csproj 中为您的发布配置添加以下内容:
Run Code Online (Sandbox Code Playgroud)<PropertyGroup> <AotAssemblies>true</AotAssemblies> <AndroidAotAdditionalArguments>no-write-symbols,nodebug</AndroidAotAdditionalArguments> </PropertyGroup>
做部分 AoT。默认情况下,AoT 会检查项目解析的所有程序集,并在 APK 的 /lib 目录中添加 30 多个 .so 文件。有许多应用程序兼容库、BCL 和系统库。人们可能希望控制哪些程序集要通过 AoT,哪些程序集要忽略,以便在性能和应用程序大小之间找到一个最佳点。好吧,没有标准功能这样的东西(至少我没有找到)。你可以通过对Xamarin.Android.Common.targets进行更改来体验Xamarin 构建过程- 你可以在此处找到有关此过程的一些见解。我通过 AoT 仅使用三个库(1 个我自己的 XF 共享 UI 库和 2 个 XF 库)找到了我的中庸之道:
<_ResolvedUserAssemblies2 Include="Tmp/android/assets/Xamarin.Forms.Core.dll;Tmp/android/assets/Saplin.CPDT.UICore.dll;Tmp/android/assets/Xamarin.Forms.Platform.Android.dll;" />
PS:启用链接(SDK 和用户程序集)- 如果您广泛使用 XAML 和绑定,您会发现应用程序损坏的可能性为 90%。将您自己的库添加到链接器异常 - 承载您的 UI、您创建的任何类库以及可能使用反射的 XF 类库。
PPS:通过我的缩小工作、部分 AoT 和使用异步/延迟 Xamarin.Forms UI 加载(这里和这里)我实现了应用程序大小的显着减小(见上图),应用程序启动时间显着改进(在诺基亚 N1 上测量到亚行):
Pra*_*rya -1
我理解您在创建移动应用程序时遇到的问题,您总是希望创建小尺寸的 apk 文件,以便用户轻松下载和使用。为此,请尝试减少项目中的代码重复并减小所有图像的大小。使用以下步骤,它将帮助您减小 apk 的大小。右键单击机器人属性。打开 Android 选项 -> 单击打包,然后选中为每个选定的 ABI 生成一个包 (.apk)。还要检查 Multi-Dex 和 proguard 选项。现在转到“链接器”选项,在“链接”下拉列表下选择“仅 SDK 程序集”。现在转到“高级”选项卡 - 检查“支持的架构”下的所有选项。保存所有设置并使您的项目保持在发布模式干净并构建您的项目,然后您可以创建减小大小的 apk 文件。使用以下链接了解更多信息。
http://motzcod.es/post/112072508362/how-to-keep-your-android-app-size-down
| 归档时间: |
|
| 查看次数: |
3979 次 |
| 最近记录: |