Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android xamarin的shrinkresource、proguard等公司不';不要缩小我的应用程序大小_Android_Xamarin_Proguard_Publishing_Shrinkresources - Fatal编程技术网

Android xamarin的shrinkresource、proguard等公司不';不要缩小我的应用程序大小

Android xamarin的shrinkresource、proguard等公司不';不要缩小我的应用程序大小,android,xamarin,proguard,publishing,shrinkresources,Android,Xamarin,Proguard,Publishing,Shrinkresources,在android studio的build.gradle文件中,我们可以使用shrinkresources设置为true来缩小我们的应用程序。也可以使用minifyenabled和proguard选项 但在xamarin中,我如何使用这些选项 我在我的应用程序中使用了xamarin文档中提到的proguard,但没有发现任何用途(我的意思是我的应用程序大小没有减少)。我的简单应用程序大小约为18Mb。如果有人有在xamarin中使用proguard的经验,请在此处粘贴一个示例文件,并解释您是如何

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

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


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

Proguard只能在APK包含大量未使用的类(例如,由于库而包含)时减少APK大小。因此,它只能减少APK中
classes.dex
文件的大小。 然而,APK通常包含大量其他文件——Proguard不会触及这些文件


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

我知道您特别询问Android Studio的proguard和minifyenabled功能,但是如果您的目的是专门减少应用程序的大小,您应该这样做

  • 右键单击android项目
  • 在“构建”下选择“Android构建”(或“iOS构建”)
  • 选择“链接器行为”下拉列表中的“链接所有”
  • 确保这仅适用于发布或特殊配置,具体取决于您的分发策略

    链接器配置工作流:

  • 在物理设备上运行应用程序以获得所需配置(发布/临时)
  • 测试功能,直到出现“TypeInitializationException”或类似异常
  • 将类型/字段/方法添加到配置文件中
  • 冲洗并重复,直到应用稳定
  • 如果您不喜欢配置文件,也可以使用。如果链接器正在剥离某个PCL中无法访问此属性的类,则可以在该PCL中定义自己的名为PreserveAttribute的属性,因为链接器只查找具有该名称的属性,而不需要特定类型的属性

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

    奖金确保在构建选项中选中“去除本机调试符号”。它是默认设置的,但是一些不满的同事可能会取消选中它

    其他资源:


    我没有使用Proguard的经验(因为我无法让它工作,也找不到任何有用的文档),但我有使用链接器的经验。你把它打开了吗?Android Project->Properties->Android Options->Linkerbjut这些方法不会像Android Studio中那样减少应用程序大小。您可以使用zip浏览器打开apk文件,检查哪些文件使用了大部分空间。此外,为每个架构构建不同的apk在一定程度上减少应用程序大小@riyas pk