前言:
cocosCreator打包安卓一堆坑,调用c++的cpp文件也一堆坑。没有n天的试错和前人经验,费老大劲了。
本人需要求是cocoCreator打包安卓后调用C++的cpp文件。
费了老大劲跑通,深感查官方论坛没一个说这个流程的帖子,都是提问的,也没有人回答。
本着总结给自己的出发点,也回馈一下本人查资料过程中的无私分享者,特此总结分享如下:
cocos Creator 版本 2.4.13(官方在2.4.12中升级了安卓的Grade版本和android studio的版本到目前的主流版本,建议用2.4.12以下的cocosCreator版本的童鞋如果打包安卓,也升级一下,旧版本的安卓工具弊端和兼容太差了)
android studio版本 2023.11版本
grade版本 8.2
ndk版本26.2
sdk版本 api34
jdk版本17
cpu构建 armeabi-v7a 和arm64-v8a(只选这两个常用的即可,其他的选择多了编译太慢)
前置工作:
cocos方面,在cocos的编辑器设置界面设置原生开发环境地址(在cocos处设置好可以直接在打包时写入安卓配置里,避免每次打包后重复修改)
android studio方面为了避免每次加载项目都远程下载十几分钟的依赖文件,要先配置好路径,重复使用;(每个安卓工程都需要设置一次,以后只有安卓工程目录不变,就不需要重新设置)
如果需要使用androidX的获取录音摄像头等权限,或者其他使用androidX的方法,需要在两处添加两句话,目前安卓开发都是androidX版本的api了,建议都加上
截至目前为止,环境就配置好了
开始调用cpp
首先你得有cpp文件
然后你看cpp文件
这些是引入依赖
这些是方法
这些是对外导出,三个圈分别表示返回值,cpp应用地包全名,cpp对外提供方法名字(中间用下划线分割,按照这里类比,改成你自己的包名和方法名)
关键
以上是对你cpp文件的解析,目前安卓加载cpp文件有两种方法,分别是cmake和ndk-build方法,都是在grade里配置即可(这个你随便搜索安卓加载cpp的方法都能搜到)。
cmake是目前最新且主流方法,ndk-build是旧的方法,
尴尬的是目前两种方法在一个项目只能同时使用一个,
更尴尬的是cocos打包安卓用的就是ndk-build方法把cocos2dx的文件以cpp文件形式加载入安卓项目。所以你新加载cpp文件只能用ndk-build方法。
更更尴尬的来了,那就是cocos打包后的安卓文件分为好几层,我在配置处无论怎么写加载新的cpp的mk文件引用,都生成不了os文件(os是cpp被安卓生成的可以供java调用的文件,在build视图工程里的bild文件夹)
鉴于整个cocos安卓打包都是ndk-build的方式生成,所以就不要想的改动cocos源代码,来适配cmake方式了,官方都不想改(大动干戈)老老实实用ndk-build的方式调用吧。
既然无论我怎么配置,由于cocos自带的ndk-build配置干扰,都无法加载到我新加入的cpp文件。
那么我就直接把我的cpp迁移到cocos自带的cpp里,这样就不用额外写配置来生成os了。
这个main.cpp好像是官方特意给留下的口子,他的名字叫main.cpp,都不用额外加载main模块,因为系统自动已经内置了。
所以你直接把自己cpp里的内容按照分类,分别合理迁移到main.cpp里,然后直接在要调用方法的地方如下写:
然后正常调用即可。(这个main.cpp不会被新打包覆盖调)
最后都设置好后
让他重新加载即可
中途如果有grade变动要如下
截至目前为止,cpp调用成功!(研究一下cpp引用cpp文件(应该不难,懒得弄了)就更丝滑了);
有什么问题和后续分享,可以评论区找我!