使用英语阅读

通过


适用于 Android 的 .NET 警告 XA1027

示例消息

warning XA1027: The 'EnableProguard' MSBuild property is set to 'true' and the 'AndroidLinkTool' MSBuild property is empty, so 'AndroidLinkTool' will default to 'proguard'.
error XA1011: Using ProGuard with the D8 DEX compiler is no longer supported. Please set the code shrinker to 'r8' in the Visual Studio project property pages or edit the project file in a text editor and set the 'AndroidLinkTool' MSBuild property to 'r8'.

问题

该项目当前配置为使用 D8 DEX 编译器,并且已将较旧的 EnableProguard MSBuild 属性设置为 true 不为较 AndroidLinkTool 新的 MSBuild 属性设置任何值。 这会导致 XA1011 错误,因为 ProGuard 代码收缩器不再与 D8 DEX 编译器兼容。

解决方案

  1. 在 Visual Studio 或其他文本编辑器中编辑项目文件并删除所有旧<EnableProguard>元素。

  2. 保存项目文件后,像往常一样在 Visual Studio 中打开它,并将 Visual Studio 项目属性页中的 Code 收缩器设置为 r8,或继续编辑文本编辑器中的项目文件并将 MSBuild 属性设置为AndroidLinkToolr8

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
      <AndroidLinkTool>r8</AndroidLinkTool>
    </PropertyGroup>
    

在某些情况下,R8 可能会生成与 ProGuard 相比的新生成警告或错误,因此项目的 ProGuard 规则可能需要一些更新来解决此更改后出现的任何新警告或错误。