项目管理迁移到gradle已经用了大半年了,对so文件的添加了解的还不清楚,直到今天经过各种试验,总算是得出一些心得。
因为项目需要集成喜马拉雅的SDK,他们提供了播放器的so库,按照他们的官方文档一步一步去集成,包括参考他们SDK DEMO的例子,尝试了快一天,一直报错,报错的原因是找不到so文件,我添加so的方法如下:
1.在project/src/main/目录下建立jniLibs
2.复制SDK提供的armeabi文件夹放到jniLibs下,build.gradle文件无需修改。
3.编译运行,无法成功。
经过多次尝试,我又尝试着自己在jniLibs下建了另外一个文件夹armeabi-v7a,然后把armeabi文件下的两个so文件复制到此目录下:
编译成功,运行也成功,播放器能正常播放了。
armeabi跟armeabi-v7a目录下的两个so文件是一样的,但是不知道为什么加了armeabi-v7a这个目录就好了。
确认so文件是否打包到apk了可以用adb 查看/data/app/com.xxx.xxx/lib/arm(需要root权限)下是否生成了.so文件,比如上面编译成功后,会在此目录下生成相应的so文件
之前用高德地图的时候也碰到过这个问题,so无法打包到apk,高德的SDK也只是提供了armeabi,遇到这种情况,我们可以自己建立一个armeabi-v7a的目录去解决问题。