ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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.so

    2. 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")
        }
    }

     

    댓글

Designed by Tistory.