2017-03-15 36 views
1

我正在建立一個Xamarin的Android應用程序。類沒有發現異常,由於錯誤md5

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是如何產生的以及爲什麼

謝謝。

回答

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 
{ 

}