AS的那些坑---so库的依赖

写在前头

图片请无视,在51cto上面写的博客没办法发表,还是csdn牛逼,转移阵地

这篇blog是用来泄愤的,感觉没有写的话我今天自己受自己的那些气就白受了

因为so库的依赖问题,我把腾讯地图改成了百度地图

还是因为so的问题,改了百度地图差点又换成高德了

然而想想,肯定不是so的问题,绝逼是依赖的方式不对

因为Demo完全没问题

然后就懵逼了一天

网上找了各种方法,各种尝试都不见效

然而一个点子,就那么点一下,就都通了

--------------------废话分割线-----------------------


再废话一下,有时候技术就是差那么一点,一个地方没做好,他就是没办法跑起来,所以马虎不得

----------------------废话再次分割线-----------------------


废话说完,开始解决问题

本次要解决的问题是android studio的so库依赖问题


工具:Android Studio

场景:从es导过来的一个项目,然后手动更新so库跟jar包

问题:项目中总是找不到so库



1、基础版so库依赖

先说一下AS怎么依赖so库吧

用一个小例子来说明

wKiom1dWr_XRufwyAADQtdBd9qw454.png-wh_50

界面很简单,就一个按钮点击,上面显示定位地址

接下来我们下载百度的Demo,依葫芦画瓢把百度定位集成上去


需要注意的是


将工程目录切换到project视图,将jar文件拷贝到libs目录下,并且选中全部,右键添加到库


在与java同级目录下新建一个jniLibs目录,将so库拷贝到这个目录下面



接下来运行看看

wKioL1dWuHShWQzkAAM-kYYkkH0391.png-wh_50


很好,完全没问题,项目目录是这样的

project下的视图

wKioL1dWuNvTN3a4AABxeNoxiLg864.png-wh_50

android下的视图


wKioL1dWuRKRj365AABOm3MX9-0829.png-wh_50




需要注意的是我们的项目名称叫app

Gradle是这样子的

wKiom1dWuL3TIsiFAABPdMdEWyg208.png-wh_50


好的,你如果是从AndroidStudio那边直接新建一个项目再做依赖的话,那完全没有问题,还挺简单


2 Es项目迁移过来版的so库依赖问题


那么问题就来了

我们先新建一个es项目吧,让问题重现


很快,eclipse的做好了,上图

界面跟刚才AS的差不多

wKiom1dWvPmhCmLbAADRDRUHohg707.png-wh_50



ES的工程目录比较简单

wKioL1dWvgHyLxmPAAB1i62VbMM971.png-wh_50

运行起来也是没问题

上图

wKioL1dWvoiDZDiAAANAxQE4U7o132.png-wh_50




嗯,蛮快的,现在我们需要把ES的项目导入as

运行起来也是没问题的,我就不截图了

接下来看看

wKioL1dWv6jgxPMAAAIYI9lIJyo267.png-wh_50

嗯,完全没问题,但是因为项目太过简单,我们得做一些手脚

我们把项目名称由app--->esApp

因为很多时候我们的项目足够复杂或者你依赖的一些库包含一个完整的Demo的话,AS就不会将我们的主要应用自动识别并改名叫app


可惜这个场景没有再重现,后面看到再来补充

就是当你的项目名称不是app时就会出现找不到so库的情况

原因是因为AS默认的so库的路径是app\src\main\jniLibs,如果你的项目名称不是app的话就找不到so文件

所以有两种解决方法


一 将你的主项目名称改为app


二 将so库都放在libs目录下,然后再gradle那边配置


sourceSets main jniLibs.srcDirs





wKioL1dWxkWSCXD_AACvY2ugpLw230.png-wh_50



这样运行起来就没问题了









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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值