通过标准模板与 Prism 模板创建 Xamarin Forms 项目时出现资源错误

Resource Error When Creating Xamarin Forms Project Via Standard Template Versus Prism Template

昨天下午,我使用 标准 空白模板创建了一个 Xamarin 表单项目。

当我尝试将项目部署到 Android 模拟器 运行ning 版本 4.4 时,抛出以下异常:

Android.Content.Res.Resources+NotFoundException: 'File res/drawable/abc_vector_test.xml from drawable resource ID #0x7f070059'

这发生在 Android 项目的 MainActivity.cs 中的代码 base.OnCreate(savedInstanceState); 行。

论坛 post (here) 似乎表明这是由 Android 不受支持的(旧)版本引起的。这似乎是合理的,因为如果我 运行 该应用程序在更高版本上它会起作用。我的理解是 4.4 仍然受支持,所以我不确定问题出在哪里。我在这个论坛上发表了评论 post 但不确定是否有人会看到它,因为它被标记为已解决。

我用 Prism 标签标记了这个问题,但这不是 Prism 问题。我想也许来自 Prism 领域的人可以告诉我自从 Prism 模板工作以来发生了什么。

经过一些研究,我发现 Xamarin.Andorid release note 中列出了一个已知问题:

GitHub 3314:“Java.Lang.Exception: android.content.res.Resources$NotFoundException: File res/drawable/abc_vector_test.xml from drawable resource ID #0x7f080058”将在 Android 4.4 KitKat(API 19 级)或更低[=34= 上中止应用程序执行] 对于使用 Android 支持库的 AAPT2 构建的应用程序。

解决方法:

--no-version-vectors 选项添加到 .csproj 文件中的 $(AndroidAapt2LinkExtraArgs) MSBuild 属性:

XML

<PropertyGroup>
    <AndroidAapt2LinkExtraArgs>--no-version-vectors</AndroidAapt2LinkExtraArgs>
</PropertyGroup>

然后清理并重建项目。

关注Github跟帖或新版本说明查看此问题的处理过程:xamarin/xamarin-android/pull