2017-03-15 4 views
1

Xamarin android app을 만들고 있습니다.잘못된 md5로 인해 클래스를 찾을 수 없습니다.

xamarin 업데이트 후 빌드 오류가 발생합니다. 나는 그것이 전혀 관련이 있는지는 알 수 없지만 이전에 작동했던 것은 예외를 던졌습니다 : ClassNotFoundException. 클래스가 존재하며 적절한 활동입니다. 그 지역에는 전혀 변화가 없었습니다.

나는 그 점에서 많은 SO 스레드를 보았지만 솔루션을 정리하고 빌드 폴더를 삭제하는 것이 좋습니다. 그리고 그것은 불행하게도 도움이되지 않습니다.

어떤 I 실현하는 예외 메시지 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에서 상속 유형에 자신의 이름을 설정하기 위해

, 이들은 Activity, Adapter, View 그리고 더 많은 같은 유형입니다.

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

} 
: 당신이 대안으로 Activity 속성에 Name 속성을 사용할 수 있습니다 같은 Activity로 클래스의

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

} 

: 당신은 단순히 당신의 클래스에 Register 속성을 추가