본문 바로가기
# 게임/# cocos2d-x

안드로이드 포팅시 해야할 설정 ※매우 귀찮음 주의

by 쁘레레레레레 2020. 2. 6.

처음 실행시 ====================

 

1. ndk 경로 설정

local.properties -> ndk.dir=경로

ex) ndk.dir=C:\\android-ndk


2. error configure에 대해

https://atli-yeondi.tistory.com/14

 

[Solved]Android-studio with cocos2d-x :: external native build issues simple error configuring 오류

대상 :: cocos2d-x 프로젝트를 Android Studio포팅을 하다 생긴 문제 오류 내용 :: external native build issues : simple error configuring 예상 오류 :: 검색을 통해 찾은 정보에 의하면.. 1. cmake쪽 문제다...

atli-yeondi.tistory.com


3. 컴파일

cocos compile 프로젝트명 -p 플랫폼 종류

ex) cocos compile test -p android

compile관련 명령어 도움말은 cocos compile --help 입력 시 알 수 있다.


4. .mk파일관련 설정

컴파일 후 프로젝트명\proj.android\app\jni 에 가보면

Android.mk / Application.mk 파일이 있다.

먼저 Android.mk파일을 Visual Studio로 열어서 ( 다른걸로 열어도 상관없다. )

 

LOCAL_SRC_FILES := $(LOCAL_PATH)/hellocpp/main.cpp \
                   $(LOCAL_PATH)/../../../Classes/AppDelegate.cpp \
                   $(LOCAL_PATH)/../../../Classes/HelloWorldScene.cpp \

보통 이런식으로 설정되어 있을텐데, 내 경우는 HelloWorldScene -> GameScene으로 변경했다.

 

이후 본인 classes폴더에 있는 cpp파일명을 붙여주면 된다.,

 

내 경우는 이러하다.

LOCAL_SRC_FILES := $(LOCAL_PATH)/hellocpp/main.cpp \
                   $(LOCAL_PATH)/../../../Classes/AppDelegate.cpp \
                   $(LOCAL_PATH)/../../../Classes/GameScene.cpp \
                   $(LOCAL_PATH)/../../../Classes/AppManager.cpp \
                   $(LOCAL_PATH)/../../../Classes/GLES-Render.cpp \
                   $(LOCAL_PATH)/../../../Classes/HudLayer.cpp \
                   $(LOCAL_PATH)/../../../Classes/PhysicsShapeCache.cpp \

이후 저장하고

Application.mk파일을 들여다보자.

APP_ABI := armeabi-v7a

이 블럭에서 스페이스바 + x86을 추가하고 저장해주자

APP_ABI := armeabi-v7a x86

x86을 넣어주지 않으면, armeabi-v7a를 스튜디오에서 인식을 못한다고한다.


5. 안드로이드 프로젝트 설정

일단 건드릴 파일은 총 두개다. (ndk관련 설정은 위)

1. gradle.properties

2. build.gradle

 

먼저 gradle.properties에선

PROP_APP_ABI설정을 바꿔주면 된다.

아까 본 낯익은 armeabi-v7a를 위 example을 보고 따라해주면 된다.

# Example - PROP_APP_ABI=armeabi-v7a:arm64-v8a:x86
PROP_APP_ABI=armeabi-v7a

위 코드를

# Example - PROP_APP_ABI=armeabi-v7a:arm64-v8a:x86
PROP_APP_ABI=armeabi-v7a:x86

이렇게.


두번째로 build.gradle을 보자.

여기선 ndk filter를 건드려야한다.

android{
.
.
.
.
	ndk {
            abiFilters = []
            abiFilters.addAll(PROP_APP_ABI.split(':').collect{it as String})
        }
}

위 코드처럼 android관련 설정에서 쭉 내려가면 다음과 같은 코드가 있다.

저기서 abiFilters를 건드려주면된다.

ndk {
            abiFilters = ['armeabi-v7a','x86']
            abiFilters.addAll(PROP_APP_ABI.split(':').collect{it as String})
        }

 

여기까지하면 sync를 하거나 컴파일시 문제가 안생긴다. 일단은...


하지만 아직 끝난게 아니다.

 

이제 CMake를 건드려줘야한다.

 

각 프로젝트 폴더의 루트로 가보면, CMakeLists.txt 라는 파일이 있다.

(없으면 본인이 지운경우다, 프로젝트를 새로 만들어야한다.)

 

더블클릭 후 ctrl+f 를 누른 후

# add cross-platforms source

쭉 복사해서 붙여넣고 검색해보면 바로 뜬다.

 

# add cross-platforms source files and header files 
list(APPEND GAME_SOURCE
     Classes/AppDelegate.cpp
     Classes/HelloWorldScene.cpp
     )
list(APPEND GAME_HEADER
     Classes/AppDelegate.h
     Classes/HelloWorldScene.h
     )

 이렇게 뜨는데 역시나 위에서 Android.mk파일에서 한것과 같이 cpp파일과 헤더를 전부 넣어줘야한다.

# add cross-platforms source files and header files 
list(APPEND GAME_SOURCE
     Classes/AppDelegate.cpp
     Classes/GameScene.cpp
     Classes/AppManager.cpp
     Classes/GLES-Render.cpp
     Classes/HudLayer.cpp
     Classes/PhysicsShapeCache.cpp
     )
list(APPEND GAME_HEADER
     Classes/AppDelegate.h
     Classes/GameScene.h
     Classes/AppManager.h
     Classes/GLES-Render.h
     Classes/HudLayer.h
     Classes/PhysicsShapeCache.h
     Classes/ScrollBackground.h
     )

내 경우는 이러하다.

 

 


이후 cpp나 헤더파일을 추가할때마다 

jni/Android.mk

/CMakeList.txt

 

이 두개만 건드려주면 될것 같다.

'# 게임 > # cocos2d-x' 카테고리의 다른 글

cocos2d-x 인벤토리 만들기  (0) 2020.05.14
alternative -수정예정-  (0) 2020.02.12
physics editor & sprite sheet  (0) 2020.01.31
물리에 관하여  (0) 2020.01.31
조인트 종류  (0) 2020.01.21