so兼容32位和64位

简介: 在Android开发中遇到32位`xxx.so`动态库在64位设备上运行失败的问题,导致应用崩溃。错误提示因缺少64位版本的库。尝试创建`arm64-v8a`目录并复制库文件后,依然崩溃,因为库本身是32位。解决方案是在`build.gradle`中添加配置,指定支持的ABI滤镜,并在`gradle.properties`中设置`android.useDeprecatedNdk=true`,以解决兼容性问题。

安卓的兼容性是一个很令人头疼的问题,这几天又遇到了,还好还是解决了。

我遇到的问题是,我在网上下载了一个功能库,里面带了一个xxx.so动态库,问题它是32位的。但是,早两天拿了一台arm-64位的手机进行测试时,发现它居然崩溃了!泪崩了好久...

起初报错信息是:
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.xxx.xxx-1/base.apk"],nativeLibraryDirectories=[/data/app/com.xxx.xxx-1/lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "xxx.so",
主要是说找不到这个64位的xxx.so库,好吧,我确实没有建arm64-v8a文件夹,更别说是里面还要放一个64位的xxx.so库了。

算了,还是建一个arm64-v8a文件夹,把xxx.so库拷贝进去。然后,然后还是崩溃了。。。

报错信息是:
java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/com.xxx.xxx-2/lib/arm64/xxx.so" is 32-bit instead of 64-bit
at java.lang.Runtime.loadLibrary(Runtime.java:371)
at java.lang.System.loadLibrary(System.java:988)
果然这么直接暴力是不行的,xxx.so是个该死的32位的库,问题是当初我找到这个库的时候,就只有这么一个库,我去哪找个64位的来呀?我都没有c++的源文件!
然后只能百度啊,谷歌了。。。爬了会帖子发现,最多的是然你配置NDK编译条件,Android.mk LOCAL_MULTILIB := 32,哎,悲伤了好久。。。
不过,幸运的我还是找到了解决的办法:
1.在build.gradle中配置如下:


android {
    ...
defaultConfig {
....
ndk {
moduleName"native"
abiFilters"armeabi","armeabi-v7a","x86","mips"
}
    }
    ...
}

2.在gradle.properties中配置

android.useDeprecatedNdk=true

然后就搞定啦!

目录
相关文章
|
存储 关系型数据库 数据库
深入了解 PostgreSQL:功能、特性和部署
PostgreSQL,通常简称为Postgres,是一款强大且开源的关系型数据库管理系统(RDBMS),它在数据存储和处理方面提供了广泛的功能和灵活性。本文将详细介绍 PostgreSQL 的功能、特性以及如何部署和使用它。
676 1
深入了解 PostgreSQL:功能、特性和部署
|
11天前
|
存储 固态存储 Windows
兼容性
兼容性
19 2
|
2月前
|
数据库
开发指南033-数据库兼容
单一数据库自身就有一些不同处理之处
|
3月前
|
移动开发 前端开发 JavaScript
如何向后兼容性
如何向后兼容性
|
4月前
|
JavaScript
什么是类型兼容?
什么是类型兼容?
30 1
|
5月前
|
SQL Oracle 关系型数据库
达梦数据配置兼容
达梦数据配置兼容
|
Java Go Spring
向前兼容与向后兼容
向前兼容与向后兼容
99 0
|
6月前
|
存储 Oracle 关系型数据库
PolarDB 开源版通过orafce支持Oracle兼容性
背景PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出, 将数据变成生产力.本文将介绍PolarDB开源版通过orafce支持Oracle兼容性 .测试环境为m...
133 0
|
存储 并行计算 Oracle
PolarDB 开源版通过orafce支持Oracle兼容性
PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出, 将数据变成生产力. 本文将介绍PolarDB开源版通过orafce支持Oracle兼容性 .
524 0
|
SQL 监控 Kubernetes
好的 MySQL 兼容性可以做到什么程度? PolarDB-X 如何做生态兼容
2003 年淘宝网成立之后,业务飞速发展,其后台架构也进行了多次迭代。2009 年之前,淘宝网后台的数据库架构是经典的 IOE 组合。IOE 是指 IBM 的小型机、 Oracle 的数据库加上 EMC 的高端存储。这套组合成本高昂,但依然无法满足淘宝网对于高并发、大容量的扩展性需求。
884 0
好的 MySQL 兼容性可以做到什么程度? PolarDB-X 如何做生态兼容