解决 .so文件64与32不兼容问题

http://blog.csdn.net/vhawk/article/details/49964475

android64位机子兼容32位.so库文件

2016-11-25 19:39 5416人阅读 评论(13) 收藏 举报

版权声明:本文为博主原创文章,未经博主允许不得转载。

猴子在调用高德地图的时候,遇到一个操作系统兼容问题,异常堆栈说是找不到so库文件,猴子就不懂了,明明有他说的那个文件。

后来和同行交流,他们的jniLibs中有一个arm64-v8a的文件夹用来存放64位操作系统的so库文件,于是猴子自己建了一个arm64-v8a文件夹,因为高德并没有把64位的so库文件公布出来,所以,猴子直接把他们唯一的so库考到了arm64-v8a文件夹下。自以为这下就该好了,于是等待见证奇迹。奇迹果然发生了,爆出了那个so库是32位而非64位的异常。猴子果断蒙圈了。下载了高德的demo,看到她们的demo里面也只有armeabi这一个库文件夹。这让猴子感觉到,64位的操作系统可以兼容32位的库文件。于是多方查找资料。终于在一家英文网站上找到了答案。

解决方案也很简单,在build.gradle中加上,这句话的意思大概就是,告诉程序加载如下的so文件

Android.useDeprecatedNdk=true

就可以了。

运行,终于能奇迹般地运行起来了。

java.lang.UnsatisfiedLinkError: dlopen failed: /data/app/com.lvshandian.partylive-1/lib/arm/libutility.so: has text relocations

解决办法:修改targetSdkVersion 至22
时间: 2024-10-13 13:17:24

解决 .so文件64与32不兼容问题的相关文章

64位进程调用32位dll的解决方法 / 程序64位化带来的问题和思考

最近做在Windows XP X64,VS2005环境下做32位程序编译为64位程序的工作,遇到了一些64位编程中可能遇到的问题:如内联汇编(解决方法改为C/C++代码),long类型的变化,最关键的遇到了64位进程需要调用32位dll的问题.由于有一些32位dll没有源代码,无法重新编译为64位dll,所以只能想办法解决64位进程调用32位dll问题,这个问题让我很是挠头了几天. 相关资料:微软公司的官方网站针对这个问题描述如下:在64位的windows系统中,一个64位进程不能加载一个32位

解决在linux下编译32程序出现“/usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件或目录问题”

centos64位编译32位代码,出现/usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件或目录,需要安装32位的glibc库文件. 安装32位glibc库文件命令: sudo yum install glibc-devel.i686(安装C库文件) sudo dnf install glibc-devel.i686(fedora命令) 安装32位glibc++库文件命令 sudo  yum install libstdc++-dev

ubuntu 13.04 64位安装32位兼容包

未安装32位兼容包,编译出现未找到指定目录下gcc命令,则安装兼容包:sudo apt-get install ia32-libs 若提示:不能安装,与相关软件冲突,则按如下安装: 在网上找到更新源,必须指定这个源ppa:ubuntu-x-swat/x-updates,然后刷新源列表.具体命令是: 1,sudo add-apt-repository ppa:ubuntu-x-swat/x-updates 2,sudo apt-get update 3 sudo apt-get upgrade 4

解决头文件中定义全局变量MSVC、GNU编译器出现重定义问题

有时候我们经常碰到这样的事情,想定义某个类的静态成员,在头文件中定义该成员或者全局变量,头文件又同时被多个文件引用到,链接的时候则会出现,重定义,但是又不想在cpp文件中定义,现有一种方法可以解决此问题,直接上代码 #if defined(_MSC_VER ) __declspec(selectany) #elif defined(__GNUC__) __attribute__((weak)) #else #error "unknown complier" #endif int a=1

解决PLSQL连接64位Oracle的问题

由于现在的笔记本大都是64位的window7系统,然而PLSQL_Developer没有64位的,这造成了我们连接的麻烦,这里教大家怎么将win7_oracle11g_64位连接32位PLSQL_Developer. 我实践了很多次,但一直报错: 1.没有数据库实例 2.没有正确安装32位客户端 3.适配器错误 我的工具: 已经装好的64位Oracle数据库 window7_64位的操作系统 PLSQL_Developer 9.0以上版本(目前只有32位的) 官方的 instantclient-

解决cocoapods在64位iOS7系统下面的警告问题

今天碰到一个很奇怪的问题,XCODE提示这样的警告 Pods was rejected as an implicit dependency for 'libPods.a' because its architectures 'i386' didn't contain all required architectures 'x86_64' 在网上搜了一篇,解析是这样的,因为pod 是以ARM64 的编译打包的,而在我的项目中指定 valid Architectures 是armv7,所以就报上面的

微软官方原版win7(64位/32位)旗舰版系统下载【适合所有品牌】 此博文包含图片 转载▼

好多友友一直在问,需要微软官方win7系统,特别是64位win7旗舰版由于联想官方(其他品牌相同)没有提供(只有家庭基础版),好多都需要.网上虽然也有,但是良莠不齐,需要自己去甄别,这对于新手很困难的.基于此,我特在这里为大家提供32/64位的微软官方原版系统下载.需要注意的是,这里所提供的系统适合任何品牌的电脑,任何品牌的电脑安装之后都不能自动激活(因为不是品牌官方定制系统而是微软官方原版),需要密钥.当然这已经不是问题了,我提供的软激活也非常管用,完全和使用正版一个样!所以,如果是联想的电脑

如何解决rar文件解压缩失败

附件经常会是一系列的压缩文件,下载是默认文件名是一个随机数字.因而下载完会出现压缩文件解压缩失败解决方法:下载时重命名为带一定顺序的文件名,如文件1,文件2,文件3等 如何解决单个文件解压失败?论坛中的许多资料都是使用RAR压缩的,上传到下载,在解压过程中可能会出现错误.一般出现最多的是“CRC”错误,就是在解压末端出现了错误.主要的原因是:1.源文件就有压缩的错误:2. 下载的时候由于线程太多,在收尾的时候出现了错误:3.下载没有完全. 解决的办法:一.修复. 1.首先打开WinRAR主窗口,

Win7 64位 + LoadRunner 11录制时弹不出IE的解决办法 Win7 64位 + LoadRunner 11录制时弹不出IE的解决办法

Win7 64位 + LoadRunner 11录制时弹不出IE的解决办法 Win7 64位 + LoadRunner 11录制时弹不出IE的解决办法 1. 卸载IE9( 装了Win7 64位后,默认的IE是IE9,先把IE9卸载. 打开控制面板->程序->查看已经安装的更新,找到IE9卸载,重启. 卸载后,IE自动变为IE8. 其中存在C:\Program Files\Internet Explorer下面的是64位的IE, 存在C:\Program Files(x86)\Internet