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

时间:2017-02-15 07:34:39

标签: xamarin.android xamarin.forms

我在应用程序发布时在三星Galaxy手机上的Xamarin.Forms Android应用程序(所有最新的SDK)中得到了该异常。

  

2-15 01:49:56.431 29826 29826 D AndroidRuntime:关闭VM 02-15   01:49:56.431 29826 29826 E AndroidRuntime:致命异常:主02-15   01:49:56.431 29826 29826 E AndroidRuntime:流程:   com.rolsped.stage.TruckerApp,PID:29826 02-15 01:49:56.431 29826   29826 E AndroidRuntime:java.lang.RuntimeException:无法获取   provider mono.MonoRuntimeProvider:java.lang.RuntimeException:Unable   找到应用程序Mono.Android.Platform.ApiLevel_24或   Xamarin.Android.Platform! 02-15 01:49:56.431 29826 29826 E.   AndroidRuntime:at   android.app.ActivityThread.installProvider(ActivityThread.java:6770)   02-15 01:49:56.431 29826 29826 E AndroidRuntime:at   android.app.ActivityThread.installContentProviders(ActivityThread.java:6362)   02-15 01:49:56.431 29826 29826 E AndroidRuntime:at   android.app.ActivityThread.handleBindApplication(ActivityThread.java:6302)   02-15 01:49:56.431 29826 29826 E AndroidRuntime:at   android.app.ActivityThread.access $ 1800(ActivityThread.java:222)02-15   01:49:56.431 29826 29826 E AndroidRuntime:at   android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1861)   02-15 01:49:56.431 29826 29826 E AndroidRuntime:at   android.os.Handler.dispatchMessage(Handler.java:102)02-15   01:49:56.431 29826 29826 E AndroidRuntime:at   android.os.Looper.loop(Looper.java:158)02-15 01:49:56.431 29826 29826   E AndroidRuntime:at   android.app.ActivityThread.main(ActivityThread.java:7229)02-15   01:49:56.431 29826 29826 E AndroidRuntime:at   java.lang.reflect.Method.invoke(Native Method)02-15 01:49:56.431   29826 29826 E AndroidRuntime:at   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1230)   02-15 01:49:56.431 29826 29826 E AndroidRuntime:at   com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)02-15   01:49:56.431 29826 29826 E AndroidRuntime:引起:   java.lang.RuntimeException:无法找到应用程序   Mono.Android.Platform.ApiLevel_24或Xamarin.Android.Platform! 02-15   01:49:56.431 29826 29826 E AndroidRuntime:at   mono.MonoRuntimeProvider.attachInfo(MonoRuntimeProvider.java:38)02-15   01:49:56.431 29826 29826 E AndroidRuntime:at   android.app.ActivityThread.installProvider(ActivityThread.java:6767)   02-15 01:49:56.431 29826 29826 E AndroidRuntime:......还有10个   02-15 01:49:56.431 29826 29826 E AndroidRuntime:引起:   android.content.pm.PackageManager $的NameNotFoundException:   Xamarin.Android.Platform 02-15 01:49:56.431 29826 29826 E.   AndroidRuntime:at   android.app.ApplicationPackageManager.getApplicationInfo(ApplicationPackageManager.java:368)   02-15 01:49:56.431 29826 29826 E AndroidRuntime:at   mono.MonoRuntimeProvider.attachInfo(MonoRuntimeProvider.java:32)02-15   01:49:56.431 29826 29826 E AndroidRuntime:... 11更多

我只能在那种类型的手机上使用它。 直到现在我发现的所有内容都无法解决该问题,包括将AndroidUseLatestPlatformSdk设置为false我发现的here

希望有人可以帮助我。

由于

埃里克

5 个答案:

答案 0 :(得分:9)

从项目中禁用@echo off cd .. cd .. dir /b w:\0*.jpg >abc.csv pause - >选项 - > Android选项 解决了它。

答案 1 :(得分:0)

检查此link,这可能会对您有所帮助。看起来他们以前遇到过同样的问题。希望它有所帮助!

答案 2 :(得分:0)

是,在上面的答案中提到:

Disabling Use Shared Runtime from Project -> Options -> Android Options 

在大多数情况下应该有效,而这确实是第一件事。但是,如果这不起作用,您还可以尝试从 Android项目属性->高级中将其添加到受支持的体系结构列表中,如下图所示。

enter image description here

enter image description here

希望这会有所帮助。

答案 3 :(得分:0)

提到的使用共享运行时选项禁用绝对是允许应用程序部署的解决方案。尽管该选项应允许在开发过程中更快地进行部署。

应该有一种使用共享运行库并成功运行应用程序的方法。

就我而言,我在具有 API 19 的设备上使用minSdk=16部署了一个新应用。
因此,我在/data/app/文件夹中找到了“ Mono.Android.Platform.ApiLevel_19-1.apk ”。

Android平台的编译器使用的是API28。
但是例外说明:

  

找不到应用程序Mono.Android.Platform.ApiLevel_25或Xamarin.Android.Platform

这真是一团糟。
也许在具有API 25的设备上可以正常工作。


修改

最后,什么对我有用。
从Android SDK下载了“ platform-25_r03.zip” ,将其解压缩到“ platforms” 文件夹中,并重命名为“ android-25”。然后创建新项目,运行。

(哦,以前删除过的Mono应用程序):

adb uninstall Mono.Android.DebugRuntime
adb uninstall Mono.Android.Platform.ApiLevel_19

它安装了“ Mono.Android.Platform.ApiLevel_25.apk”

这种情况下的开发参数:

  • Xamarin Studio 6.3
  • Xamarin.Android 7.3.1.2
  • JDK 8

在Xamarin Studio中->帮助->关于它说:

  

受支持的Android版本:
  4.1(API级别16)
  4.4(API级别19)
  7.1(API级别25)

添加API 25平台文件夹之后。

答案 4 :(得分:0)

我在Azure DevOps的构建中遇到了这个问题,但是在本地却没有,我没有在项目中设置这个事实。

我必须在Android构建步骤中手动设置EmbedAssembliesIntoApkAndroidUseSharedRuntime,这是Yaml:

  - task: XamarinAndroid@1
    displayName: 'Build Android App'
    inputs:
      projectFile: '$(AndroidProject)'
      configuration: '$(BuildConfiguration)'
      outputDirectory: '$(OutputDirectory)'
      msbuildArchitectureOption: x64
      msbuildArguments: '/verbosity:detailed /p:TreatWarningsAsErrors="true" /p:EmbedAssembliesIntoApk="true" /p:AndroidUseSharedRuntime="false"'