The library 'xxx.jar' contains native libraries that will not run on the device. 解决方法(Eclipse)

I、 遭遇

由于项目后续开发需要,不能直接连子库,需要将子库编译成jar或其他方式添加到主工程中。我想到的最简单的方法就是把子工程export成jar,然后将此jar添加到主工程。

跟想象的一样,很顺利,编译也通过了,但在运行的时候突然提示出错:

[2018-05-04 10:54:28 - Test4Unity13] The library 'libcv.jar' contains native libraries that will not run on the device.
[2018-05-04 10:54:28 - Test4Unity13] The following libraries were found:
[2018-05-04 10:54:28 - Test4Unity13]  - libs/armeabi-v7a/libnative_camera_r2.2.0.so
[2018-05-04 10:54:28 - Test4Unity13]  - libs/armeabi-v7a/libnative_camera_r2.3.3.so
[2018-05-04 10:54:28 - Test4Unity13]  - libs/armeabi-v7a/libnative_camera_r3.0.1.so
[2018-05-04 10:54:28 - Test4Unity13]  - libs/armeabi-v7a/libnative_camera_r4.0.0.so
[2018-05-04 10:54:28 - Test4Unity13]  - libs/armeabi-v7a/libopencv_java.so

[2018-05-04 10:54:28 - Test4Unity13]  - libs/armeabi-v7a/libopencv_java3.so

……


然后就去请教度娘,n多同道中人指点如下方法:

在Perferences页面中,将Force error when extenal jars cpmtain native libraries中的选项勾去掉,然后Clean即可。

该配置项的位置:Eclipse->windows->Perferences->Android->Build

于是我也尝试了一下,编译通过,但运行的时候结果还是如此。


然后,我想既然上面的so文件系统不知道,那不如直接将库工程中的所有so,jar都copy到主工程中,然后再export 库工程的jar,这是很朴素的想法,相信很多xdjm也想到了:)

接着我按照上述思路,进行了如下尝试:

1)将缺失的so文件都copy到主工程lib下(我这里没有jar)

2)重新导出库工程的jar,注意这个时候就不要包括已经copy出来的这些so了

3)将新导出的jar copy到主工程的lib下

然后Clean,编译通过,跟预期的一样。

最关键的时刻来了,运行,成功!说明上述工作让编译系统找到了so了,接下来就要看看牵扯到的子库工程是不是好使了。

猜对了!

一切正常,问题解决。


II、总结

遇到此类文件,解决方法有:

方案一:

在Perferences页面中,将Force error when extenal jars cpmtain native libraries中的选项勾去掉,然后Clean重新编译。

该配置项的位置:Eclipse->windows->Perferences->Android->Build


方案二:

按照如下操作,然后编译运行:

1)将缺失的so文件都copy到主工程lib下(我这里没有jar)

2)重新导出库工程的jar,注意这个时候就不要包括已经copy出来的这些so了

3)将新导出的jar copy到主工程的lib下


总结一下:

如果导入库工程直接编译不通过(前提是文件不少哈),考虑用方案一,如果好使了就没问题了。不行再用方案二。

如果方案二还是解决不了,又没有好的思路,时间又紧急,那只能用最后的杀手锏——

把库工程整个挪过去(有点low哈,慎用-_-)


PS:再提醒xdjm,导入库工程时,一定要注意库工程是否有服务,广播之类(在manifest里面),一定要挪到主工程中去。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值