Visual studio 我是否知道我是否需要启用多索引?(ClassNotFoundException)

Visual studio 我是否知道我是否需要启用多索引?(ClassNotFoundException),visual-studio,xamarin,xamarin.android,visual-studio-2017,Visual Studio,Xamarin,Xamarin.android,Visual Studio 2017,突然,似乎没有任何理由,下面的错误开始出现。经过一整天的斗争,我发现启用多索引解决了这个问题。此错误是否可能由我违反64k参考阈值引起 java.lang.RuntimeException: Unable to instantiate application md52323d240c954a07dbdbeb3f1c41a0cab.MainApplication: java.lang.ClassNotFoundException: Didn't find class "md52323d240c95

突然,似乎没有任何理由,下面的错误开始出现。经过一整天的斗争,我发现启用多索引解决了这个问题。此错误是否可能由我违反64k参考阈值引起

java.lang.RuntimeException: Unable to instantiate application md52323d240c954a07dbdbeb3f1c41a0cab.MainApplication: java.lang.ClassNotFoundException: Didn't find class "md52323d240c954a07dbdbeb3f1c41a0cab.MainApplication" on path: DexPathList[[zip file "/data/app/com.myapp-1/base.apk"],nativeLibraryDirectories=[/data/app/com.myapp-1/lib/arm64, /data/app/com.myapp-1/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
at android.app.LoadedApk.makeApplication(LoadedApk.java:823)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5529)
at android.app.ActivityThread.-wrap2(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1576)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:241)
at android.app.ActivityThread.main(ActivityThread.java:6281)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
在什么地方我能看到推荐人的数量?我如何知道我是否在VS中超越了这一点


首先,您可以使用APK Analyzer工具统计方法引用(并查看其他有用的细节)。它随Android Studio一起提供;您可以在Build菜单下找到它,也可以通过apkanalyzer在命令行中找到它。

第二,您将得到一个生成错误,指示您需要使用multi-dex。它看起来像:

写入输出时出现故障:
太多的字段引用:131000;马克斯是65536。
您可以尝试使用--multi-dex选项。

详情如下:

java.lang.ClassNotFoundException:未找到类

这是在以下版本中创建Java
classes.zip文件时的一个已知问题:

2017年12月4日-Xamarin.Android8.1.0.24

  • 此版本包含在Visual Studio 2017 15.5版中
Java.lang.ClassNotFoundException

我们收到了多份关于应用程序运行到“Java.Lang.ClassNotFoundException:在路径:DexPathList上找不到类”异常的报告

错误:

GitHub PR修复程序:

解决方法:
您可以清理/重建作为Windows上的解决方案,以便重新创建Java
类.zip文件

错误:您可以清理/重建作为Windows上的解决方案,以便重新创建Java类.zip文件啊!这是有道理的。。。嗯,我已经尝试过多次清洁重建。此外,还尝试删除生成的obj目录。还有什么我可能需要手动删除的吗?尝试关闭multi-dex并删除obj目录并重新生成,这应该可以工作,但是。。。。否则降级Xamarin.Android是一个选项,直到发布修复程序:@SushiHangover实际上删除obj dir确实有效。不知道为什么以前没有,也许我一次尝试了太多的东西。我认为点击/取消点击Multi-Dex设置之所以有效,是因为它重建了类zip文件。如果你想得到分数,可以写一个答案。我对埃迪尔的回答投了赞成票。但是,最后我关于在VisualStudio中分析引用数量的问题(这似乎不可能)是一个单独的问题。我想我会为此下载一个第三方apk分析器。虽然这个问题很可能是由我在各种媒体中记录的这个已知问题(包括在下面的答案中)解决的,但应该注意的是,这个问题的答案也可能是因为自定义
[应用程序]存在已知的限制
类由于快速部署而未生成主索引列表-这也可能是因为应用程序子类有时由于从
multiDexKeepFile离开而未生成主索引列表-我看到。。。但是,我正在使用VisualStudio,找不到任何说明存在此类已处理构建错误的文档。应该是一样的吗?另外,在VS中找不到APK经理。可能就在那里,我就是看不到。看看这个帖子:我看到了。。。这是非常古老的,可能是因为不同的原因。另外,症状也不同(在我的例子中,它确实会使应用程序崩溃)。你不需要计算你自己的方法引用
dx.jar
在通过
java-jar-dx.jar
编译并达到dex限制时将抛出错误。它将以通用的
java.exe的形式出现,并以代码2退出。