2010-05-13 5 views
4

저는 native C 코드로 JNI를 사용하는 Android 애플리케이션을 사용하고 있습니다. 나는이 응용 프로그램을 android 2.0 버전과 ndkr3으로 빌드하고 정상적으로 작동합니다.런타임에 라이브러리를 Android 애플리케이션에서로드 할 수 없습니다.

지금 안드로이드 SDK 버전 1.5와 API 버전 3을 바꿨을 때 libtest_demo.so 라이브러리를 열 수 없다는 문제가있었습니다.

05-13 16:54:23.603: INFO/dalvikvm(1211): Unable to dlopen(/data/data/org.abc.test_demo/lib/libtest_demo.so): Cannot find library 

나는 같은 장소에서 libtest_demo.so 파일을 넣어 /data/data/org.abc.test_demo/lib/libtest_demo.so 여전히 같은 문제가 발생합니다.

내 자바 파일에서 나는

System.loadLibrary("abc_jni"); 
System.loadLibrary("test_demo"); 

, 같은 네이티브 라이브러리를 호출 그리고 로그 캣에서 나는 두 라이브러리가 동일한 메모리 주소를 사용 보았다.

는 로그 캣 출력

05-13 17:56:15.732: DEBUG/dalvikvm(9897): Trying to load lib /data/data/org.abc.test_demo/lib/libabc_jni.so 0x437317f8 
05-13 17:56:15.732: DEBUG/dalvikvm(9897): Added shared lib /data/data/org.abc.test_demo/lib/libabc_jni.so 0x437317f8 
05-13 17:56:15.742: DEBUG/dalvikvm(9897): Trying to load lib /data/data/org.abc.test_demo/lib/libtest_demo.so 0x437317f8 
05-13 17:56:15.752: INFO/dalvikvm(9897): Unable to dlopen(/data/data/org.abc.test_demo/lib/libtest_demo.so): Cannot find library 

답변

7

이 오류는 거의 항상 "라이브러리를 찾을 수 없습니다"이 많은 이유가있을 수 있다고한다. 짜증나는 것은 대부분의 경우 누락 된 라이브러리가 아니라 다른 것입니다. 나는 우연히 한 이유 :

  • 라이브러리 디렉토리 (명백하게)에서 누락,
  • 동적 라이브러리가 누락와 연결되어
  • 라이브러리, 장치/에뮬레이터
  • 시스템 라이브러리 버전의 라이브러리 컴파일시에 링크 된 것과 다른 점 (심볼 등이 누락 된 것)

에뮬레이터에서 제대로 작동하는 라이브러리의 문제를 해결할 때 저에게 도움이되는 방법을 설명했습니다 Nexus One에로드합니다. 아마도 위와 같습니다. 도와 드리겠습니다 : http://mpigulski.blogspot.com/2010/09/debugging-dlopen-unsatisfiedlinkerror.html

관련 문제