Xamarin 安卓应用程序立即崩溃,并显示“;没有';找不到类{hash}.MainApplication“;

Xamarin 安卓应用程序立即崩溃,并显示“;没有';找不到类{hash}.MainApplication“;,xamarin,xamarin.android,classnotfoundexception,Xamarin,Xamarin.android,Classnotfoundexception,我已将Windows升级到10.0.16299(最新版本),将Visual Studio升级到15.5.1(最新版本)。从那时起,当我在Xamarin中构建并运行Android应用程序时,该应用程序立即崩溃 不幸的是,[AppName]已停止 无论我是想在模拟器上运行应用程序还是在连接的真实设备上运行应用程序,都会出现此问题。“输出”窗口显示此错误消息: FATAL EXCEPTION: main Process: [AppName], PID: 16778 java.lang.RuntimeE

我已将Windows升级到10.0.16299(最新版本),将Visual Studio升级到15.5.1(最新版本)。从那时起,当我在Xamarin中构建并运行Android应用程序时,该应用程序立即崩溃

不幸的是,[AppName]已停止

无论我是想在模拟器上运行应用程序还是在连接的真实设备上运行应用程序,都会出现此问题。“输出”窗口显示此错误消息:

FATAL EXCEPTION: main
Process: [AppName], PID: 16778
java.lang.RuntimeException: Unable to instantiate application md53c5f17a815ca1a4a699c7162c91a7059.MainApplication: java.lang.ClassNotFoundException: Didn't find class "md53c5f17a815ca1a4a699c7162c91a7059.MainApplication" on path: DexPathList[[zip file "/data/app/nz.HUMANiT.Frank-1/base.apk"],nativeLibraryDirectories=[/data/app/nz.HUMANiT.Frank-1/lib/arm64, /data/app/[AppName]-1/base.apk!/lib/arm64-v8a, /vendor/lib64, /system/lib64]]
    at android.app.LoadedApk.makeApplication(LoadedApk.java:587)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4932)
    at android.app.ActivityThread.-wrap1(ActivityThread.java)
    ...
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)

Caused by: java.lang.ClassNotFoundException: Didn't find class "md53c5f17a815ca1a4a699c7162c91a7059.MainApplication" on path: DexPathList[[zip file "/data/app/[AppName]-1/base.apk"],nativeLibraryDirectories=[/data/app/[AppName]-1/lib/arm64, /data/app/[AppName]-1/base.apk!/lib/arm64-v8a, /vendor/lib64, /system/lib64]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
    ...

Suppressed: java.lang.ClassNotFoundException: md53c5f17a815ca1a4a699c7162c91a7059.MainApplication
    at java.lang.Class.classForName(Native Method)
    at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
    ...

Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
我发现暗示过去Xamarin中有bug;但是,解释的解决方案和修复方案不起作用。启用或禁用multidex也不能解决问题

这是Xamarin的新bug吗?有什么想法吗?有什么建议吗?

也有同样的问题

这看起来像是一个Xamarin bug:生成的AndroidManifest中的android包名称错误(与生成的java类中的名称不同)

解决方法:使用“name”属性为android活动(和应用程序类,如果有的话)指定包名

如果您的活动是:

[Activity(Label = "App1", Icon = "@drawable/icon", Theme = "@style/MainTheme", ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation, LaunchMode = LaunchMode.SingleTask)]
public class MainActivity : FormsAppCompatActivity {
...
}
将其更改为:

[Activity(Name = "apackagename.MainActivity", Label = "App1", Icon = "@drawable/icon", Theme = "@style/MainTheme", ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation, LaunchMode = LaunchMode.SingleTask)]
public class MainActivity : FormsAppCompatActivity {
...
}

这应该可以解决问题。

您是否尝试在
Visual Studio Installer
中使用
修复
?是。我还卸载并安装了Xamarin组件。已卸载并安装所有Visual Studio。卸载了Visual Studio,删除了我手动找到的所有剩余内容,然后重新安装。没有任何帮助。您提到您正在项目中使用multidex,@JoeLv,非常好的发现。非常感谢。然而,在使用和不使用多重索引的两种情况下都会出现这个问题。我只是尝试启用multidex,因为其他帖子建议这样做,因为它解决了他们的问题。另外,我在一台单独的机器上尝试了完全相同的解决方案/代码,设置相同,但是VS 15.5.0,它在那里工作。清理项目解决方案,删除bin和obj文件,重新启动Visual Studio,然后重试,它在我这方面工作正常。我尝试了,但没有解决我的问题。事实证明,升级到VisualStudio15.5.2有助于克服这个问题。这对我也不起作用。另外,已经在15.5.2(最新版本的visual studio)上。启用多索引修复了此问题。对我来说很容易复制,只需取消选中,清理并重建:问题又回来了。启用多索引、干净重建、问题消失。我不可能超过64k的限制。不理解这种行为-可能是错误?@maplemale:请看我的问题:multi-dex选项是针对特定错误消息的常见解决方案,正如您所看到的,但不是我现在看到的,这就是我发布问题的原因。我没有Java变量计数器溢出,而multi-dex选项可以避免该溢出。@QualityCatalyst这可能仍然是相同的问题,您是否尝试检查obj\Debug\android\bin\classes目录?里面有classes.zip文件吗?如果是这样,请将其向上移动一个(这样它就与classes文件夹(即bin文件夹)位于同一目录中)。不要将它复制/粘贴到一个目录中,而是移动它。