2012-06-06 2 views
2

Iam은 jar (zubhium sdk jar) 파일을 내 모노 드로이드 프로젝트에 바인딩하려고합니다. 나는 그들의 가이드를 따라 xamarins 웹 사이트를 만들었고 새로운 바인딩 프로젝트를 만들었다. 패키지 이름에 몇 가지 문제가 있습니다. 나는 다음과 같은 오류 얻을 :jar 바인딩 yubhium sdk와 Monodroid 문제

Error 3 package com.zubhium.interfaces does not exist 
     com.zubhium.interfaces.ZubhiumListener 
    C:\Users\jbp\Desktop\ny\CmsApp.Droid\obj\Debug\android\src\mono\com\zubhium\interfaces\ZubhiumListenerImplementor.java 8 25 CmsApp.Droid 



from the genrated source: 
package mono.com.zubhium.interfaces;   
public class ZubhiumListenerImplementor 
      extends java.lang.Object 
      implements 
       mono.android.IGCUserPeer, 
       com.zubhium.interfaces.ZubhiumListener 

을 그리고 프로젝트를 포장 할 때를 automaticly 패키지 이름에 모노 (.com.zubhium ....) 추가 때문이다. 이 모노를 제거하는 방법을 찾지 못하거나이 부분을 추가하는 규칙을 설정할 수 있는지 찾아 볼 수 없습니다.

<attr path="/api/package[@name='com.zubhium.interfaces']" name="managedName">mono.com.zubhium.interfaces</attr> 을 xmldata.xml 파일에 넣으려고했으나 작동하지 않았습니다.

당신은 어떤 sugestions 있습니까?

안부

답변

9
package com.zubhium.interfaces does not exist 

하면 bind a .jar libraryreference the binding project from another project, 당신은 또한add the .jar to your Application project에 필요 AndroidJavaLibrary에 그 빌드 작업을 설정합니다. 그렇게 할

실패는 .jar가 (당신이 본대로) Android Callable Wrapper를 컴파일 할 때 javac 컴파일 오류의 결과로, javac$CLASSPATH에 추가되지 않습니다, 그리고 .jar이 최종 .apk에 포함되지 않습니다. 이 두 가지 모두 Bad ™입니다.

And that is because when the project is wrapped it automaticly adds mono(.com.zubhium....) to the package name.

"구현 자"유형입니다. 당신은 그것을 무시할 수 있습니다. 이벤트 구현의 일부로 사용됩니다. 당신이 생성 된 C# 코드를 보면,이 있어야한다 :

[global::Android.Runtime.Register ("mono/com/zubhium/interfaces/ZubhiumListenerImplementor")] 
internal sealed class ZubhiumListenerImplementor : Java.Lang.Object, IZubhiumListener { 
    // ... 
} 

mono.com.zubhium.interfaces.ZubhiumListenerImplementor 내부 ZubhiumListenerImplementor 유형에 대한 ACW입니다.

이 유형의 이름을 바꿀 수 없습니다. 그것은 메타 데이터를 통해 제어되지 않는 내부 구조입니다.

+0

설명해 주셔서 대단히 감사합니다. 바로 시도해 보겠습니다. :) – Bjarke

+0

Beautiful 매우 고맙습니다. 이제 오류없이 컴파일 할 수있게되었습니다. jar 파일에 포함 된 클래스 및 메서드에 액세스하는 방법에 대한 지침이 있습니까? – Bjarke

+0

회원에게 액세스하는 데 문제가 있습니까? Java Binding Project의 출력물은 어셈블리 ('.dll')입니다. Java Binding Project에 프로젝트 참조를 추가하면 해당 어셈블리가 어셈블리 참조로 추가되므로 올바른 이름을 사용하려면 해당 유형/메소드를 사용할 수 있어야합니다. – jonp