xamarin中的shrinkresource,proguard等并没有减少我的应用程序大小

时间:2016-06-13 14:22:50

标签: android xamarin proguard publishing shrinkresources

在android studio的 build.gradle 文件中,我们可以使用shrinkresources设置为true来缩小我们的应用。还可以使用minifyenabledproguard选项。

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

我在我的应用程序中使用proguard,因为它在xamarin doc中引用。但是没有找到任何使用它(我的意思是我的应用程序大小没有减少)。我的简单应用程序大约有18Mb in如果有人在xamarin中使用proguard,请在此处粘贴一个示例文件,并解释您是如何完成此操作的。其他人也可以从中受益。

2 个答案:

答案 0 :(得分:1)

如果它包含大量未使用的类(例如因为库而包含),Proguard只能减小APK大小。因此,它只能减少APK中classes.dex文件的大小。 然而,APK通常包含大量其他文件 - Proguard不会触及它们。

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

答案 1 :(得分:1)

我知道您具体询问Android Studio的proguard和minifyenabled功能,但如果意图专门用于减小应用程序的大小,则应configure a more aggressive linking strategy

  1. 右键单击android项目
  2. 在“Build”下选择“Android Build”(或“iOS Build”)
  3. 为“链接器行为”下拉列表选择“全部链接”
  4. 确保这仅适用于Release或Ad-Hoc配置,具体取决于您的分发策略。

    链接器配置工作流程:

    1. 在物理设备上运行app以进行所需的配置(发布/ Ad-Hoc)
    2. 测试功能直到“TypeInitializationException”或类似的异常发生
    3. 将类型/字段/方法添加到配置文件
    4. 冲洗并重复直至应用稳定
    5. 如果您不喜欢配置文件,也可以使用PreserveAttribute。如果链接器正在剥离其中一个无法访问此属性的PCL中的类,则可以在该PCL中定义自己的属性,称为PreserverAttribute,因为链接器只是查找具有该名称的属性,而不是必需的特定类型。

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

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

      其他资源:
      Linking on iOS

      Linking on Android