1

在 android studio 的build.gradle文件中,我们可以使用shrinkresourcesset totrue来缩小我们的应用程序。也可以使用minifyenabledproguard选项。

但是在 xamarin 中,我该如何使用这些选项?

我在我的应用程序中使用了 xamarin doc 中提到的 proguard。但没有发现它的任何用途(我的意思是我的应用程序大小没有减小)。我的简单应用程序的大小约为 18Mb。如果有人有使用经验xamarin 中的 proguard,请在此处粘贴示例文件,并说明您是如何完成此操作的。因此其他人也可以从中受益。

4

2 回答 2

1

我知道您专门询问了 Android Studio 的 proguard 和 minifyenabled 功能,但如果目的是专门减少应用程序的大小,您应该配置更积极的链接策略

  1. 右键单击android项目
  2. 在“Build”下选择“Android Build”(或“iOS Build”)
  3. 为“链接器行为”下拉菜单选择“链接全部”

确保这仅适用于 Release 或 Ad-Hoc 配置,具体取决于您的分发策略。

链接器配置工作流程:

  1. 在物理设备上运行应用程序以获得所需的配置(发布/临时)
  2. 测试功能,直到出现“TypeInitializationException”或类似异常
  3. 将类型/字段/方法添加到配置文件
  4. 冲洗并重复,直到应用稳定

如果您不喜欢配置文件,也可以使用PreserveAttribute。如果链接器正在剥离您的一个 PCL 中无权访问此属性的类,您可以在该 PCL 中定义自己的属性,称为 PreserverAttribute,因为链接器只是在寻找具有该名称的属性,而不需要具体类型。

链接器通过分析代码路径并删除它认为未使用的引用来工作。如果您使用依赖注入,链接器将无法理解它需要保留哪些引用,因此这可能需要一些时间,但它可以大大减少您的应用程序的大小,您只需执行一次。对于 iOS,您也可以按照上述相同的步骤进行操作。

奖励确保在构建选项中选中“剥离本机调试符号”。它默认设置,但一些心怀不满的同事可能没有选中它。

其他资源:
iOS 上的链接

在安卓上链接

于 2016-06-13T21:04:11.210 回答
1

Proguard 只有在 APK 包含大量未使用的类(例如,由于库而包含在内)时才能减小 APK 大小。因此,它只能减小classes.dexAPK 中文件的大小。然而,一个 APK 通常包含大量其他文件 - Proguard 不会触及它们。

您应该在 ZIP 查看器中打开生成的 APK 文件并查看哪些元素占用了空间。如果是classes.dex文件,它只是 Proguard 配置的问题。

于 2016-06-13T16:19:08.070 回答