转载cocos3.17cmake打包
<div class="show-content-free">
<p>最近用到了Cocos2dx,3.17,发现网上的指南都几年前的,非常陈旧,<br>
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目录,
先看看帮助信息。
![10186620-f4b5410b7dfec61c.png](https://upload-images.jianshu.io/upload_images/10186620-f4b5410b7dfec61c.png)
接下来看看cocos new --help
![10186620-fb50fdb23dece573.png](https://upload-images.jianshu.io/upload_images/10186620-fb50fdb23dece573.png)
然后执行以下命令
cocos new Demo -p com.demo.mygame -l cpp -d .
-p 包名,-l cpp,-d .,创建在当前路径。
![10186620-4682d8b061671f27.png](https://upload-images.jianshu.io/upload_images/10186620-4682d8b061671f27.png)
2、使用CMake
先看一看目录结构,最常用的就是VS工程proj.win32和AS工程proj.android,
![10186620-2f6ffb29506a7128.png](https://upload-images.jianshu.io/upload_images/10186620-2f6ffb29506a7128.png)
1、AS打开proj.android,先把NDK版本设置为r16,不兼容r18的。
2、打开gradle.properties文件,改PROP_BUILD_TYPE=ndk-build为cmake,其他几个宏也可以改为你需要的值。
![10186620-ae4623e4eaaed363.png](https://upload-images.jianshu.io/upload_images/10186620-ae4623e4eaaed363.png)
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,还有各种传参标志。
</div>
</div>
转自:https://blog.csdn.net/weixin_34268753/article/details/87055365