添加Xamarin.Forms.Visual.Material nuget后无法构建XF Android项目

时间:2019-04-04 19:58:45

标签: android xamarin.forms material

我有一个Xamarin Forms项目,现在我想通过新的Visual / Material功能对其进行改进。

在IOS上,它就像一个超级按钮。

在Android上,我遇到一个奇怪的问题:添加Xamarin.Forms.Visual.Material nuget后,我收到奇怪的错误消息,并且我的项目无法构建:

\res\values\values.xml(6): error APT0000: Attribute "statusBarBackground" already defined with incompatible format.
\res\values\values.xml(2): error APT0000: Original attribute defined here.
\res\values\values.xml(10): error APT0000: Attribute "layout_anchorGravity" already defined with incompatible format.
\res\values\values.xml(2): error APT0000: Original attribute defined here.
\res\values\values.xml(17): error APT0000: Attribute "layout_insetEdge" already defined with incompatible format.
\res\values\values.xml(2): error APT0000: Original attribute defined here.
\res\values\values.xml(17): error APT0000: Attribute "layout_dodgeInsetEdges" already defined with incompatible format.
\res\values\values.xml(2): error APT0000: Original attribute defined here.
\res\values\styles.xml(2): error APT0000: Error retrieving parent for item: No resource found that matches the given name 'Theme.MaterialComponents.Light.DarkActionBar'.
\res\values\styles.xml(2): error APT0000: No resource found that matches the given name: attr 'materialButtonStyle'.
\res\values\styles.xml(2): error APT0000: Error retrieving parent for item: No resource found that matches the given name 'Widget.MaterialComponents.Button'.
\res\values\styles.xml(2): error APT0000: Error retrieving parent for item: No resource found that matches the given name 'Widget.MaterialComponents.Button.OutlinedButton'.
\res\values\styles.xml(2): error APT0000: Error retrieving parent for item: No resource found that matches the given name 'Widget.MaterialComponents.TextInputLayout.FilledBox'.
\res\values\styles.xml(2): error APT0000: No resource found that matches the given name: attr 'boxCollapsedPaddingTop'.

我在Windows上使用Visual Studio 2017 Professional,我不使用任何预发行的nuget。

Xamarin.Forms版本是3.6.0.293080。 最低Android API级别为21,目标值为28,并使用28进行编译。 Xamarin Android支持库版本为28.0.0.1。

我尝试了通常的技巧(删除bin,obj dir,重新启动Visual Studio,在管理模式下运行,删除Xamarin应用数据...),但都没有帮助。

如果我从schratch创建一个新项目,并且不做任何事情,只需将visual.material nuget添加到Android项目中,就会发生同样的事情。

您有什么建议吗?非常感谢!

2 个答案:

答案 0 :(得分:4)

几天前我遇到了同样的问题,我首先将TargetFramework设置为Android 8.1,安装了相同的程序包,然后将其更改为Android9并安装了新程序包。

Xamarin.Forms.Visual.Material要求在Android项目选项中设置Android 9,并且您之前已经为Android 8.1配置并安装了nuget软件包。

如果您仍然像我一样使用旧的packages.config添加NuGet程序包,请确保您始终在csproj的提示路径中看到相同的monodroid字符串,并且不要将81与90混合使用,并且始终具有 monoandroid90 < / strong>。

<Reference Include="Xamarin.Forms.Visual.Material , Version=3.6.0.293080, Culture=neutral, processorArchitecture=MSIL">
     <HintPath>..\..\packages\Xamarin.Forms.Material.3.6.0.293080\lib\monoandroid90\Xamarin.Forms.Material.dll</HintPath>
</Reference>

答案 1 :(得分:0)

我在github上找到了这个答案:

将Package.json文件迁移到PackageReference以解决问题。

1-在Android项目中的packages.config上单击鼠标右键

2-单击Migration Package.config到PackageReference

3-接受

4-运行项目

参考:https://github.com/xamarin/Xamarin.Forms/issues/5828

我还使用Nuget更新了引用,完成了一个干净的操作,删除了obj和bin fonder,然后进行了构建。