这几天一直在对接不同厂家的POS收银机,各大POS机厂商通常有自己的SDK和.so库文件。
在对接某一款机器的时候,按照开发文档导入jar包,复制.so文件到jniLibs文件夹中,顺便说一句android studio引入.so文件,需要在与java文件夹同级的地方新建一个jniLibs的文件夹,把.so库文件复制到该文件夹中,然后as会来该目录中读取。
本来我以为只要按照这个流程就能找到了,没想到各种调试就是不行,as报错就是找不到库文件,几经折磨,也问过了对方的技术人员,到最后技术人员都说无法帮忙。
最后万念俱灰的时候,发现一般.so库文件都是放在一个叫(armeabi)的文件夹下,对结果其他的机器,就发现有的机器不止一个(armeabi)的文件夹,有的还有
(armeabi-v7a)、(arm64-v8a)的文件夹,而且!他们下面都放的是相同的.so文件,然后我就尝试着把这款机器的.so库文件也复制到这些文件夹中,一跑项目居然成功了。真的泪崩,随后特意去网上搜了一下。发现:
1.不同机器可能有不同的CPU
2.CPU可能是有着不同的架构的
3.不同架构的CPU可能对应着不同的ABI(应用程序二进制接口(Application Binary Interface),不用管..),包括:armeabi,armeabi-v7a,x86,mips,arm64-v8a,mips64,x86_64。
4.所以我对接时的.so文件一直找不到就有可能是因为这个原因!
上面的结论都是我参考下面这篇帖子来的,帖子的作者对.so相关的东西都进行了详细的介绍,大家可以去仔细看一下:
http://www.jianshu.com/p/cb05698a1968
在对接某一款机器的时候,按照开发文档导入jar包,复制.so文件到jniLibs文件夹中,顺便说一句android studio引入.so文件,需要在与java文件夹同级的地方新建一个jniLibs的文件夹,把.so库文件复制到该文件夹中,然后as会来该目录中读取。
本来我以为只要按照这个流程就能找到了,没想到各种调试就是不行,as报错就是找不到库文件,几经折磨,也问过了对方的技术人员,到最后技术人员都说无法帮忙。
最后万念俱灰的时候,发现一般.so库文件都是放在一个叫(armeabi)的文件夹下,对结果其他的机器,就发现有的机器不止一个(armeabi)的文件夹,有的还有
(armeabi-v7a)、(arm64-v8a)的文件夹,而且!他们下面都放的是相同的.so文件,然后我就尝试着把这款机器的.so库文件也复制到这些文件夹中,一跑项目居然成功了。真的泪崩,随后特意去网上搜了一下。发现:
1.不同机器可能有不同的CPU
2.CPU可能是有着不同的架构的
3.不同架构的CPU可能对应着不同的ABI(应用程序二进制接口(Application Binary Interface),不用管..),包括:armeabi,armeabi-v7a,x86,mips,arm64-v8a,mips64,x86_64。
4.所以我对接时的.so文件一直找不到就有可能是因为这个原因!
上面的结论都是我参考下面这篇帖子来的,帖子的作者对.so相关的东西都进行了详细的介绍,大家可以去仔细看一下:
http://www.jianshu.com/p/cb05698a1968