마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

64비트 지원후 java.lang.UnsatisfiedLinkError: 문제

0 추천

안녕하세요

혹시 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 에러를 뿜고 있네요

 

혹시 이와 같은 문제를 겪다 해결하신분 계실까요? ㅜ

OS 님이 2019년 8월 8일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...