2011-08-04 4 views
0

Android 앱에 제 3 자 라이브러리를 추가하려고합니다. .jar 파일과 .so 파일을 사용합니다. 이 파일은 미리 빌드 된 .so 파일 (즉, Android 앱 전용으로 제작되지 않은 파일)입니다.이 파일을 통해 많은 문제가 발생합니다. .jar 또는 .so 파일의 소스 파일에 액세스 할 수 없습니다!Android NDK를 통해 미리 빌드 된 라이브러리를로드하는 중 문제가 발생했습니다.

System.loadLibrary ("foo");를 호출하여 라이브러리를 동적으로로드하려고 시도 중입니다. 현재 앱 실행을 시도 할 때 UnsatisfiedLinkError : Library foo not found와 충돌합니다. 내 프로젝트의 libs/libs/armeabi 파일에 .so 파일이 있습니다.

여기에 유령을 쫓고 있습니까? 나는 내가 무엇을 할 수 있는지를 판단하려고합니다. 내가 참조하는 원시 코드가 없습니다. 모든 함수 호출은 .so 파일로 뒷받침되는 .jar 파일입니다. 안드로이드 .kk 파일을 컴파일하지 않았으므로 .so 파일이 이미 제공되었습니다. 여기에서 어떤 방향으로 나아갈 지에 대한 조언을 실제로 사용할 수 있습니다.

+0

여기에 설명 된 아이디어 중 일부를 살펴볼 수 있습니다. http://stackoverflow.com/questions/6209070/android-load-native-library – jimkberry

답변

0

System.loadLibrary()에 지정된 기본 이름이 실제 미리 작성된 라이브러리와 다른 파일 (또는 경로) 이름으로 확장 될 수 있습니다. Logcat은로드하려는 것을 정확히 보여 주어야합니다. System.load()를 System.loadLibrary() 대신에 전체 경로/파일 이름과 함께 사용할 수도 있습니다.하지만 실제로는 나중에 사용하도록해야합니다.

나는 다른 오류 메시지를 생성 할 것이라고 생각하지만, .so가 호환되는 프로세서 유형 및 abi 일뿐만 아니라 동적 라이브러리 (예 : 비 바이오닉 libc)가 장치에 설치되어 있지 않습니다.

+0

확실히 가능합니다. 나는 당신이 적합하지 않다는 것에 관해서는 맞다고 생각합니다. 지옥은 아마 내가 JNI와 호환조차되지 않는다는 것을 알고있다. 나는 이것을 많이 읽었으며, 궁극적으로 안드로이드 용 소스 파일을 빌드하고 ndk-build 스크립트를 사용하지 않으면 간단히 작동하지 않는다고 생각합니다. – BigJim

+0

@BigJim .so의 종속성을 덤프하고 실제로 설치되고 있는지 확인하고 명시 적 경로를 시도하는 것이 더 자세히 조사 할 가치가 있다고 생각합니다. 최소한 교육적인 경험이 될 것입니다. –

관련 문제