Wednesday, July 20, 2016

[20160721] BIC 와 Gal3

BIC 에 출품한 게임이 Gal3 에서 작동하지 않는다는 메일을 받고 어제 오후 1시부터 작업중입니다.

9시간 작업을 진행한 상태에서 원인을 찾기 위해 구글링하고 디버깅 작업을 추가로 7시간 가량 했더니 기절했다 일어난 지금도 몸 상태가 말이 아니네요.

( '_')y-~

Android 4.x OS 를 사용중인 디바이스에서 앱을 실행하면 다음과 같은 에러 메시지가 출력됩니다.

# java.lang.UnsatisfiedLinkError
추가로 뒤에 블라 블라 여러가지 이야기가 나오는데 한마디로 추리면 Native Method 를 찾을수 없다 입니다.

srand, rand, fabsf, atoi, atof 등등의 기초적인 Method를 찾을수 없다고 합니다.

그래서 해봤습니다. 찾지 못하는 Method를 찾을수 있는 녀석들로 바꾸어 보았죠... 바꾸고 바꾸다 보니 atof 까지 왔는데... 눈에 보이는 모든 녀석들을 바꾸어놓아도 어디에선가 쓰이고 있는것인지 찾을수 없다고 나오더군요.

그래서 때려치우고 구글링으로 찾은 가장 일반적인 해결책을 시도 했습니다.

1. NDK 버전을 r10e 에서 r9c 로 낮추고

2. application.mk 에
+APP_STL := gnustl_shared
+NDK_TOOLCHAIN_VERSION=4.7
+APP_PLATFORM := android-14
...이런 작업을 하고

3. java 코드에
static {
        System.loadLibrary("gnustl_shared");
    }
...이런걸 추가하고

4. NDK r9c 에서 std::to_string 이 정상작동을 안해서 대신할 함수를 만들어 적용하고

5. 몇몇 std lib 들을 구버전이나 template 버전으로 바꾸고

6. codecvt 가 작동하지 않아서 string table 은 잠궈뒀습니다.

일단 Vega Racer2 에서 작동은 하는데 앱을 비활성화 했다가 다시 올리면 프레임이 반토막이 나는군요.
이유를 모르겠습니다. 허허......

30분 정도 쉬면서 몬스터도 한잔하고 마음을 추스려야 겠습니다.


ps
-> 문제가 발생한 cocos2d-x 의 버전은 3.10 NDK는 r10e 입니다.
-> 해당문제는 cocos2d 측에도 보고된 문제입니다. 관련 내용은 https://github.com/cocos2d/cocos2d-x/issues/14034 ...이곳을 참고하세요.

No comments:

Post a Comment