【发布时间】:2015-10-08 23:02:50
【问题描述】:
我刚刚更新到支持 Android API 23(6.0) 的稳定 Xamarin.Android(5.1.7.12)。
我已将我的 TargetFrameworkVersion 更新到 v6.0 (API 23),并将我的所有支持库更新到版本 23.0.1.1(当时可用的最新 NuGet 包)。我已经下载了编译到 API23 所需的所有内容(Android SDK Manager 中的 SDK 和 BuildTools)。
当我尝试编译这个项目时,我得到了这个错误:
...
...\obj\Debug\resourcecache\983D70AD6A5CC1E0AF6E3C8A8BE731EB\res\values\values.xml(10): error APT0000: Attribute "cardBackgroundColor" has already been defined
...\obj\Debug\resourcecache\983D70AD6A5CC1E0AF6E3C8A8BE731EB\res\values\values.xml(10): error APT0000: Attribute "cardCornerRadius" has already been defined
...\obj\Debug\resourcecache\983D70AD6A5CC1E0AF6E3C8A8BE731EB\res\values\values.xml(10): error APT0000: Attribute "cardElevation" has already been defined
...\obj\Debug\resourcecache\983D70AD6A5CC1E0AF6E3C8A8BE731EB\res\values\values.xml(10): error APT0000: Attribute "cardMaxElevation" has already been defined
...\obj\Debug\resourcecache\983D70AD6A5CC1E0AF6E3C8A8BE731EB\res\values\values.xml(10): error APT0000: Attribute "cardUseCompatPadding" has already been defined
...\obj\Debug\resourcecache\983D70AD6A5CC1E0AF6E3C8A8BE731EB\res\values\values.xml(10): error APT0000: Attribute "cardPreventCornerOverlap" has already been defined
...\obj\Debug\resourcecache\983D70AD6A5CC1E0AF6E3C8A8BE731EB\res\values\values.xml(10): error APT0000: Attribute "contentPadding" has already been defined
...\obj\Debug\resourcecache\983D70AD6A5CC1E0AF6E3C8A8BE731EB\res\values\values.xml(10): error APT0000: Attribute "contentPaddingLeft" has already been defined
...\obj\Debug\resourcecache\983D70AD6A5CC1E0AF6E3C8A8BE731EB\res\values\values.xml(10): error APT0000: Attribute "contentPaddingRight" has already been defined
...\obj\Debug\resourcecache\983D70AD6A5CC1E0AF6E3C8A8BE731EB\res\values\values.xml(10): error APT0000: Attribute "contentPaddingTop" has already been defined
...\obj\Debug\resourcecache\983D70AD6A5CC1E0AF6E3C8A8BE731EB\res\values\values.xml(10): error APT0000: Attribute "contentPaddingBottom" has already been defined
由于这些都与 CardView 有关,我尝试删除与 CardView 相关的所有内容(包括 CardView 的支持包),然后编译并运行所有内容,但我需要 CardView...
我还需要做些什么来支持带有支持库 23 的 CardView 吗?
这是 CardView 的一个已知问题(与 Xamarin 无关),还是 Xamarin 的错误?当我使用第 22 版时,一切正常。
.
更新: 只是为了清除我的场景,我使用的是 Visual Studio 2015,而我的项目不是 Xamarin.Forms,它使用的是 MvvmCross(3.5.1,来自 NuGet 稳定版)。
我有另一个项目(一个编译的、Release/AnyCPU、DLL,不是通过 VS 的项目引用),我依赖它并使用 Xamarin.Android.Support.v4 和 Xamarin.Android.Support.v7.AppCompat,但是没有参考 CardView。它们只是我在开发的许多项目中重复使用的一堆自定义类。
我已将两个 NuGet 包(v4 和 v7 AppCompat)更新到我的项目使用的相同版本 (23.0.1.1)。他们都在使用唯一的 android_m2repository_r20.zip 文件(提取和全部)。 我尝试清理解决方案,删除所有项目(包括引用的 DLL)上的 bin/obj,并删除下载了 android_m2repository_r20.zip(133MB)的 %LocalAppData%\Xamarin\Local\Android.Support.*,文件四次(第四个是 RecyclerView,我只在这个项目中引用)。我不知道为什么这些文件没有缓存在同一个地方,因为它们完全相同,但这不是问题。
我还在使用 GooglePlay 服务(仅 Base 和 Analytics,版本均为 26.0.0.0)、Xamarin.Facebook.Android(4.6.0.0)、Parse(1.6.0) 和 OxyPlot(最新 alpha)。澄清一下,这是我的 packages.config 文件:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.Bcl" version="1.1.10" targetFramework="MonoAndroid50" />
<package id="Microsoft.Bcl.Build" version="1.0.21" targetFramework="MonoAndroid50" />
<package id="Microsoft.Net.Http" version="2.2.29" targetFramework="MonoAndroid50" />
<package id="MvvmCross.HotTuna.CrossCore" version="3.5.1" targetFramework="MonoAndroid50" />
<package id="MvvmCross.HotTuna.Droid.Fragging" version="3.5.1" targetFramework="MonoAndroid50" />
<package id="MvvmCross.HotTuna.MvvmCrossLibraries" version="3.5.1" targetFramework="MonoAndroid50" />
<package id="MvvmCross.HotTuna.Plugin.Color" version="3.5.1" targetFramework="MonoAndroid50" />
<package id="MvvmCross.HotTuna.Plugin.DownloadCache" version="3.5.1" targetFramework="MonoAndroid50" />
<package id="MvvmCross.HotTuna.Plugin.File" version="3.5.1" targetFramework="MonoAndroid50" />
<package id="MvvmCross.HotTuna.Plugin.Json" version="3.5.1" targetFramework="MonoAndroid50" />
<package id="MvvmCross.HotTuna.Plugin.Messenger" version="3.5.1" targetFramework="MonoAndroid50" />
<package id="MvvmCross.HotTuna.Plugin.PictureChooser" version="3.5.1" targetFramework="MonoAndroid50" />
<package id="MvvmCross.HotTuna.Plugin.Visibility" version="3.5.1" targetFramework="MonoAndroid50" />
<package id="MvvmCross.HotTuna.Plugin.WebBrowser" version="3.5.1" targetFramework="MonoAndroid50" />
<package id="MvvmCross.PortableSupport" version="3.5.1" targetFramework="MonoAndroid50" />
<package id="Newtonsoft.Json" version="7.0.1" targetFramework="MonoAndroid50" />
<package id="OxyPlot.Core" version="2015.1.744-alpha" targetFramework="MonoAndroid50" />
<package id="OxyPlot.Mobile" version="2015.1.744-alpha" targetFramework="MonoAndroid50" />
<package id="Parse" version="1.6.0" targetFramework="monoandroid5" />
<package id="Xamarin.Android.Support.v4" version="23.0.1.1" targetFramework="monoandroid6" />
<package id="Xamarin.Android.Support.v7.AppCompat" version="23.0.1.1" targetFramework="monoandroid6" />
<package id="Xamarin.Android.Support.v7.CardView" version="23.0.1.1" targetFramework="monoandroid6" />
<package id="Xamarin.Android.Support.v7.RecyclerView" version="23.0.1.1" targetFramework="monoandroid6" />
<package id="Xamarin.Facebook.Android" version="4.6.0.0" targetFramework="monoandroid51" />
<package id="Xamarin.GooglePlayServices.Analytics" version="26.0.0.0" targetFramework="monoandroid51" />
<package id="Xamarin.GooglePlayServices.Base" version="26.0.0.0" targetFramework="monoandroid51" />
</packages>
【问题讨论】:
标签: android xamarin android-support-library android-cardview