项目打包安卓之后反而变卡了

一个小项目用到了box2d,用手机webview跑没有任何问题,跑满60帧,今天尝试打成原生安卓包,在模拟器上跑卡的不行,有时候帧率都只有个位数,原生比网页性能还要差吗?我看社区也有人反馈但是没有看到能解决的回复,引擎版本是3.8.0 @jare

请问打包 android 是用 release 模式编译 c++ 代码吗?

不卡,一定是你没有开启原生编译模式。 :yum:

怎么开启原生编译模式

我是按照文档来操作的,文档里面没看到说有“用release 模式编译 c++ 代码”
https://docs.cocos.com/creator/manual/zh/editor/publish/android/build-example-android.html

请问怎么算是用release模式编译c++代码

image 有没有勾选

这个平滑帧率的勾选了
image

在真机上跑试试看。模拟器上不知道什么未知原因,特别卡。
另外cocos的native的优化不如web,例如文件getData是同步的,会让主线程吃下io的卡顿,这个如果碰到卡顿的时候可以参考里面image的加载,移到线程池里面读文件,会减少不少卡顿(读json或者cconb文件的时候)。其他地方就需要有优化能力的去分析了。

左下角的profiler显示Physics耗时达到了100多ms,场景里面就10来个碰撞对象,只要对象发生碰撞就必然掉帧 :rofl:

:3: :3: :3:

上面说了release 模式 模式,你自己看看在 Android stuio怎么打包的

不要勾选 Swappy 试试。
然后,如果你是在 android studio 中打包,确保 Build Variants 中选择了 releaseWeChat3429f386fd299bafa33b4b4d87f6ca96

如果是在编辑器构建面板中直接运行,那么确保关闭调试模式

WeChatea9282d7f62fad2c44f9c6ae75a2ee7f

1赞

是release模式,采用了3.8.1的基于 Box2D-wasm 的 2D 物理系统帧率可以稳定60帧,这两者的差别有这么大吗?

box2d wasm 的版本性能是至少会比 box2d js 版本好至少一倍以上的。

原来是这样,我还一直查代码