android 64位so和32位so混合,android ndk混合使用32和64位so库的尝试和总结

前言

首先要知道,64位的设备是兼容32位so文件的,目前很多主流app都是只在app中放置32位so,目的是减小apk的打包体积,弊端就是在64位设备上运行时不能充分发挥64位cpu的计算能力。

但是我们项目没有这么做,而是在app中同时放了32和64位so,导致apk的体积暴增,原因是app中有3D图形加载比较耗cpu,因此在64位设备上运行为了实际体验使用64位的so,而其他功能如mp3转码,pdf查看也需要用到so文件,直接用32位就够了。那么问题来了,有没有可能在app中只放置加载图形需要的64位so,和其他功能需要的32位so呢?让32和64位so混合使用。

尝试过程

先说结论,如果用64位so的功能没有UI交互(比如视频转码这类),有办法解决。如果这部分功能需要界面交互的,目前无法解决。

查了一些技术文章,是说android不允许混合使用so文件,要么全部使用32位要么全部使用64位,总之在lib目录文件要放全,否则加载的时候找不到对应文件就会崩溃。那我先尝试了多进程方式动态加载,就是在lib目录只放了部分32位so,然后我把需要64位so的图形功能Activity放到新的进程,动态加载64位so文件,还是报错。

接着尝试蒙骗lib文件夹,我直接把64位so放到armeabi目录,企图蒙骗过关,但是加载的时候就报错了,虚拟机发现armeabi里面放的不是32位so。。。

接着尝试,app项目中什么so都不放,先动态加载32位,再动态加载64位so。还是不行

试了一天没办法了,我决定去sta

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值