Android Jni , 不同 arm 架构 兼容

Jni

jni 是一种 java 调用 c 语言的方式
java 反编译比c容易

参考文献:

https://www.jianshu.com/p/87ce6f565d37

https://blog.csdn.net/carson_ho/article/details/73250163

  • 微信arm
    微信是放在一个包里自动加载的,不是分文件夹

https://blog.csdn.net/shb2058/article/details/71438977

目前Android共支持七种不同类型的CPU架构,分别是:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x86_64 (从2014年起)。如果你要完美兼容所有类型的手机,理论上是要在的libs目录下放置各个架构平台的SO文件。

Tip

就目前市场份额而言,绝大部分的设备都已经是armeabi-v7a、arm64-v8a,你也可以考虑只保留armeabi-v7a架构的SO文件,这样能获得更好的性能效果。

  • armabi
    在这里插入图片描述
    在这里插入图片描述

问题

  1. 为什么 v7a flutter 可以打包出去用了?
  • 信息一
    最近项目中遇到了要使用opencv的情况,涉及到了abi兼容的选择。因为如果全部都适配的话,包很大,这样兼容那些用户数极少的cpu就很不划算,所以我只适配了armeabi-v7a这一个。但是今天在x64-v8a的模拟器上看的时候,提示我的library.so文件找不到,我记得这个应该是向下兼容的,但是出现这种情况很奇怪,于是我就在网上找了找答案。

ndk {
abiFilters “armeabi-v7a” // 指定要ndk需要兼容的架构(这样其他依赖包里mips,x86,armeabi,arm-v8之类的so会被过滤掉)
}

  • 先改了 gradle, 再改了 命令:
 flutter build apk --target-platform android-arm64

信息2 , 查看 flutter apk 解压完毕后只有 armv7a 支持

现准备 arm64-v8a(兼容 armeabi-v7a) 测试,以及armeabi(只支持 armeabi),预期结果 arm64-v8a 兼容,armeabi 不兼容。

下一步, 打包 armeabi so 包测试。预期结果两个都兼容,但是速度有一点损失

-> sdk 下载中

  1. 不同的 so 包文件如何发 app包,可有一种兼容方式(编译所有的 so 到一起?)
  2. flutter 再打包测试一下
  3. 再加一个视频
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值