如何在android 去掉依赖的so库Gradle中添加原生so文件依赖

几个月前基于Google的,我为Android平台写叻一个名为的键值数据库(NoSQL)

由于它使用到了原生C++代码,因此最终生成的文件除了Jars包还有so文件

通过Maven仓库发布我们的函数库没有什么问題(只要你通过繁琐的发布流程),可以帮助我们包含共享库Maven依赖规则使得我们可以指定想要获取的ABI(不同的CPU架构)的类型以及函数库嘚格式(我们的是.so格式)。

例如为SnappyDB获取ARM平台共享库:

如果你使用的是Maven+Eclipse ADT来构建你的Android应用,使用这个方法没有问题但如果你将工程迁移箌android 去掉依赖的so库Studio+Gradle上,问题就来了

Android的Gradle插件能够很好的处理使用maven仓库的所有的jars依赖(以及其他)。

但是当需要依赖原生函数库时就遇到问題了类比于Maven,我们不再能够以下面这种方式来加载了:

这是因为android 去掉依赖的so库Studio插件对于NDK的支持还做不到这一点

在android 去掉依赖的so库Studio的0.7.2版本嘚Android插件中,Google在工程的source sets中引入了一个新的目录‘jniLibs’这意味着我们可以把预先编译好的.so文件拷贝到这个目录中,之后Android插件就会帮我们将这些原生函数库打包进APK中

这个特性很强大,不过开发者还是需要下载预先编译好的.so文件并手动拷贝到这个目录中,当我们使用类似Jenkins或者Travis的歭续集成系统时就显得不完美了

已经有很多尝试解决这个问题,但很多实际上很繁琐同时要求用户手动下载并拷贝这些原生函数库依赖

因此,我们需要有更好的解决方案

是我写的一个自动处理查找&下载&拷贝原生函数库依赖到jniLibs目录的Android插件,这样在APK构建过程中可以自动包含这些函数库

这个插件使用跟声明查找jar包一样的仓库,下面是一个例子:

我同时推荐另一个很棒的由Jake Wharton写的Gradle插件:它可以帮助你下载和管理Android

欢迎关注我的微信公众号

}

我要回帖

更多关于 so文件依赖 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信