안녕하세요
혹시 64비트 지원후 OS 5.1 일부 폰에서 실행이 안되는 문제를 겪고 계신분 계신가요?
구글콘솔 비정상 종료 로그를 보면 아래와 같은 로그가 나옵니다.
java.lang.UnsatisfiedLinkError:
at java.lang.Runtime.loadLibrary (Runtime.java:383)
at java.lang.System.loadLibrary (System.java:997)
at com.appplus.idolmake.idolGameCenter.<clinit> (idolGameCenter.java:1476)
at java.lang.reflect.Constructor.newInstance (Native Method)
at java.lang.Class.newInstance (Class.java:1606)
at android.app.Instrumentation.newActivity (Instrumentation.java:1069)
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2351)
at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2516)
at android.app.ActivityThread.access$1200 (ActivityThread.java:163)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1374)
at android.os.Handler.dispatchMessage (Handler.java:102)
at android.os.Looper.loop (Looper.java:135)
at android.app.ActivityThread.main (ActivityThread.java:5601)
at java.lang.reflect.Method.invoke (Native Method)
at java.lang.reflect.Method.invoke (Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:964)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:759)
위 문제를 해결하기 위해
Arm64-v8a 대응을 위해 NDK를 두번 빌드하였고
기존 사용하던 NDK-r10e는 Arm64-v8a 지원 문제로 최신 버전인 NDK-r20을 사용하여 빌드
NDK-r20은 기존에 대응하던 armeabi를 지원하지 않아 armeabi를 위해 NDK-r10e로 한 번 더 빌드
NDK-r10e로 빌드한 armeabi기반 .so파일과 NDK-r20으로 빌드한 Arm64-v8a기반 .so파일 두 그룹 생성 .so파일을 안드로이드 프로젝트의 jniLibs폴더에 모두 넣고 빌드
이후 안드로이드 os 5.1 저사양 폰에서 java.lang.UnsatisfiedLinkError 발생
.so파일을 찾지 못한 문제라 판단,build.gradle(Module:app)에 abiFilters옵션을 넣고
gradle.properties파일을 프로젝트 폴더에 생성후 android.useDeprecatedNdk=true 구문을 추가함
이후 일부 동작되지 않던 os 5.1 폰에서 동작이 되는 보고도 있으나
비율은 낮아졌지만 여전히 os 5.1 저사양 폰에서 실행이 안되는 에러가 올라옴
기존 안드로이드 지원 아키텍쳐 중 Arm64-v8a를 지원하지 않는 안드로이드 5.1폰에서 armeabi가 아닌 armeabi-v7a를 찾는 문제라 생각되어 armeabi-v7a로 빌드된 .so파일세트도 추가함.
여기서 NDK-r20으로 빌드한 armeabi-v7a는 갤럭시3 os 4.3 .so파일 로드중 오류가 발생하였고
NDK-r10e로 빌드한 armeabi-v7a는 갤럭시3에서도 정상작동 되는 것을 확인
NDK-r10e로 빌드한 armeabi와 armeabi-v7a 기반 .so파일 두 그룹과 NDK-r20으로 빌드한 Arm64-v8a기반 .so파일 총 세 그룹을 jniLibs폴더에 모두 넣고 빌드하였으나
여전히 안드로이드 5.1 일분 단말기 에서 java.lang.UnsatisfiedLinkError 에러를 뿜고 있네요
혹시 이와 같은 문제를 겪다 해결하신분 계실까요? ㅜ