无法找到应用程序 Mono.Android.Platform.ApiLevel_23 或 Xamarin.Android.Platform

Unable to find application Mono.Android.Platform.ApiLevel_23 or Xamarin.Android.Platform

我有一个 Xamarin.Android 应用程序正在通过构建服务器构建。该应用程序的目标是 API 级别 23 和最低 Android 版本 4.1 (API 16)。在调试期间,应用程序工作正常,但是当构建服务器编译应用程序、打包、签名和对齐时,它在加载时崩溃并出现错误:

Unable to get provider mono.MonoRuntimeProvider: java.lang.RuntimeException: Unable to find application Mono.Android.Platform.ApiLevel_23 or Xamarin.Android.Platform

大多数手机会立即崩溃并出现上述错误,但少数设备可以正常工作。这些设备唯一的共同点是它们用于在开发期间部署应用程序。这让我相信他们安装了共享 运行 时间,因此它不会失败。构建服务器具有最新的 Xamarin.Android(就像开发机器)、最新的 Java、最新的 JDK 和最新的 Android 库(根据 SDK 管理器)。正在构建的配置不使用共享 运行 时间,它不链接(尽管我也尝试过仅链接 SDK 程序集),并且它仅支持 armeabi-7va ABI。

我做错了什么?

我终于找到了问题,这似乎是 Xamarin(或 Mono?)的错误。我们有 AndroidManifest.xml 和 AndroidManifestAlpha.xml。在构建过程中,我们将 /p:AndroidManifest=Properties/AndroidManifestAlpha.xml 指定给 MSBUILD 参数,但编译会将所有 activity、服务和单声道信息仅添加到 AndroidManifest.xml 文件。构建最终使用指定的 AndroidManifestAlpha.xml 文件并在没有 mono 运行时的情况下编译 APK;导致上面提到的错误。

更改目标 Android 版本。在 Mac 上的 Visual Studio 中,路径为 Project->.Options->General->TargetFramework。

如果有人发现此错误,请检查我在另一个 post 中的答案:

它适用于 Xamarin Studio,但我想应该也适用于 VS Xamarin 扩展。

我的主要想法是 android-25(或 android-23对于原始问题的情况)文件夹到 Android SDK platforms 目录。

我想它允许 Xamarin 引擎安装正确的 "..Platform.ApiLevel_" APK 并使用共享库。