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

我遇到的问题是,我在网上下载了一个功能库,里面带了一个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。(android的A是小写a的,CSDN会自动修改)开始迷糊了半天,项目中怎么没有这个文件呢?为啥别人的项目中都有,看了下同事的项目,一样的没有。然后查了下,原来是用来配置变量参数的,好吧,那就新建一个吧。

然后就搞定啦!

本文转自秋楓博客园博客,原文链接:http://www.cnblogs.com/rwxwsblog/p/5646627.html,如需转载请自行联系原作者

【转】.so兼容32位和64位相关推荐

  1. 【源码】声明32位和64位Access、Excel等VBA兼容的API函数的方法

    1.在声明中加上  PtrSafe 关键字 2.加上VBA7 及Win64的判断 Declare 语句 PtrSafe 关键字(可参考VBA帮助) 带有 PtrSafe 关键字的 Declare 语句 ...

  2. 论如何创建APP打开提示手机框架不兼容(架构:32位和64位)

    一.APP安装二维码需同时支持32位和64位手机 1.我目前使用的APP获取安装二维码的方式为谷歌aab分享 通过jenkins打包好APP的aab包,放到play internal app shar ...

  3. 32位dll注入到64位程序_你用的32位还是64位?有什么区别呢?

    (给程序员零距离加星标,了解项目开发.) 粉丝福利:小编会从今天留言中抽选3名小伙伴赠送现金红包,感谢大家一直以来的支持!文末见喽!通过前面两篇文章的学习,外甥对电脑的产生了各种好奇,差点把自己电脑拆 ...

  4. C++ 32位和64位

    C++32位和64位程序的区别 原文地址: https://blog.csdn.net/nma_123456/article/details/45077345 由于操作系统内存分配的不同,导致软件开发 ...

  5. 64 大小_电脑系统32位和64位有什么区别

    众所周知,windows系统有32位和64位,但这两者有什么不同呢?什么样的电脑装什么版本的呢?笔者就简单的来讲一下两者的区别. 一.支持的内存不同 32位的操作系统,最多支持4G的内存,实际内存为3 ...

  6. 如何让ios app支持32位和64位?

    将ios app转换为兼容32位和64位步骤:  1. 安装 Xcode 5.  2. 打开你的项目.Xcode会提示你更新你的项目,其中的警告和错误信息对于转换到64位相当重要.  3. 将你的项目 ...

  7. 计算机二级安装64位的还是,电脑操作系统安装,该选择32位还是64位?

    编辑:晴晨 我们知道,电脑系统有32位和64位之分,每次安装系统前,不了解的人总会犹豫到底该安装哪个?如果选择错误,那么结果就会出现系统性能下降.不兼容.安装失败等问题.不都是系统吗,为何会这样?这要 ...

  8. 怎么看台式计算机是几位的,怎么看电脑是32位还是64位?一目了然

    我们的电脑系统是分出了32位和64位系统的,而我们经常下载的一些软件也需要我们选择是安装32位的还是64位的,为了识别大于4G的内存现在一般也建议安装64位的操作系统,但怎么看我们的电脑系统是32位的 ...

  9. 32位和64位版本的Office异同点

    转载: https://jingyan.baidu.com/article/9989c7461bb945f648ecfeee.html 在大多数情况下,安装 32 位版本的 MicrosoftOffi ...

  10. 判断当前Windows XP操作系统是32位还是64位的方法

    昨天在调查怎样区分Windows XP32位和64位的问题,在网上找了一下,大家常用的有两种方法. 方法一.通过指针来判断. 在32位操作系统上指针长是4个字节,而在64位系统上指针为8个字节. 方法 ...

最新文章

  1. 题目1104:整除问题
  2. 堡垒机的使用-及功能
  3. Java解决CAS机制中ABA问题的方案
  4. 使用Delphi创建,解析,操纵XML文档
  5. cocos studio 基本功能添加——场景(Scene)
  6. 51单片机——蓝牙远程点灯
  7. Java IO流常用操作方法总结
  8. 数学分析:函数序列及其一致收敛性
  9. 学习编程之前应该先学习哪些基础?
  10. 网安信—web3.0是什么?
  11. 转载:TD之父李世鹤:TD即将安乐死
  12. 东大22春领导科学与决策X《领导科学与决策》在线平时作业2题目非答案
  13. aspcms修改数据报错问题
  14. 对于Android11无法访问Android/data的解决方案 还在为你的大姐姐找不到而担心吗?还在为你的学习资料找不到而发愁吗?2021-03-11
  15. Java“中文”编程-java为什么可以使用中文标识符
  16. 频率计的交流耦合和直流耦合的区别_示波器DC/AC耦合设置及影响
  17. python中size的用法.dim_【Numpy库学习笔记】Numpy中dim、shape和size的理解
  18. 【MySQL】Spring Boot项目基于Sharding-JDBC和MySQL主从复制实现读写分离(8千字详细教程)
  19. Java学习笔记分享之MySQL篇
  20. iPhone 拍照声音如何关闭?教你4招防止发出相机「咔嚓」声

热门文章

  1. 1052. 爱生气的书店老板
  2. Redis禁用危险命令
  3. day 05总结(格式化输出的三种方式/基本运算符/if判断)
  4. 实验 3 编程,编译,连接,跟踪
  5. 关于启动一个线程监控队列的替代方案
  6. GNU make manual 翻译(三十一)
  7. 不使用第三个变量交换两个变量
  8. ​什么问题最让程序员头秃?我们分析了11种语言的11000个问题
  9. php soap 两个版本_Ceontos 安装php7以上的版本
  10. Oracle发布了Java SE支持路线图,Java 8 支持到2030年