안드로이드 자바 java.lang.UnsatisfiedLinkError: dlopen failed: library "xxx.so" not found 해결 방법

2023. 8. 17. 10:59개발/자바

반응형

모바일 하이브리드 앱 개발 중 빌드 후 휴대폰에서는 잘 동작하나, 안드로이드 에뮬레이터 상에서는 동작하지 않는 이슈가 발생하여 한참을 삽질한 결과 해결 방법을 찾아냈다.

 

에러 로그 전문

서드파티 so 파일을 찾을 수 없어 발생하는 에러였다.

 

개발중인 하이브리드 앱에는 서드파티 so 라이브러리가 내장되는데,

arm64-v8a, armeabi, arm64-v7a 이 3가지 ABI 형태의 so 파일이 사용되고 있다.

 

휴대폰의 ABI는 arm64-v7a 였으나, 안드로이드 에뮬레이터는 x86_64로 확인되었다.

구글링 끝에 ndk 빌드 시 ABI를 지정해줌으로써 에뮬레이터에서도 돌아가는 것을 확인할 수 있었다.

 

App 수준 build.gradle에 ndk 관련 옵션 추가 후 재빌드 및 실행

android {
	defaultConfig{
		minSdkVersion 23
		targetSdkVersion 29
		ndk {
			abiFilters 'arm64-v8a', 'armeabi-v7a'
		}
	}
}
반응형