最近用到了Cocos2dx,3.17,发现网上的指南都几年前的,非常陈旧,
android.mk用起来又不方便,还是喜欢CMake。
先说一下具体环境,使用的是,Windows10 + AndroidStudio3.2.1 + CMake
去官网下载cocos2dx3.17,https://www.cocos.com/download
1、创建新项目
cocos2dx3.x使用python2.7,命令行方式创建新项目,(我用的Anaconda随意切换python2.7/3.6)
命令行进入\tools\cocos2d-console\bin目录,
先看看帮助信息。
接下来看看cocos new --help
然后执行以下命令
cocos new Demo -p com.demo.mygame -l cpp -d .
-p 包名,-l cpp,-d .,创建在当前路径。
2、使用CMake
先看一看目录结构,最常用的就是VS工程proj.win32和AS工程proj.android,
1、AS打开proj.android,先把NDK版本设置为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内添加你的库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后面设置依赖库,
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相互调用
JAVA调用C++:
static native函数,类名要和函数名一致。
C++调用JAVA:使用JniHelper, FindClass, GetStaticFieldID, GetStaticObjectField, CallVoidMethod, CallStaticVoidMethod,还有各种传参标志。