关于3.17版本不支持armeabi的疑惑

在3.17版本发布的时候,我将项目从3.15.1升级至3.17
其中最大的疑惑就是安卓编译不再支持armeabi,而是默认支持armeabi-v7a

于是按照官方的推荐出包使用,但出现了大量的崩溃问题
我想应该就是arm v5 cpu 机型和armeabi-v7a的匹配问题了

我试过使用官方提供的各种第三方库的源码进行编译armeabi版本,到最后还是放弃了,因为我发现cocos提供的源码与cocos预编译armeabi-v7a等版本的代码不同,也就意味着就算armeabi版本我编译都成功,也保不准后面会有什么奇葩问题出现,于是放弃, 最终退回3.16版本使用,崩溃问题得以解决.

那么我的疑问就是arm v5 cpu系列的机型难道就没办法了吗?我发现论坛里好像也极少讨论这个问题

之后百度了一番,发现网上也有很多主流产品是只使用armeabi-v7a的,那么他们是如何处理适配低版本机型的呢?
难道是我的打开方式不对???

望有经验的朋友答疑.

不向下兼容,要不选择armeabi,要不两套都加入,问题时,那么老的机型还要兼容吗?

使用3.17版本,我目前没有找到编译armeabi版本的办法

所以使用3.16的去编译armeabi了

gradle.properties里面PROP_APP_ABI 不是可以指定么;

Example - PROP_APP_ABI=armeabi-v7a:arm64-v8a:x86

在 3.17 这样设置不可以,因为没有 armeabi 的第三方库

Google 官方弃用了这个架构。另外 v7a 在小米4(Android 4.1)上验证没问题,更低的比如 2.3 测试不到,官方统计 4.1 以下的份额低于 0.3%。

1赞

崩溃问题要具体分析,现在只是猜测和 armeabi 相关。cpp 还是 lua 的项目,崩溃的机型是什么,堆栈是什么?

3.16 和 3.17 一个大的差异是 3.16 及之前是 GCC 编译,3.17 改成 clang,重新编译了第三方库。不只有 armeabi 这一个变量。

1赞

感谢你的回复

cpp部分未做任何改动, lua项目
在安卓上放了armeabi-v7a 这一个文件夹,所有第三方库也是都是v7a的

我在9月份试的3.17, 可惜对应的堆栈和日志已不在了,bugly上已无9月份的日志了

我印象其中有个堆栈报错是找不到对应的so

既然这样那接入各渠道SDK会不会有问题呢,安卓经常接入很多渠道;有的SDK甚至只提供armeabi的库,能兼容吗

我接了7-8个比较主流的渠道,目前都有支持armeabi-v7a

3.17 的 lua 项目崩溃之前也有过开发者反馈,在 3.17.1 的测试过程中特意仔细验证了 lua-tests,发现崩溃的原因是 luajit 第三方库的问题,目前已经修复,在等待测试团队的二次确认。

1赞