Android设备rfid—lib文夹下的armeabi-v7a armeabi arm64-v8a

今天,开发的是一款手持移动终端,android系统的,集成了RFID模块和扫描模块。现在将遇到的一些问题总结一下


1.客户在之前给了2个demo,分别对应RFID和扫描,发现直接安装都出问题...后来联系他们才知道他们给错了开发demo,此处和具体技术问题没啥关系。。


2.集成环境,导入jar包到libs下,复制so到程序里libs---armeabi目录下。


3.根据demo的代码,集成到自己所要开发的程序中,就遇到了第一个问题,居然直接秒退,而且连log都没有。 后面定位下,发现是在mRFID.init()函数时发生错误。因为客户提供的是jar包,也没有底层文件,调试也没有办法。东改西改没有找到问题的根源,后来偶然看到这么一条log,是我们自己软件里该有的一个包。

 08-23 20:36:37.576: E/socket(21153): Native library not found! Please copy libbdpush_V2_2.so into your project!

我看了下,这个包不是好好的存在在libs---armeabi目录下吗?我就试着将rfid所需要的so文件复制到libs---armeabi-v7a目录下,就可以运行了。


难道android编译会分系统吗?针对armeabi-v7a armeabi arm64-v8a,我觉得还是有必要查下其中的关系。

根据所查的资料(链接在文章尾部),将个人理解说下:

现在的安卓机的CPU各不相同,而且现在做的是往下兼容的,如果你是高版本的,则会先去高版本对应文件夹中查找so文件,如果找不到则依次往下,后面找不到,则会直接报错,导致秒退

Android系统目前支持以下七种不同的CPU架构:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x86_64 (从2014年起),每一种都关联着一个相应的ABI。

如果没有该文件夹,去找armeabi-v7a文件夹,如果没有,再去找armeabi文件夹,如果连这个文件夹也没有,就抛出异常 
如果有arm64-v8a文件夹,那么就去找特定名称的.so文件,注意:如果没有找到,不会再往下(armeabi-v7a文件夹)找了,而是直接抛出异常

参考资料:

1.我的Android进阶之旅------>Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
http://m.blog.csdn.net/article/details?id=51168072

2.

jni中arm64-v8a,armeabi-v7a,armeabi文件夹的意义和用法

http://m.blog.csdn.net/article/details?id=51168072


http://m.blog.csdn.net/article/details?id=51168072

你可能感兴趣的:(Android,硬件对接)