flutter cocos creator 封装

Cocos creator 3.6.2版本,部分native层代码在GameActivity里面,现在我需要通过原生创建一个view,嵌套到flutter里面,作为一个flutter游戏容器,现在的问题是 我现在改了GameActivity.cpp文件的extern “C” JNIEXPORT jlong JNICALL Java_com_cocos_lib_CocosActivityDelegate_loadNativeCode 之后,编译成libcocos.so文件,找不到loadNativeCode方法,有没有大佬知道怎么破

不确定你说的找不到loadNativeCode是java阶段调用崩了还是什么

  1. CocosActivityDelegate是你自定义的java类?

  2. 3.6.2的原生部分改成了GameActivity.java ( agdk)),这是一个跟以往引擎都不一样的新机制,第三方号称可大幅度降低ANR,但是cocos官方没有对此改进做更多说明。

  3. GameActivity.java需要配合GameActivity.cpp(来源于ASOP),前者内部有很多act生命周期的native方法,所以需要在c/c++里面写上对应实现,对应的是GameActivity.cpp。所以从设计上,不应该将其他类的native实现放在这里面。

  4. Act的继承链 AppActivity.java -> CocosActivity.java -> GameActivity.java, 其中libcocos.so加载是在CocosActivity中,那这个CocosActivityDelegate.loadNativeCode 是加载了哪个so?

纯粹感兴趣多说了几句,我目前也没什么思路,2.x之前游戏是渲染在GLSurfaceView,机制上就保证了可以很方便去嵌套在其他的Activity(甚至可以cocos上再弹个cocos),现在是一个高度封装的GameActivity,移植成本有点高,最后,非常期待你的成果。

代码.zip (5.1 KB)

大佬,帮我看看这两个类

  1. 先确保so是否有 loadNativeCode 的方法存在; 可以用这个命令: nm -D xxx.so
  2. 若第一步函数在so不存在,则看下是否有参与编译
  3. 若确定有参与编译,看下是否被strip优化掉