在Android模拟器上开始调试我的项目时,我收到此错误:
Java.Lang.NoClassDefFoundError:android.support.graphics.drawable.VectorDrawableCompat
在这段代码:
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle bundle)
{
//SQLitePCL.Batteries.Init();
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(bundle);
string dbPath = FileAccessHelper.GetLocalFilePath("clocker.db3");
global::Xamarin.Forms.Forms.Init(this, bundle);
LoadApplication(new Clocker.App(dbPath));
}
}
此行发生错误:
base.OnCreate(bundle);
我尝试在线查看其他建议,但答案似乎与我的项目中不存在的特定Xamarin工作室文件有关(例如gradle文件) .
我检查了'bundle'的内容,它在出错时似乎是null但我不确定这是否导致错误 .
我正在使用Xamarin表格PCL .
4 回答
如果项目路径太长,则可能会在多个类中发生此错误,因为它会经历操作系统字符长度的限制 .
长路径示例:
C:\ Users \ Username \ Documents \ Visual Studio xxxx \ Projects \ Project Name
好路径示例:
C:\项目\项目名
编辑 - 添加了包的外观:
错误
Java.Lang.NoClassDefFoundError:
表示您也缺少're missing a class. It tells you which class you':android.support.graphics.drawable.VectorDrawableCompat
. 我自己没有使用过Xamarin,但他们的文档描述了如何在C#代码中使用use Java classes . 一旦导入包含类android.support.graphics.drawable.VectorDrawableCompat
(VectorDrawableCompat.java,我认为是android.support.graphics.drawable?)的包,您的代码就应该运行 .我不确定这是否会对你有所帮助,但我们会看看MainActivity的声明方式 .
你的例子有:
但在我的代码中,我有:
看看这对创业公司是否有所作为 . 如果必须使用FormsAppCompatActivity,那么请查看将Api级别更改为支持的最高级别是否有所不同 .
您是否在“输出”窗口中显示任何日志,显示Xamarin诊断程序 .
我有类似的错误 . 我解决了它安装最新版本的JDK并在Visual Studio中选择新文件夹 .