« Prev : 1 : 2 : 3 : 4 : Next »


역시나 개인 메모겸 포스팅.

안드로이드 컴파일 후 기기에서 실행 하려 하면 아래와 같이 앱이 죽어버린다.

신기한것은 구형폰일 경우는 정상 실행 된다.

다른 라이브러리 프로젝트를 Add Library 하고 실행 해보려던중 생겨난 오류이다.

이 문제점이 신형 폰일경우에만 생기는걸 찾는데도 꽤 오래 걸렸고,

추가한 라이브러리가 문제가 아니라는걸 확인하는데만도 오래 걸린것 같다.

문제 해결방법은 안드로이드 ndk 컴파일 시 옵션을 조정해주면 해결이 되는것같다.(??)

정확히 이 문제 때문인지는 확인이 안됐지만 여튼 이런 시도에 의해 일단 해결이 됐고,

다시 발생할것 같아 겁나서 정확한 문제 파악을 하지 않고 있다.(나중에 시간나면 해야 할듯)

안드로이드 프로젝트(이클립스)에서 jni 폴더에 application.mk 파일을 열어보자.

먼저 테스트한 라이브러리는 c++11 을 사용하기 때문에

 -std=c++11 옵션을 추가해줬다.


APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -DCOCOS2D_DEBUG=1 -std=c++11

그리고 추가로

LDFLAGS='-Wl,--fix-cortex-a8'

APP_ABI := armeabi armeabi-v7a x86


를 추가해줬다.

cortex-a8 은 아직 뭔지 모르겠고,

아래 armeabi 는 cpu 종류를 알리는 옵션같은데.

armeabi-v7a 는 당연히 뭔가 더 최신인듯 하다.

신형 폰은 armeabi-v7a로 설정을 해줘야 하는것 같은데 그렇다고 하위 버전인

armeabi 를 지원 못해주는건 이해하기 힘들다.

아래의 문제점은 armeabi 로 컴파일해서 생긴 문제로 예상이된다.

x86 의 cpu를 가진 안드로이드 폰도 존재 하는것 같은데.

여튼 좀 피곤스럽다.


02-18 21:33:56.801: D/fromCPP(30581): ----------------------> loadlibrary cocos2dcpp

02-18 21:33:57.111: D/dalvikvm(30581): threadid=1: still suspended after undo (sc=1 dc=1)

02-18 21:34:01.861: W/dalvikvm(30581): Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lkr/co/StarTree/TestApp/TestApp;

02-18 21:34:01.861: W/dalvikvm(30581): Class init failed in newInstance call (Lkr/co/StarTree/TestApp/TestApp;)

02-18 21:34:04.341: D/AndroidRuntime(30581): Shutting down VM

02-18 21:34:04.341: W/dalvikvm(30581): threadid=1: thread exiting with uncaught exception (group=0x40cb0ac8)

02-18 21:34:04.401: E/AndroidRuntime(30581): FATAL EXCEPTION: main

02-18 21:34:04.401: E/AndroidRuntime(30581): java.lang.ExceptionInInitializerError

02-18 21:34:04.401: E/AndroidRuntime(30581):at java.lang.Class.newInstanceImpl(Native Method)

02-18 21:34:04.401: E/AndroidRuntime(30581):at java.lang.Class.newInstance(Class.java:1319)

02-18 21:34:04.401: E/AndroidRuntime(30581):at android.app.Instrumentation.newActivity(Instrumentation.java:1060)

02-18 21:34:04.401: E/AndroidRuntime(30581):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2105)

02-18 21:34:04.401: E/AndroidRuntime(30581):at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2238)

02-18 21:34:04.401: E/AndroidRuntime(30581):at android.app.ActivityThread.access$600(ActivityThread.java:149)

02-18 21:34:04.401: E/AndroidRuntime(30581):at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1242)

02-18 21:34:04.401: E/AndroidRuntime(30581):at android.os.Handler.dispatchMessage(Handler.java:99)

02-18 21:34:04.401: E/AndroidRuntime(30581):at android.os.Looper.loop(Looper.java:137)

02-18 21:34:04.401: E/AndroidRuntime(30581):at android.app.ActivityThread.main(ActivityThread.java:5105)

02-18 21:34:04.401: E/AndroidRuntime(30581):at java.lang.reflect.Method.invokeNative(Native Method)

02-18 21:34:04.401: E/AndroidRuntime(30581):at java.lang.reflect.Method.invoke(Method.java:511)

02-18 21:34:04.401: E/AndroidRuntime(30581):at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)

02-18 21:34:04.401: E/AndroidRuntime(30581):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)

02-18 21:34:04.401: E/AndroidRuntime(30581):at dalvik.system.NativeStart.main(Native Method)

02-18 21:34:04.401: E/AndroidRuntime(30581): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load cocos2dcpp from loader dalvik.system.PathClassLoader[dexPath=/data/app/kr.co.StarTree.TestApp-2.apk,libraryPath=/data/app-lib/kr.co.StarTree.TestApp-2]: findLibrary returned null

02-18 21:34:04.401: E/AndroidRuntime(30581):at java.lang.Runtime.loadLibrary(Runtime.java:365)

02-18 21:34:04.401: E/AndroidRuntime(30581):at java.lang.System.loadLibrary(System.java:535)

02-18 21:34:04.401: E/AndroidRuntime(30581):at kr.co.StarTree.TestApp.TestApp.<clinit>(TestApp.java:75)

02-18 21:34:04.401: E/AndroidRuntime(30581):... 15 more







크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2014/02/19 15:22 2014/02/19 15:22
젤라피 이 작성.

« Prev : 1 : 2 : 3 : 4 : Next »