처음 실행시 ====================
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 |