게임 개발/Cocos2d-x

cocos2d-x 3.16 NDK r16 armeabi deprecated 에러

날개 2017. 12. 21. 15:02


cocos2d-x 3.16 버전을 사용하고 있습니다.


오늘자 기준으로 안드로이드 스튜디오에서 NDK를 설치하니, r16 버전이 설치가 됩니다.


여기서 프로젝트를 생성하고, 안드로이드 스튜디오에서 빌드하면,


Error:(81) Android NDK: Application targets deprecated ABI(s): armeabi


이라는 에러가 발생합니다.


이 에러가 발생해도, 실행이 되긴 합니디만, 이 에러 다음줄에 보면 다음부터는 이 ABI를 지원하지 않을것이라는 경고가 있으니 그대로 사용하기가 좀 꺼려집니다.


어차피 대부분 안드로이드 기기는 ARM계열에서 사용하니 (특별히 ARM기기를 사용하지 않는 분들은 알아서 설정 하시시라 생각 됩니다.), NDK 디폴트로 빌드 되도록 약간의 수정을 하면, 이 에러를 만나지 않아도 됩니다.


이 에러가 나타나지 않게 하기 위해 3개의 파일을 수정합니다. 수정할 3개의 파일은 아래 그림과 같습니다.





1. gradle.properties 파일 수정


gradle.properties 파일을 보면, 'PROP_APP_ABI' 이라는 속성이 있습니다. 특별히 지정하고자 하는 ABI가 없다면, 아래와 같이 주석 처리 합니다. 주석 처리 방법은 그냥 맨 앞에 '#'을 붙여 주면 됩니다.


# PROP_APP_ABI=armeabi


NDK r16은 플랫폼 10을 지원하지 않으므로 (cocos2d-x v3.16에서 프로젝트 생성하면 기본으로 10으로 되어 있음), PROP_APP_PLATFORM을 14로 바꾸어 줍니다.


이왕 수정하는것, 안드로이드 SDK의 플랫폼 버전도 적절히 수정해 줍니다.


아래는 현재 시점에 제가 설정한 내용입니다.


PROP_COMPILE_SDK_VERSION=14

PROP_MIN_SDK_VERSION=14

PROP_TARGET_SDK_VERSION=27

PROP_APP_PLATFORM=14



2. build.gradle 수정


이제, PROP_APP_ABI가 없으므로, 이 정의를 사용한 파일에서 에러가 날 것입니다. 찾아보면, 이 정의를 build.gradle 에서 사용함을 알 수 있습니다.


build.gradle은 여러 파일이 있게 때문에 잘 찾아야 합니다. 위 예제 그림에서 Banana라고 되어 있는 것이 프로젝트 이름입니다(따라서 이 이름은 각자 다르겠죠?) 프로젝트 이름으로 된 부분의 build.gradle 을 엽니다.


'abiFilters.addAll(PROP_APP_ABI.split(':').collect{it as String})' 이라고 되어 있는 부분을 찾아서 아래와 같이 주석 처리 합니다. gradle 파일에서는 주석 처리를 위해 '//'을 사용해야 합니다.


// abiFilters.addAll(PROP_APP_ABI.split(':').collect{it as String})


참고로, 만약, PROP_APP_ABI를 사용한다면 (예를 들어 ARM대신 다른 ABI를 사용하기 위해 직접 설정했다면) 이 부분은 주석처리하지 않고 넘어가야 합니다. 여기서 주석처리 하는 이유는 위, 1번에서 PROP_APP_ABI를 주석처리해서 없앴기 때문입니다.


그리고, 필수는 아니지만 이왕 하는것, 


buildToolsVersion "25.0.0"


이라고 되어 있는 것도 본인이 사용하는 Android SDK Build Tool 버전으로 바꿔 주면, 경고 표시 하나 줄일 수 있습니다. 저는 27.0.2로 바꾸었습니다. (이 버전은 본인의 환경에 따라 다릅니다.)



3. Application.mk 파일 수정


마지막으로 Application.mk 파일을 수정합니다. 이 파일은 본인이 작성한 게임 소스코드 자체를 NDK 필드 할 때 사용하는 파일입니다. (참고로, 위에서 설정한 내용들이, cocos2d-x 자체를 빌드할 때에도 적용이 됩니다.)


여기에서는, 

APP_ABI := armeabi

이라고 되어 있는 부분을 아래와 같이 주석처리 합니다. mk 파일은 주석 처리에 #을 사용합니다.


# APP_ABI := armeabi




이제 빌드 하고 실행해 봅니다.


빌드도 비교적 깔끔하게 되었고요...



단말기에서 실행도 잘 되네요.




(C) 2017 WingsNote.com (무단 복제 및 게시 금지, 링크 허용)