2012-08-08 1 views
1

안드로이드는 JNI를 통해 .so 파일을 사용할 수 있습니다. C/C++의 네이티브 함수는 Java 함수에 바인딩됩니다.안드로이드 APK의 .so 파일 패키지 이름

다른 개발자의 .so 파일 (소스 코드가 없음)을 사용하고 싶습니다. 네이티브 함수의 인터페이스를 알고 있지만 몇 가지 어려움에 직면 해 있습니다. .so 파일은 특정 패키지 이름에 바인딩하도록 하드 코딩 된 것 같습니다.

다른 개발자의 .so 파일을 사용할 수있는 방법이 있습니까?

그렇지 않은 경우 .so 파일을 디 컴파일하여 작동하게 할 수 있습니까?

답변

0

라이브러리를로드하고이 클래스를 사용하는 클라이언트에 원시 메소드를 제공하는 것이 목적 인 랩퍼 클래스가있는 공유 오브젝트가 기대하는 이름으로 패키지를 작성할 수 있습니다.

해당 패키지를 자신의 활동 패키지 (또는 사용하려는 곳)로 가져 와서 랩퍼 클래스를 통해 원시 메소드를 호출하십시오.

+0

메서드가 정적 인 경우 작동합니다. 개체 메서드는 어떻습니까? – Bear

+0

'public static native'가 아닌 'public native'를 래퍼 클래스로 만듭니다. 또는 다른 것을 의미 했습니까 (그렇다면 무엇을하려고하는지, 어떤 오류가 발생했는지 자세히 설명 할 수 있습니까?). – Michael

+0

하지만 문제는 네이티브 메소드가 C++ 코드에서 호출자 객체 또는 해당 필드에 액세스하려고합니까? 그렇다면 래퍼 클래스에서 액세스 할 수 없습니다. – Bear