尝试构建现有Xamarin项目时ClassNotFoundException [重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了尝试构建现有Xamarin项目时ClassNotFoundException [重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我收到了一个现有的Xamarin项目,我需要在它发布之前进行处理。

我尝试在2种不同的设备上安装它:

  • Nexus 5,运行android 6.0(API 23)
  • 模拟器Android 4.4(API 19) - 通过Visual Studio模拟器为Android模拟

但是,每次我这样做,它都会在启动时崩溃并使用java.lang.classNotFoundException: Didn't find class "md515fc9a7f42ec11c09d24b1c1a9770737.ConnectScreen"(下面的完整堆栈跟踪)(ConnectScreen是我的MainLauncher)

我试过的事情:

  • 删除bin / obj文件夹并重建
  • 清理项目并重建
  • 杀死MSBuild进程,清理并重建

在做了一些研究之后,我找到了Classy-Shark,它允许我在.apk文件中发现DEX列表。从这看起来,看起来ConnectScreen没有在包md515fc9a7f42ec11c09d24b1c1a9770737(应用程序正在寻找)中编译,但md5bc065f6c935f653292ddf7352d29f8ad。这对我来说似乎不对?

(每次构建项目时,这两个包都会更改)

我曾尝试构建一个新项目(跨平台应用程序,Native,Master Details,.NET Standard),这个项目在我的Nexus 5上运行良好,所以我不认为这是因为我的手机或Visual Studio版本?

我尝试过更改MultiDex设置以及TargetFramework,但我仍然遇到同样的问题。

这是完整的堆栈跟踪:

Unhandled Exception:

Java.Lang.RuntimeException: Unable to instantiate activity ComponentInfo{MyApp.MyApp/md515fc9a7f42ec11c09d24b1c1a9770737.ConnectScreen}: java.lang.ClassNotFoundException: Didn't find class "md515fc9a7f42ec11c09d24b1c1a9770737.ConnectScreen" on path: DexPathList[[zip file "/data/app/MyApp.MyApp-1.apk"],nativeLibraryDirectories=[/data/app-lib/MyApp.MyApp-1, /system/lib]]

12-22 10:39:51.537 E/AndroidRuntime( 1255): FATAL EXCEPTION: main
12-22 10:39:51.537 E/AndroidRuntime( 1255): Process: MyApp.MyApp, PID: 1255
12-22 10:39:51.537 E/AndroidRuntime( 1255): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{MyApp.MyApp/md515fc9a7f42ec11c09d24b1c1a9770737.ConnectScreen}: java.lang.ClassNotFoundException: Didn't find class "md515fc9a7f42ec11c09d24b1c1a9770737.ConnectScreen" on path: DexPathList[[zip file "/data/app/MyApp.MyApp-1.apk"],nativeLibraryDirectories=[/data/app-lib/MyApp.MyApp-1, /system/lib]]
12-22 10:39:51.537 E/AndroidRuntime( 1255):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
12-22 10:39:51.537 E/AndroidRuntime( 1255):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
12-22 10:39:51.537 E/AndroidRuntime( 1255):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
12-22 10:39:51.537 E/AndroidRuntime( 1255):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
12-22 10:39:51.537 E/AndroidRuntime( 1255):     at android.os.Handler.dispatchMessage(Handler.java:102)
12-22 10:39:51.537 E/AndroidRuntime( 1255):     at android.os.Looper.loop(Looper.java:136)
12-22 10:39:51.537 E/AndroidRuntime( 1255):     at android.app.ActivityThread.main(ActivityThread.java:5001)
12-22 10:39:51.537 E/AndroidRuntime( 1255):     at java.lang.reflect.Method.invokeNative(Native Method)
12-22 10:39:51.537 E/AndroidRuntime( 1255):     at java.lang.reflect.Method.invoke(Method.java:515)
12-22 10:39:51.537 E/AndroidRuntime( 1255):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
12-22 10:39:51.537 E/AndroidRuntime( 1255):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
12-22 10:39:51.537 E/AndroidRuntime( 1255):     at dalvik.system.NativeStart.main(Native Method)
12-22 10:39:51.537 E/AndroidRuntime( 1255): Caused by: java.lang.ClassNotFoundException: Didn't find class "md515fc9a7f42ec11c09d24b1c1a9770737.ConnectScreen" on path: DexPathList[[zip file "/data/app/MyApp.MyApp-1.apk"],nativeLibraryDirectories=[/data/app-lib/MyApp.MyApp-1, /system/lib]]
12-22 10:39:51.537 E/AndroidRuntime( 1255):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
12-22 10:39:51.537 E/AndroidRuntime( 1255):     at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
12-22 10:39:51.537 E/AndroidRuntime( 1255):     at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
12-22 10:39:51.537 E/AndroidRuntime( 1255):     at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
12-22 10:39:51.537 E/AndroidRuntime( 1255):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2101)
12-22 10:39:51.537 E/AndroidRuntime( 1255):     ... 11 more
12-22 10:39:53.137 I/Process ( 1255): Sending signal. PID: 1255 SIG: 9
答案

事实证明,它似乎是最新版Visual Studio 2017(15.5)的一个错误。

将Visual Studio降级到15.0后,它似乎工作正常。

这只是一个临时解决方案,但我希望它可以帮助其他人。

以上是关于尝试构建现有Xamarin项目时ClassNotFoundException [重复]的主要内容,如果未能解决你的问题,请参考以下文章

无法构建xamarin android项目

如何将 UWP 目标添加到现有 Xamarin Forms 项目?

Xamarin.IOS 导入现有情节提要

构建新的 Xamarin.Forms 项目失败

使用 CakeBuild 构建 Xamarin.Android 项目时找不到 mscorlib

在Xamarin.Forms项目中加载缺少程序集的问题