在 android studio 的 build.gradle 文件中,我们可以使用 shrinkresources
设置为 true
来缩小我们的应用程序。也可以使用 minifyenabled
和 proguard
选项也是如此。
但是在 xamarin 中,我如何使用这些选项?
我在我的应用程序中使用了混淆器,因为它在 xamarin 文档中提到。但没有找到任何用途(我的意思是我的应用程序大小没有减少)。我的简单应用程序大小约为 18Mb。如果有人有在 xamarin 中使用 proguard 的经验,请在此处粘贴示例文件并说明您是如何完成此操作的。这样其他人也可以受益。
最佳答案
我知道您具体询问的是 Android Studio 的 proguard 和 minifyenabled 功能,但如果目的是专门减小应用程序的大小,您应该 configure a more aggressive linking strategy .
- 右键点击android项目
- 在“构建”下选择“Android 构建”(或“iOS 构建”)
- 为“链接器行为”下拉列表选择“全部链接”
确保这仅适用于 Release 或 Ad-Hoc 配置,具体取决于您的分发策略。
链接器配置工作流程:
- 在物理设备上运行应用以获得所需的配置(发布/临时)
- 测试功能直到出现“TypeInitializationException”或类似异常
- 在配置文件中添加类型/字段/方法
- 冲洗并重复直到应用稳定
如果你不喜欢配置文件,你也可以使用PreserveAttribute .如果链接器正在剥离您的一个 PCL 中无权访问此属性的类,您可以在该 PCL 中定义您自己的名为 PreserverAttribute 的属性,因为链接器只是在寻找具有该名称的属性,而不是具体类型。
链接器通过分析代码路径并删除它认为未使用的引用来工作。如果您使用依赖注入(inject),链接器将无法理解它需要保留哪些引用,因此这可能需要一些时间,但它可以大大减少应用程序的大小,而且您只需执行一次。对于 iOS,您也可以按照上述相同步骤操作。
Bonus 确保在构建选项中选中“Strip native debugging symbols”。它是默认设置的,但一些心怀不满的同事可能没有选中它。
其他资源:
Linking on iOS
关于android - xamarin 中的 shrinkresource、proguard 等不会减小我的应用程序大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37792219/