2012-11-25 3 views
2

방금 ​​첫 cocos2d-x 게임을 마쳤습니다. 필자는 GNexus 4.1 및 기타 태블릿을 포함한 하위 장치에서 테스트했습니다. 그러나 Nexus 7로 구입하여 다운로드하면 열리지도 않습니다. 4.2 버전을 실행 중입니다. 문제가 될 수 있습니까? 도움이 될 것입니다. 오류보고 :Play 스토어에서 신선한 Cocos2D-x 게임도 열 수 없습니다.

java.lang.ExceptionInInitializerError 
at java.lang.Class.newInstanceImpl(Native Method) 
at java.lang.Class.newInstance(Class.java:1319) 
at android.app.Instrumentation.newActivity(Instrumentation.java:1054) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
at android.app.ActivityThread.access$600(ActivityThread.java:141) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:5039) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.UnsatisfiedLinkError: Cannot load library:  soinfo_relocate(linker.cpp:975): cannot locate symbol "__exidx_end" referenced by    "libgame.so"... 
at java.lang.Runtime.loadLibrary(Runtime.java:371) 
at java.lang.System.loadLibrary(System.java:535) 
at com.penguinproductions.classiclightcycles.<clinit>(classiclightcycles.java:107) 
... 15 more 
+0

Cocos2d-x는 Android> 4에서 테스트되지 않았다고 생각합니다.하지만 타겟 3.0으로 컴파일해야합니다. – vgonisanz

+0

@Piperoman 제 4.1 장비에서 테스트를 해봤는데 완벽하게 작동했습니다. 내 목표가 2.1 또는 2.2라고 생각합니다. 목표가 낮 으면 문제가됩니까? –

+0

아마도 그렇지 않습니다. 공식 포럼 (http://www.cocos2d-x.org/projects/cocos2d-x/boards/6)에서 버그를 확인해보십시오. – vgonisanz

답변

5

이 오류가 발생하는 응용 프로그램이 많습니다. 그것은 특정 안드로이드 NDK를 사용하여 컴파일 된 프로젝트로 안드로이드 4.2에서 발생합니다. 제게 그것은 r8d였습니다. 그러나 그 버그로 다른 버전을 가진 사람들을 찾을 수 있습니다. 발견 된 해결 방법은 here입니다. 이 솔루션은 .cpp 파일의 코드의 다음 줄을 추가하는 것입니다

#ifdef __cplusplus 
    extern "C" { 
#endif 

void __exidx_start() {} 
void __exidx_end() {} 

#ifdef __cplusplus 
    } 
#endif 

이 나를 위해 그것을했다.

그러나 나는 NDK의 차후 버전에서 마침내이 문제를 해결할 때이 기호가 두 번 정의 될 수 있으므로주의해야한다고 생각합니다. 따라서이 해결 방법은 실제로 버그로 변형 될 것입니다.