必需的Android支持库
套件中的控件需要特定的Xamarin Android支持库才能在Android上正确呈现。
下面列出了使用我们套件的所有Android项目的常见要求:
Xamarin Forms软件包的最低要求版本为3.4。所有Xamarin Android支持库的最低要求版本是27.0.2.1。这里列出了所有包:
Xamarin.Android.Support.v4
Xamarin.Android.Support.Design
Xamarin.Android.Support.v7.AppCompat
Xamarin.Android.Support.v7.CardView
Xamarin.Android.Support.v7.MediaRouter
Xamarin.Android.Support.Vector.Drawable
Xamarin.Android.Support.Animated.Vector.Drawable
Xamarin.Android.Support.v7.RecyclerView
Xamarin.Android.Support.v8.RenderScript
Android项目的目标Android版本应为Android 8.1(API级别27)或更高版本。
必须安装相应的目标Android版Android SDK才能使用所需的支持库(从Android SDK Manager安装)。
遵循这一点仍然收到两个错误:
Error:CS0117
'Resource.Layout' does not contain a definition for 'Tabbar'
'Resource.Layout' does not contain a definition for 'Toolbar'
尝试使用Visual Studio中的Android SDK管理器卸载并重新安装SDK,SDK工具,SDK平台工具,SDK构建工具,Android模拟器,LLDB,NDK,Extras和SDK Patcher Applier v4。
删除bin / obj文件夹,重启VS,清理,重建。
错误仍然存在。如何修复错误CS0117 Xamarin'Source.Layout'不包含'*'的定义?
1> C:\Users\...\MyApp.Android\MainActivity.cs(44,49,44,53): error CS0117: 'Resource.Layout' does not contain a definition for 'Tabbar'
1> C:\Users\...\MyApp.Android\MainActivity.cs(45,47,45,52): error CS0117: 'Resource.Layout' does not contain a definition for 'Toolbar'
protected override void OnCreate(Bundle bundle)
{
_Instance = this;
TabLayoutResource = Resource.Layout.Tabbar; (LINE 44)
ToolbarResource = Resource.Layout.Toolbar; (LINE 45)
base.OnCreate(bundle); (LINE 47)
CrossCurrentActivity.Current.Init(this, bundle); (LINE 49)
global::Xamarin.Forms.Forms.Init(this, bundle);
Metrics = Resources.DisplayMetrics; (LINE 52)
widthInDp = ConvertPixelsToDp(Metrics.WidthPixels); (LINE 53)
heightInDp = ConvertPixelsToDp(Metrics.HeightPixels);
LoadApplication(new App());
}
答案在与Android构建错误相关的各种问题之间有所不同,例如此问题。现在,对我自己来说,修复是撤消对Packages.config
和项目文件本身的所有更改,在我的情况下Android.csproj
。值得一提的是,我看到了一个新的错误:Ambiguity between 'Resource.Layout.Tabbar' and 'Resource.Layout.Tabbar'
(和Toolbar
相同),但它不会阻止构建和部署。
另一个可能的解决方案,注意到Resources.designer.cs
文件夹和Resources
文件夹中都存在Resources\drawable
文件。排除先前似乎已经奏效。不知道为什么有两个。希望这有助于其他人。