我有一个通过构建服务器构建的Xamarin.Android应用程序。该应用程序的目标是API Level 23和Min Android Version 4.1(API 16)。在调试期间,应用程序工作正常,但是当构建服务器编译应用程序,打包它,签名并对齐它时,它会在加载时因错误而崩溃:
无法获取提供者mono.MonoRuntimeProvider:java.lang.RuntimeException:无法找到应用程序Mono.Android.Platform.ApiLevel_23或Xamarin.Android.Platform
大多数手机都会因上述错误而立即崩溃,但少数设备可以正常工作。这些设备唯一的共同点是它们用于在开发期间部署应用程序。这让我相信他们已经安装了共享运行时,因此它没有失败。构建服务器具有最新的Xamarin.Android(就像开发机器),最新的Java,最新的JDK和最新的Android库(根据SDK Manager)。正在构建的配置不使用共享运行时,它不是链接(虽然我也只尝试链接SDK程序集),它只支持armeabi-7va
ABI。
我做错了什么?
答案 0 :(得分:2)
我终于找到了问题,这似乎是Xamarin(或Mono?)的错误。我们有AndroidManifest.xml和AndroidManifestAlpha.xml。在构建期间,我们为MSBUILD参数指定/p:AndroidManifest=Properties/AndroidManifestAlpha.xml
,但编译仅将所有活动,服务和单声道信息添加到AndroidManifest.xml
文件。构建最终使用指定的AndroidManifestAlpha.xml
文件,并在没有单声道运行时的情况下编译APK;导致上述错误。
答案 1 :(得分:0)
更改目标Android版本。在Mac上的VisualStudio中,路径为Project-> .Options-> General-> TargetFramework。
答案 2 :(得分:0)
如果有人发现此错误,请在另一篇文章中检查我的答案:
https://stackoverflow.com/a/52678522/1106547
它适用于Xamarin Studio,但我想也应该适用于VS Xamarin扩展。
在我的案例中,主要想法是将 android-25 (或对于原始问题而言为 android-23 )文件夹放入Android SDK 平台目录。
我想它允许Xamarin引擎安装正确的“ .. Platform.ApiLevel _” APK并使用共享库。