Game Dev/StarCrush

cocos2d v3.14.1로 포팅하기 (2/N)

AKer 2017. 3. 7. 17:20
반응형

Android SDK를 업데이트하니 새로운 문제를 또 찾을 수 있었는데 바로 "cocos run -p android"가 동작하지 않는다는 것이다. 


지금 하면서 느끼는거지만 Android-Studio와 cocos2d-x 엔진 조합은 정말 개발하기 힘들다. 게임을 만드는 것보다 Publish와 서비스 유지, 3rd Party Library 붙이기가 정말 고역이다. 차라리 Unity로 포팅하는게 더 빨랐을 수도 있을 것 같네. 때려칠까...


문제가 많이 있어서 하나씩 정리해보겠다.


Android SDK 버전

Android SDK Tools v25.2.3까지만 command-line으로 android 빌드가 가능하다.


  1. 필요하면 다음 링크에서 command-line 지원되는 버전을 다운 받는다. 
  2. <Android SDK>/tools 폴더를 통째로 지운다.
  3. 1에서 받은 파일의 압축을 풀고 tools를 교체한다.


Fabric 다운로드 속도

CrashDump 수집을 위해 쓰는 Fabric Crashlytics는 gradle dependency가 있다. 그런데 이 gradle 파일 다운로드가 더럽게도 오래 걸리고 있다. 구글링을 해보면 다른 사람들도 속도 문제로 많은 고충을 겪고 있는듯하다. 여러번 시도해서 간신히 성공! 이건 딱히 방법이 없다.


2017.3.8 추가

답이 없는 줄 알았는데 Fabric 지원팀에 메일을 보내니 답장이 왔다. --offline 플래그를 통해서 jar 파일을 다운 받는 것을 막을 수 있다.

Once you’ve retrieved our artifact, you can avoid Gradle’s dependency resolution work by running build tasks with the --offline Gradle flag. This should prevent the jar from downloading on every build.


Android SDK Build Tool 버전

25.0 이상이어야 한다. SDK Manager를 열어서 다운로드 받고 build.gradle에서도 버전을 수정한다. 참고로 build.gradle은 다음 2군데 존재하는 파일을 모두 수정해준다.

  • proj.android-studio\app\build.gradle
  • cocos2d\cocos\platform\android\libcocos2dx\build.gradle
android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    ... 생략 ...
}



DEX 중 java.lang.OutOfMemoryError

proj.android-studio\app\build.gradle 파일의 android 항목에 다음을 추가해준다.


android {

    ... 생략 ...

    dexOptions {

        javaMaxHeapSize "4g"

    }

}


CPP 관련 코드

이건 본인이 엔진을 수정하거나 엔진 기능을 쓴만큼 마이그레이션 해주면 된다. 다만 몇가지 기억에 남는 것들은 다음과 같다.


  • "platform/" 폴더로 include 경로가 바뀐 것들이 있다. (ex: CCFileUtils.h -> platform/CCFileUtils.h)

  • cocos2d-x v3.8 부터 진동 기능이 추가되었다. 기존에는 Android SDK의 API를 썼는데 이제 cocos2d 엔진 함수를 호출하면 된다.


이렇게 하고 일단 빌드가 끝났다. 그런데 실행하다가 크래시가... 내일도 작업해야 할듯 ㅠㅠ


반응형