Notice
Recent Posts
Recent Comments
Link
투케이2K
306. (TWOK/ERROR) [Android] 안드로이드 UnsatisfiedLinkError: dlopen failed: library .so not found 본문
투케이2K 에러관리
306. (TWOK/ERROR) [Android] 안드로이드 UnsatisfiedLinkError: dlopen failed: library .so not found
투케이2K 2025. 5. 2. 18:12[환경 설정 및 설명]
프로그램 : AndroidStudio
설 명 : [Android] 안드로이드 UnsatisfiedLinkError: dlopen failed: library .so not found
[설 명]
--------------------------------------------------------------------------
[개발 및 테스트 환경]
--------------------------------------------------------------------------
- 제목 : [Android] 안드로이드 UnsatisfiedLinkError: dlopen failed: library .so not found
- 테스트 환경 : 삼성 갤럭시 스마트폰 / 안드로이드 / Android
--------------------------------------------------------------------------
--------------------------------------------------------------------------
[에러 원인]
--------------------------------------------------------------------------
1. JNI 안드로이드 CMake 로 생성 된 C++ 및 C 모듈 빌드 수행 시 jniLibs 에 비트 호환 so 파일이 포함 되어 있지 않아서 발생하는 에러
2. Java 및 Kotlin 프로그램에서 System.loadLibrary 사용해 native 모듈 로드 시 앱 크래시 발생
3. 에러 발생 로그 전문 :
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.android.test, PID: 3403
java.lang.UnsatisfiedLinkError: dlopen failed: library "libnativelib.so" not found
at java.lang.Runtime.loadLibrary0(Runtime.java:1082)
at java.lang.Runtime.loadLibrary0(Runtime.java:1003)
at java.lang.System.loadLibrary(System.java:1661)
--------------------------------------------------------------------------
--------------------------------------------------------------------------
[해결 방법]
--------------------------------------------------------------------------
1. JNI 안드로이드 CMake 로 생성 된 C++ 및 C 모듈 내에 jniLibs 폴더 생성 후 각 비트 호환에 맞는 so 파일 추가 실시
>> jniLibs 폴더 >> arm64-v8a , arm64-v7a , x86 , x86_64 폴더에 so 파일 추가 실시
2. CMake 에서 CMakeLists.txt 파일 수정 (set_target_properties 추가해 모듈 jniLibs 폴더 내에 있는 so 파일 지정)
# -------------------------------------------------
cmake_minimum_required(VERSION 3.18.1)
project("nativelib")
# -------------------------------------------------
set_target_properties( --------------------------------> jniLibs 폴더 내에 있는 so 파일 지정
makefile
PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}/libnativelib.so)
# -------------------------------------------------
# TODO [생성된 파일 빌드를 수행하기 위해 헤더파일 및 구현부 추가 실시]
add_library( # Sets the name of the library.
nativelib
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
nativelib.cpp
aes.c
native_reader.c)
# -------------------------------------------------
find_library( # Sets the name of the path variable.
log-lib
# Specifies the name of the NDK library that
# you want CMake to locate.
log)
# -------------------------------------------------
target_link_libraries( # Specifies the target library.
nativelib
# Links the target library to the log library
# included in the NDK.
${log-lib})
# -------------------------------------------------
※ 참고 : CMake 로 생성 된 C++ 및 C 모듈에서 각 비트 호환에 맞는 so 파일 찾기 방법
>> 이전에 정상 빌드 된 APK 파일 내부 > lib 폴더에 arm64-v8a , arm64-v7a , x86 , x86_64 각 비트 호환 네이티브 so 파일 확인 (안드로이드 스튜디오 Analyze APK 툴 사용)
>> apk 파일 압축 해제 수행 후 > arm64-v8a , arm64-v7a , x86 , x86_64 각 비트 호환 네이티브 so 파일 복사 및 안드로이드 프로젝트 네이티브 모듈 jniLibs 폴더에 추가 실시
※ 참고 : 네이티브 모듈 so 파일 생성은 프로젝트 apk 파일 빌드 수행 시 생성 됩니다 (Build Apk - debug apk 파일)
--------------------------------------------------------------------------
--------------------------------------------------------------------------
[참고 사이트]
--------------------------------------------------------------------------
[Android Native Library] [NDK] [JNI] [cpp] 안드로이드 에서 C++ 코드 사용 방법 - CMake 모듈 생성 방법
https://blog.naver.com/kkh0977/223012296306?trackingCode=blog_bloghome_searchlist
[Android Native Library] [NDK] [JNI] [cpp] 안드로이드 에서 C 코드 사용 방법 - CMake 모듈 생성 방법
https://blog.naver.com/kkh0977/223013374341?trackingCode=blog_bloghome_searchlist
[Cmake 및 JNI 문법 참고 사이트]
https://blog.naver.com/kkh0977/223013389575?trackingCode=blog_bloghome_searchlist
[빌드 에러 - Cmake 3.10.2 not found in SDK, PATH or by cmake.dir prop]
https://blog.naver.com/kkh0977/223434439459?trackingCode=blog_bloghome_searchlist
--------------------------------------------------------------------------
반응형
'투케이2K 에러관리' 카테고리의 다른 글
Comments