文档章节

Android so文件是32位时,如何在64位手机上运行。

星雨gg
 星雨gg
发布于 2016/10/11 11:32
字数 502
阅读 366
收藏 2

今天遇到一个很蛋疼的问题,使用了网上的开源二维码扫描,所用的so文件是32位的,在64位手机上报错,解决的办法是在项目目录下的build.gradle文件中添加如下字段

输入图片说明

然后在项目文件夹下的gradle.properties文件中加入

android.useDeprecatedNdk=true   

这时你的32位SO文件就可以在64位手机上运行了。

首先要明白ABI的概念: ABI(Application Binary Interface)实际就是指应用程序基于哪种指令集来进行编译,我们能用到的ABI 也就四种 armeabi armeabi-v7a x86 和mips ,前两者是最常见的。

其次这4个编译选项的含义: 1.‘armeabi’ – 默认选项,将创建以基于 ARM* v5TE 的设备为目标的库。 具有这种目标的浮点运算使用软件浮点运算。 使用此 ABI 创建的二进制代码将可以在所有 ARM* 设备上运行。 2.‘armeabi-v7a’ – 创建支持基于 ARM* v7 的设备的库,并将使用硬件 FPU 指令。 3.‘x86’ – 生成的二进制代码可支持包含基于硬件的浮点运算的 IA-32 指令集. 4.mips — 支持应用二进制接口

总结: APP_ABI 赋值,就是为了交叉编译生成相应芯片可执行的指令集。直观的看就是如果你将 APP_ABI := armeabi armeabi-v7a mips x86 那么在你的android工程下边的 libs 里边会出现 armeabi armeabi-v7a mips x86 这四个目录下会分别生成 4个.so文件。程序在Android手机运行时,根据手机自身CPU芯片不同,去选择调用相应的.so文件。

附:如果要是使用eclipse开发。直接删除arm64-v8a文件夹,和所依赖的动态库中的arm64-v8a,因为64可以向下兼容32位。所以请保持各个包中so文件相同。

http://blog.csdn.net/k316378085/article/details/52034530 http://blog.csdn.net/qq_15003505/article/details/51592431

© 著作权归作者所有

星雨gg
粉丝 1
博文 20
码字总数 3885
作品 0
程序员
私信 提问
【最新】LuaJIT 32/64 位字节码,从编译到使用全纪录

网上关于 LuaJIT 的讨论,已经显得有些陈旧。如果你对 LuaJIT 编译 Lua 源文件为具体的 32位或64位字节码,极其具体使用感兴趣的话,不妨快速读一下这篇文章。此文章针对尝试在 iOS 或 Andr...

ios122
2018/07/11
139
3
首个 64 位 Android 手机没有 64 位软件

HTC发布了64位Android手机Desire 510,运行高通的64位处理器Snapdragon 410。虽然有64位处理器,但Desire 510没有64位软件,它运行的是32位的操作系统Android 4.4。Android生态系统还没有做好...

oschina
2014/08/29
5.3K
48
Android Q 开发者最常见问题

Device ID Q: 预装应用可以获取设备ID,这里对预装应用的定义、标准和范畴是什么?是否由厂商系统设置名单? A: 厂商预装的系统应用。具体来说,应用必须获得 READPRIVILEGEDPHONE_STATE 权限...

Android_开发者
05/17
0
0
Android 64和32位so是如何兼容的

前言 不知道大家在设置abi的时候,有没有考虑过这个问题。不同的abi之间有什么区别。32位so又是如何运行在64位机器上的。这个是如何兼容的呢? 从Zygote说起 相信有了解过系统源码的同学都知...

全世界_Coder
2018/10/27
0
0
Android Q 开发者常见问题 | FAQ・第二期

64-bit Q: 为应用添加 64 位架构支持会带来 APK 的体积增大,但 Google Play 只允许上传最大 100MB 的 APK,这种情况应该如何解决? A: 我们强烈建议您使用 Android App Bundle,这是 Androi...

Android_开发者
07/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 年迈渔夫遭黑帮袭抢

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享Elvis Presley的单曲《White Christmas》: 《White Christmas》- Elvis Presley 手机党少年们想听歌,请使劲...

小小编辑
今天
1K
17
CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
昨天
5
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
昨天
8
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
昨天
12
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部