【问题标题】:Xamarin missing resources after migration迁移后 Xamarin 缺少资源
【发布时间】:2016-12-13 15:37:48
【问题描述】:

将 MacOs X 升级到 Sierra 后,我在构建解决方案时遇到了一些问题。

这个问题与资源文件有关,我得到了 16 个错误,例如:

 Error: Resource.Drawable does not contain a definition for "abc_ratingbar_full_material" 

同样适用于:

abc_search_view_text_min_width
abc_btn_rating_star_off_mtrl_alpha
abc_btn_rating_star_on_mtrl_alpha
abc_dialog_material_background_dark
abc_dialog_material_background_light
abc_ic_ab_back_mtrl_am_alpha
abc_ic_clear_mtrl_alpha
abc_ic_go_search_api_mtrl_alpha
abc_ic_menu_moreoverflow_mtrl_alpha
abc_ic_search_api_mtrl_alpha
abc_ic_voice_search_api_mtrl_alpha

Package.config:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="AndroidEasingFunctions" version="1.0.2.0" targetFramework="MonoAndroid60" />
  <package id="AutoFitTextView" version="0.2.1.0" targetFramework="MonoAndroid60" />
  <package id="Bolts" version="1.4.0.1" targetFramework="monoandroid70" />
  <package id="HtmlAgilityPack" version="1.4.9.5" targetFramework="monoandroid70" />
  <package id="Newtonsoft.Json" version="9.0.1" targetFramework="monoandroid70" />
  <package id="NineOldAndroids" version="2.4.0" targetFramework="MonoAndroid60" />
  <package id="RecyclerViewAnimators" version="2.1.0.0" targetFramework="MonoAndroid60" />
  <package id="Refractored.PagerSlidingTabStrip" version="1.1.6" targetFramework="monoandroid70" />
  <package id="SharpZipLib.Portable" version="0.86.0.0003" targetFramework="MonoAndroid50" />
  <package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Compat" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Core.UI" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Core.Utils" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.CustomTabs" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Design" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Fragment" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Media.Compat" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.v4" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.v7.AppCompat" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.v7.CardView" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.v7.RecyclerView" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Android.Support.Vector.Drawable" version="24.2.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Facebook.Android" version="4.16.1" targetFramework="monoandroid70" />
  <package id="Xamarin.Firebase.Common" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.Ads" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.Ads.Lite" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.Analytics" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.Analytics.Impl" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.AppIndexing" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.Base" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.Basement" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.Clearcut" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.Gass" version="32.961.0" targetFramework="monoandroid70" />
  <package id="Xamarin.GooglePlayServices.Tasks" version="32.961.0" targetFramework="monoandroid70" />
</packages>

这怎么可能?可能是我缺少对某些东西的引用吗?

【问题讨论】:

  • 在 Android SDK 管理器中将 Android SDK 工具、SDK 平台和(在 Extras 中)Android 支持存储库更新到最新版本。如果这没有帮助,请添加到您的 NuGet 参考问题列表(packages.config 文件)
  • 已更新,没有变化。添加了 packages.config

标签: xamarin xamarin.android android-resources


【解决方案1】:

这取决于支持库的版本。任何 25.0.1 都会下载缓存并使用它而不是本地 SDK 下载,所以请记住这一点(因为它需要 Xamarin.Build.Download 的依赖项)。因此,由于您正在使用24.2.1 支持库下载缓存,因此您需要阅读并查看支持库之间的更改差异。例如,这是您的确切问题:

https://developer.android.com/sdk/support_api_diff/23.2.0/changes/android.support.v7.appcompat.R.drawable.html

这演示了23.1.123.2.0 之间的变化。

显示以下字段已删除:

int abc_btn_check_to_on_mtrl_000     
int abc_btn_check_to_on_mtrl_015     
int abc_btn_radio_to_on_mtrl_000     
int abc_btn_radio_to_on_mtrl_015     
int abc_ic_ab_back_mtrl_am_alpha     
int abc_ic_clear_mtrl_alpha  
int abc_ic_go_search_api_mtrl_alpha  
int abc_ic_menu_copy_mtrl_am_alpha   
int abc_ic_menu_cut_mtrl_alpha   
int abc_ic_menu_moreoverflow_mtrl_alpha  
int abc_ic_menu_paste_mtrl_am_alpha  
int abc_ic_menu_selectall_mtrl_alpha     
int abc_ic_menu_share_mtrl_alpha     
int abc_ic_voice_search_api_mtrl_alpha

您可以注意到,您的一些问题资源在此列表中。这意味着您的项目中可能存在依赖于支持库23.1.1 的依赖项,并且不支持您当前安装的24.2.1。因此,您必须找出有问题的软件包并对其进行更新,或者要求维护者对其进行更新以确保兼容性。

【讨论】:

  • 我更新了所有内容,但仍然遇到同样的问题。我怎样才能找到依赖它的包?与“删除、重构、尝试”有什么不同吗?
  • 您可以使用 dotPeek 或查看该包的 Nuget 页面以查看其依赖项。
  • 稍微推动一下,寻找一个可能依赖于Xamarin.Android.Support.v7.AppCompat 的库。我相信,如果您要双击原始错误消息,它应该会将您带到 Resources.designer.cs 并告诉您该资源可能来自哪里。
猜你喜欢
  • 2020-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多