由于错误的md5导致类未找到异常

时间:2017-03-15 21:30:34

标签: android .net xamarin build classnotfoundexception

我正在构建一个Xamarin安卓应用。

xamarin更新后,我遇到了构建错误。我无法判断它是否相关,但现在之前有效的方法会引发异常:ClassNotFoundException。该类存在并且是适当的活动。该领域根本没有变化。

我在这方面看过很多SO主题,但他们都建议清理解决方案,删除构建文件夹等。不幸的是,这并没有帮助我。

我在异常消息中意识到这一点 W/monodroid( 4201): JNIEnv.FindClass(Type) caught unexpected exception: Java.Lang.ClassNotFoundException: md56629fa8edd4a41a77563f74c5f9a5f792.MainActivity md5部分与MainActivity.class所在的文件夹(md56b5cfc81a7b5c4227a0c9a4dcb7dab856)不同。当我删除该文件夹时,在构建期间会生成一个新文件夹。它的md5再次不同。但异常再次出现,要求与之前相同的旧md5。

我的问题:

1。)我能做些什么让JNIEnv寻找合适的md5?

2。)如何生成md5以及为什么

感谢。

1 个答案:

答案 0 :(得分:3)

Xamarin为具有Android Callable Wrapper(ACW)的所有类型生成MD5总和,除非您明确地给它命名。我想这样做是为了避免与其他类型的冲突,这些类型可能存在于相同的包名中。这些是在构建时生成的。

为了在继承自Java.Lang.Object的类型上设置您自己的名称,这些类型包括ActivityAdapterView等等。您只需在班级中添加Register属性:

[Register("my.cool.package.MyTypeName")]
public class MyTypeName : SomeJavaType
{

}

对于Activity等类,您也可以使用Name属性中的Activity属性:

[Activity(Label = "MyActivity", Name = "my.cool.package.MyActivity")]
public class MyActivity : Activity
{

}