对于跟原生混合开发的兼容问题

最近在做海外安卓开发,由于接了很多谷歌的sdk 所以发现现在cocos导出的安卓工程还是基于activity 的环境,无法使用安卓新环境AppCompatActivity,这也让接sdk 是无法在最新文档下操作,因为文档都是安卓新环境下的,还有一些新组件无法兼容,查看了cocos平台库API还停留在30,但是谷歌已经开始要求开发者最低目标API33了,我有疑问的是目前的安卓工程是不是无法在新的安卓系统上完全兼容,因为我观察到有一些功能的api在新系统下已经废弃,如果游戏使用到该功能那就无法正常调用!我有尝试自己升级兼容,但是这对于一个引擎使用者对原生了解不多的开发者是极其浪费时间的。想问下引擎组有没有考虑升级对原生环境的向上兼容!

1赞

你是遇到了哪个sdk,跟activity的类型还有关系,如果有应该是可以避免的。
另外,3.x用的是GameActivity,本身就是AppCompatActivity的派生类

我是接谷歌应用内更新,它文档里已经是用AppCompatActivity环境接的了,已经不再使用onActivityResult的方式,还有就是我想在更新完成时弹出SnackBar来提示,文档里推荐的一个方式,没有用老的Toast,体验上会比较差。我自己有尝试把库里的activity改为AppCompatActivity但是,导致其有用到onActivityResult的代码逻辑无法运行,需要自己修改。我不是很清楚这样做会不会有一些隐藏问题。目前我上线的产品升级后还是会有一些原生功能TimeOut的ANR,由于我的产品功能不复杂,可能影响较小。

还有就是我发现cocos creator 2.x的平台引用库部分功能使用的还是老的api 可能有些api在API27以后或者30以后已经废弃,我认为这可能会导致API30以后的设备有一些隐藏问题,没有做兼容。因为目前向上兼容应该是在API30。目前谷歌上架已经要求必须Target API 33以上了。解决这些问题给引擎使用者带来了额外的技术成本。需要自己去学习更多的安卓原生知识。

顶一下,同问。

image 我使用的3.5是这样,是说明不兼容最新的安卓系统吗,那对于我们出海的安卓原生开发,有没有相应的支持呢

你说的那些都支持 API33 也没问题, AppCompatActivity ,需要支持androidx。因为这是androidx包里的东西 androidx.appcompat.app.AppCompatActivity; 你加个android开发群到里面问问, 理论上来说 cocos 2.x也可以支持 API33

没看明白使用 API33 有什么问题。我们没有限制最高版本,只有对最低版本有要求。

打包上传谷歌现在要求目标API是33+,但是我在cocoslibs库里看到有些调用原生方法的api没有兼容新旧版本,也就是说某个api已经在api31上废弃了,那如果使用到该功能在api31的设备上是否会有问题?引擎的api最终实现是调用了原生的api,这个api已经在新设备上废弃了,不知道我理解的是否正确?

支持打包api是没有问题的,但是有些api已经在新设备上废弃了,向上兼容是否有问题?AppCompatActivity这个问题是,目前2.x的版本cocosActivity继承的是activity不像3.x继承的是GameActivity这个是AppCompatActivity的派生类。如果我要在2.x上使用androidx的组件我必须升级activity,但是升级带来了其他代码的逻辑兼容问题,这个是我目前发现的。目前搞海外原生,接的SDK比较多,如果是只是打包是没有问题的。还有就是向上兼容设备系统的问题,如果我使用到了引擎的某个API这个API最终实现是调用原生的API,但是这个API在高版本系统上已经废弃了,那该设备运行时API是否就是无效的?我刚做开发不久不知道理解是否有偏差。