NDK 라이브러리 배포 시 java.lang.UnsatisfiedLinkError 에 대해서.

By | October 6, 2015

한 프로젝트에서 두 개 이상의 ndk 라이브러리를 사용한다고 가정해 봅시다. 각 라이브러리는 아래와 같이 ABI를 지원한다면 앱을 빌드하고 실행했을 때 잘 실행될까요?

NDK-Library A

  • armeabi

NDK-Library B

  • arm64-8a
  • armeabi
  • armeabi-v7a
  • mips
  • mips64
  • x86
  • x86_64

즉, NDK-Library B는 모든 ABI를 지원하고 NDK-Library A는 armeabi만 지원합니다. 이럴 경우 앱을 빌드하고 실행하면 NDK-Library A를 찾을 수 없다고 예외를 뿌리며 죽습니다. 즉, java.lang.UnsatisfiedLinkError 가 발생합니다.

이것을 해결하는 방법은 두 라이브러리가 지원 ABI를 동일하게 맞춰주는 수 밖에 없습니다. 즉, 이 경우에는 NDK-Library B를 수정해서 armeabi만 빌드해서 배포해야 합니다.  코드가 있을 경우에는 상관이 없지만 코드가 없을 경우에는 어떻게 해야할지…?

 

Share on FacebookTweet about this on TwitterShare on Google+Share on RedditEmail this to someone