android 5.0 ,zbar扫描java.lang.UnsatisfiedLinkError,找不到so文件

   昨天碰到一个这样的问题,用libzbar扫描二维码,在Android 5.0以下的手机扫描正确没问题,但是在5.0的手机上会出现java.lang.UnsatisfiedLinkError异常,导致程序崩溃。

   网络搜索是找不到libzbar.so文件,但是在我们项目的..libs/armeabi文件夹里,明显有这个文件啊,搞得我纳闷莫不清楚头脑。后面继续看错误log描述说是在..libs/arm64找不到libzbar.so文件。好了,找不到我就把armeabi文件夹里的so文件复制到arm64-v8a这个文件夹下,当时还小得意了一下,以为可以搞定,然后新问题来了,说libzbar.so是32位的不是64位的,没有效果,依然报错奔溃。然后我又去网上找64的这个相应文件,可惜都没有找到,ios的.a文件倒是有,不过我们不能用。

  后来我猜测了一下,android 5.0的手机在libs目录下有arm64这样的文件,他仅会去arm64里面找对应的so文件,没有找到so文件就直接报找不到那个文件的错误,系统奔溃。假如有的话,会先检查这个so是不是64位的,不是64位的话依然报错,奔溃。

   最后解决方案就是,把lib目录下的arm64的文件夹删掉了,在没有这个文件夹的情况下,系统只能去armeabi文件夹去找,也不会对比是否是64位了,然后系统照常运行,可以扫描了,ok了。。然后别当心arm64的删除了会影响其他功能,删除前我对比了下,在arm64里面有的so文件,在armeabi文件夹照样存在。比如百度定位的照样可以使用。


解决这个bug之后,回想百度定位也有这个问题了,在百度sdk5.0的时候,也碰到过这样的问题,不过后来被我升级到6.0了,不同的是,官网提供的相应的arm64文件夹下有64位的so文件就是了,想想当时不要升级6.0的,只要把那个删除也是可以解决问题的。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值