最近在开发中遇到了一个问题,因为项目需要集成不同的sdk。相对应的也是不同的.so文件。 针对libs中.so库的引入会遇到一些问题。 比如要集成第三方NDK库: 如果是在eclipse中,需要放到libs下对应库的目录。 但是这里会有一个问题,就是如果使用的是AndroidStudio,但是想用libs下的库,还需要手动去指定库的位置: 在App下的build.gradle中加入以下配置。
在集成第三方服务商sdk的时候,大多数都会让你下载demo,或者是SDK集合包,让你直接拷贝整个libs或者jniLibs目录,合并本地项目。这样就会出问题。 以讯飞语音开发文档、百度语音开发文档和极光推送文档为例 讯飞的文档中说明是将libs目录下所有的文件拷贝至自己项目中的libs目录。 百度的则是将app/src/main/jniLibs下的所有文件拷贝至自己的项目。 极光文档就显得比较人性化 如果你要集成前面两家的sdk,显然就会出现冲突。 build配置后,jniLibs库就无法被识别。但是不配置的话,libs库无法识别。 所以要解决的话,就抛弃前面的文档吧。 说点题外话 在第三方提供的NDK库中,大多都是成套的为了适配不同的cpu厂商,也就是常说的高通,联发科这些。 在拷贝库的时候也会成套的拷贝进项目,一般是四五个,百度语音的.so库全部导入的话加起来足足在15M以上。 所以在选择第三方服务的时候这也是需要考虑的一个因素。 如果要精简通过so库来减少安装包的大小其实还可以通过动态选择需要添加的.so库 在App下的build.gradle中配置:
这样就可以指定加载库。 |
|