-
[Kotlin] .so 라이브러리 추가 방법개발일지/Kotlin 2024. 8. 30. 17:56
현재 진행 중인 프로젝트에 .so 라이브러리를 추가해야 할 상황이 생겼다.
1. app/src/main/jniLibs 경로에 각 아키텍쳐 별로 폴더를 생성하여 아래와 같이 .so 파일을 추가해준다. (jniLibs 폴더가 없으면 생성하면 된다.)
app/
└── src/
└── main/
└── jniLibs/
├── armeabi-v7a/
│ └── libmylibrary.so
├── arm64-v8a/
│ └── libmylibrary.so
├── x86/
│ └── libmylibrary.so
└── x86_64/
└── libmylibrary.so2. build.gradle (app)에 아래 코드(sourceSets)를 추가해준다.
android { compileSdk 33 defaultConfig { applicationId "com.myproject" minSdk 21 targetSdk 33 versionCode 1 versionName "1.0.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } //... 기타 설정 sourceSets { main { jniLibs.srcDirs = ['src/main/jniLibs'] } } }
3. companion object에서 System.loadLibrary를 이용해 .so파일을 불러오는데, 만약 파일 이름이 libmyLibrary.so라면 "lib"을 제거 하고 불러와야 한다.
class MainActivity : AppCompatActivity() { companion object { // 라이브러리 로드 init { System.loadLibrary("mylibrary") } } // 네이티브 메서드 선언 (필요한 경우) external fun someNativeMethod(): String override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // 네이티브 메서드 호출 val result = someNativeMethod() println("Native method result: $result") } }
'개발일지 > Kotlin' 카테고리의 다른 글
[Kotlin] Retrofit2에서 Trust anchor for certification path not found 에러가 날 때 (0) 2024.04.24