프로그래밍/Android

64bit 안드로이드에서 32bit 라이브러리를 불러오지 못 할 때

Lou Park 2020. 5. 15. 21:54

갤럭시 S10 5G를 사용중인데 평소엔 잘되던 라이브러리가 제대로 작동하지 않았다. ㅠㅠㅠ

오류 메세지도 매우 애매하게 떠서 검색하기 어려웠는데 어쨌든 해결되었다.


관련 오류 메세지들은 이런식이다...

UnsatisfiedLinkError: dlopen failed "librealm-jni.so" is 32-bit instead of 64-bit

java.lang.UnsatisfiedLinkError:  ... nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "libcalculate.so"


어쨋든 해결을 위해서는 

1. gradle.properties 에 android.useDeprecatedNdk=true 한 줄을 추가한다.


2. app/build.gradle에 다음과 같이 추가한다.

android {
    ...
    defaultConfig {
        ...
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }

        packagingOptions {
            exclude "lib/arm64-v8a/librealm-jni.so"
        }
    }
}



출처: 

https://corbt.com/posts/2015/09/18/mixing-32-and-64bit-dependencies-in-android.html