最近用到了Cocos2dx厉萝,3.17,發(fā)現(xiàn)網(wǎng)上的指南都幾年前的榨崩,非常陳舊谴垫,
android.mk用起來又不方便,還是喜歡CMake母蛛。
先說一下具體環(huán)境翩剪,使用的是,Windows10 + AndroidStudio3.2.1 + CMake
去官網(wǎng)下載cocos2dx3.17彩郊,https://www.cocos.com/download
1前弯、創(chuàng)建新項目
cocos2dx3.x使用python2.7,命令行方式創(chuàng)建新項目秫逝,(我用的Anaconda隨意切換python2.7/3.6)
命令行進入\tools\cocos2d-console\bin目錄恕出,
先看看幫助信息。
接下來看看cocos new --help
然后執(zhí)行以下命令
cocos new Demo -p com.demo.mygame -l cpp -d .
-p 包名违帆,-l cpp浙巫,-d .,創(chuàng)建在當(dāng)前路徑戈钢。
2侵续、使用CMake
先看一看目錄結(jié)構(gòu),最常用的就是VS工程proj.win32和AS工程proj.android足淆,
1尝胆、AS打開proj.android丧裁,先把NDK版本設(shè)置為r16,不兼容r18的班巩。
2渣慕、打開gradle.properties文件,改PROP_BUILD_TYPE=ndk-build為cmake抱慌,其他幾個宏也可以改為你需要的值逊桦。
3、打開CMakeLists.txt
include_directories(
Classes
${COCOS2DX_ROOT_PATH}/cocos/audio/include/
)
# 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
)
include_directories內(nèi)添加你的庫including抑进,
GAME_SOURCE里添加你的cpp文件强经,
GAME_HEADER里添加你的h文件。
cocos_build_app(${APP_NAME}
APP_SRC "${APP_SRC}"
DEPEND_COMMON_LIBS "cocos2d"
DEPEND_ANDROID_LIBS "cocos2d_android"
)
然后這里我沒太搞明白寺渗,我就在cocos_build_app后面設(shè)置依賴庫匿情,
link_directories(),target_link_libraries()
4信殊、建立jniLibs目錄炬称,
或者改build.gradle,添加jniLibs.srcDir "libs"涡拘,建立libs目錄玲躯,
把依賴的so庫文件都拷進去,
sourceSets.main {
java.srcDir "src"
res.srcDir "res"
jniLibs.srcDir "libs"
manifest.srcFile "AndroidManifest.xml"
assets.srcDir "../../Resources"
}
PS:
JNI C++和JAVA相互調(diào)用
JAVA調(diào)用C++:
static native函數(shù)鳄乏,類名要和函數(shù)名一致跷车。
C++調(diào)用JAVA:使用JniHelper, FindClass橱野, GetStaticFieldID朽缴, GetStaticObjectField, CallVoidMethod水援, CallStaticVoidMethod密强,還有各種傳參標(biāo)志。