Android Studio导入.so文件

最近由于需要接一个摄像头的sdk(萤石sdk,不知道大家接没接过,过程有点艰辛~),通过Android Studio去集成的过程中发现了一个坑,就是sdk所包含的.so文件无法被我们的sdk所包含,所以在运行我们的sdk的时候,就会报java.lang.UnsatisfiedLinkError这样的错误。但是,当我使用Eclipse 也就是ADT导入我的萤石sdk的时候,就没有发生这个问题。这让我很是困扰。那么怎么导入.so文件呢,通过查阅资料和自己的尝试,我在这里总结了两种方法,分别如下: 

第一种方法是目前Android Studio里集成.so文件较为普遍的方法。就是把我们的.so文件放在src\main\jniLibs目录下,如果没有jniLibs文件夹,则需要新建一个文件夹jniLibs,注意文件夹的名字不能有偏差。如果我的应用是app的话,那么我的.so文件的路径应该是app\src\main\jniLibs\armeabi\XXX.so。这种方法较为简便,不需要对gradle中添加任何代码。但是,通过实践,我发现这种方法并不是屡试不爽,因为我在使用萤石sdk的时候,发现在Android Studio里用这种方法依旧无法导入我们的.so文件。而其他较为主流的sdk,如友盟sdk,百度地图sdk,个推推送sdk等,则完全可以用第一种方法来导入.so文件。


我只好寻找其它的方法,终于发现第二种方法,也可以在Android Studio环境下导入我们的.so文件,对于这个奇怪的萤石sdk的so文件也是同样可行的。它的大概步骤是:  

第一步,我们新建一个文件夹名为“lib”;  

第二步,我们把应该放在jniLibs里面的所有的文件夹全部拷入lib文件夹底下,比如armeabi和x86文件夹等,这些文件夹也当然包含着相应的so文件;

第三步,把lib文件夹压缩为zip压缩文件,改名为armeabi.jar,也就是后缀也改成了jar文件;  

第四步,把生成的armeabi.jar文件放在app\libs文件夹下(app是我们的项目);  

第五步,同步(sync)我们的项目,然后编包在我们的设备上运行,就会发现之前找不到库的问题消失了。


上面这种方法也是可行的,萤石sdk的so文件也被包含进了我的apk文件正常运行了。这里有一点我还不是很明白,就是问什么同样的SDK,Android Studio 无法导入而ADT Eclipse却可以正常导入。因为自己从Eclipse转Android不是很久,对于这个问题的原理不是很清楚,如果大家有建议的话,不妨提给我。话转回来,如果第一种方法不可以的,我们不妨试一下第二种方法。两种方法都很简便,基本不需要对build.gradle文件进行修改。希望能对大家有一些帮助。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值