我在应用程序启动时在三星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:无法获取提供者mono.MonoRuntimeProvider:java.lang.RuntimeException:无法找到应用程序Mono.Android。 Platform.ApiLevel_24或Xamarin.Android.Platform! 02-15 01:49:56.431 29826 29826 E AndroidRuntime:在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:在android.app.ActivityThread.main(ActivityThread.java:7229)02-15 01:49:56.431 29826 29826 E AndroidRuntime:at java.lang.reflect.Method.in voke(Native方法)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:在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。
希望有人可以帮助我。
谢谢
埃里克
从Project - > Options-> Android Options中禁用Use Shared Runtime
解决了它。
检查这个link,这可能会对你有所帮助。看起来他们以前遇到过同样的问题。希望能帮助到你!
提到的Use Shared Runtime选项禁用绝对是允许应用程序部署的解决方案。虽然该选项应该允许在开发期间更快地部署。
应该有一种方法可以使用共享运行时并成功运行应用程序。
就我而言,我在带有API 19的设备上使用minSdk=16
部署了一个新的应用程序。
所以我在/data/app/
文件夹中找到了“Mono.Android.Platform.ApiLevel_19-1.apk”。
编译器Android平台是API 28。 但例外情况说:
无法找到应用程序Mono.Android.Platform.ApiLevel_25或Xamarin.Android.Platform
所以这是一个完整的混乱。 也许在具有API 25的设备上它可以工作。
编辑:
最后,什么对我有用。 从Android SDK下载“platform-25_r03.zip”,将其解压缩到“platforms”文件夹,重命名为“android-25”。然后创建了新项目Run。
(哦,以前删除过的Mono应用程序):
adb uninstall Mono.Android.DebugRuntime
adb uninstall Mono.Android.Platform.ApiLevel_19
它安装了“Mono.Android.Platform.ApiLevel_25.apk”。
这种情况的开发参数:
在Xamarin工作室 - >帮助 - >关于它说:
支持的Android版本: 4.1(API级别16) 4.4(API级别19) 7.1(API级别25)
添加API 25平台文件夹后。
我从Azure DevOps的构建中遇到了这个问题,但是没有在本地,它没有发现我在项目中设置它的事实。
我不得不在Android构建步骤中手动设置EmbedAssembliesIntoApk
和AndroidUseSharedRuntime
,这是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"'