我正在构建一个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以及为什么
感谢。
答案 0 :(得分:3)
Xamarin为具有Android Callable Wrapper(ACW)的所有类型生成MD5总和,除非您明确地给它命名。我想这样做是为了避免与其他类型的冲突,这些类型可能存在于相同的包名中。这些是在构建时生成的。
为了在继承自Java.Lang.Object
的类型上设置您自己的名称,这些类型包括Activity
,Adapter
,View
等等。您只需在班级中添加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
{
}