2014년 11월 24일 월요일

Google breakpad를 이용해서 Android용 Cocos2d-x 게임 크래쉬 리포트를 HockeyApp에 전송하기

HockeyApp에 Cocos2d-x로 개발된 게임의 크래쉬 리포트를 전송하기 위해서 제공되는 HockeyApp SDK는 NDK로 빌드된 C, C++ 코드의 크래쉬 정보 덤프할 수 없기 때문에 Google에서 공개한 크래쉬 리포트 라이브러리인 breakpad를 이용하여 HockeyApp에 전송한다.


현재 3.x 대 Cocos2d-x 소스는 NDK r9d 이하에서 빌드가 가능한데 breakpad 저장소의 최신 리비전 소스는 NDK r10c 이상을 지원한다. 이전 chrome_38 브랜치 소스를 가지고 라이브러리를 빌드하여 문제를 해결한다.


breakpad 라이브러리 빌드를 위해서 (path_to_breakpad)/android/sample_app 디렉토리에 있는 샘플 프로젝트에서 Application.mk의 내용 중 APP_STL 설정을 stlport_static에서 gnustl_static으로 변경하고 jni 폴더에서 ndk-build를 실행하면 breakpad 라이브러리와 테스트 프로그램 빌드가 시작된다. 빌드가 완료된 후 obj/local/armeabi 디렉토리에 libbreakpad_client.a가 생성되어있음을 확인할 수 있다.


자 이제 Cocos2d-x Android 프로젝트에 앞에서 만들어진 breakpad 라이브러리를 추가하자. 게임 프로젝트에서 위의 그림과 같이 Application.mk의 내용중 APP_STL 설정을 c++_static에서 gnustl_static으로 APP_CPPFLAGS의 -std=c++11에서 -std=gnu++11로 변경한다.


그리고 Android.mk 파일에 breakpad 라이브러리의 헤더 경로를 지정해주고 prebuilt 라이브러리로 등록하여 링크될 수 있도록 위와 같이 설정을 추가하여 빌드한다. 생성된 apk 파일과 심볼 파일을 HockeyApp 사이트에 전송하면 아래와 같은 크래쉬 리포트를 받을 수 있다.


HockeyApp SDK 연동에 대한 자세한 설명은 여기를 참조한다.

댓글 없음:

댓글 쓰기