Xamarin为android 4创建应用程序(VS2017 15.5.5)

时间:2018-01-30 12:53:00

标签: xamarin xamarin.forms xamarin.android

我试图用xamarin创建一个Android应用程序(VS 2017 15.5.5)。默认设置(xamarin跨平台 - 空白app / .net标准,针对android 7)生成可以通过实时播放器部署的项目,但构建过程会生成错误

Error The "ResolveLibraryProjectImports" task failed unexpectedly.
System.IO.FileNotFoundException: Could not load assembly 'XamTest, Version=0.0.0.0, Culture=neutral, PublicKeyToken='. Perhaps it doesn't exist in the Mono for Android profile?
File name: 'XamTest.dll'
....
....

我的目标是为android 4(4.0.3 / 4.1)及更高版本创建android应用程序,但是在项目属性中更改设置(目标框架+最小版本+目标android版本全部设置为4.1)会导致15这类错误:

Error: NU1202 Package Xamarin.Android.Support.v7.MediaRouter 25.4.0.2 is not compatible with monoandroid41 (MonoAndroid,Version=v4.1). Package Xamarin.Android.Support.v7.MediaRouter 25.4.0.2 supports: monoandroid70 (MonoAndroid,Version=v7.0)               
Error: No resource found that matches the given name: attr 'colorAccent'.   XamTest.Android C:\Dev\XamTest\XamTest\XamTest.Android\Resources\values\styles.xml

所以我删除了NuGet包管理器中的所有支持库,一些未定义的样式和两个预生成的xaml文件(工具栏,任务栏)。现在我有38个这种类型的错误

\Dev\XamTest\XamTest\XamTest.Android\obj\Debug\resourcecache\96A6E7245B001AFA9465D8F3C01B0DCD\res\layout\notification_template_big_media.xml:42: error: No resource identifier found for attribute 'layoutDirection' in package 'android'   XamTest.Android C:\Dev\XamTest\XamTest\XamTest.Android\C        

和一个错误

Error NU1202 Package Xamarin.Android.Support.Design 23.3.0 is not compatible with monoandroid41 (MonoAndroid,Version=v4.1). Package Xamarin.Android.Support.Design 23.3.0 supports: monoandroid43 (MonoAndroid,Version=v4.3)                

没有支持库链接(只有xamarin.forms)所以我不明白Suppurt.Design来自哪里......

我花了两天时间阅读,阅读文档,教程等,但我还没有找到合适的答案。那么,有没有简单的方法来设置针对Android 4.1的Android项目?

谢谢。

1 个答案:

答案 0 :(得分:4)

最新版本的Forms需要针对Android 8.0进行编译(至少)。要针对API级别15 编译,您需要使用非常旧版本的表单。

相反,编译最新的API并设置你的分钟。并将API级别定为4.0.3

General设置下,设置目标框架:

  • 目标框架:Use Latest installed platform (8.1)

在Android应用程序下:

  • 最小Android版:Override - Android 4.0.3 (API level 15)

  • 目标Android版本:Override - Android 4.0.3 (API level 15)

这导致清单包括:

<uses-sdk android:minSdkVersion="15" android:targetSdkVersion="15" />

注意:您需要针对Android 4.0.3设备/ emualtor进行测试,以确保您没有使用Android SDK的更高版本中的API。