Android Gradle so文件注意事项

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Gradle so文件注意事项相关的知识,希望对你有一定的参考价值。

参考技术A 项目管理迁移到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的目录去解决问题。

android studio 编译C文件出错

1、还要在gradle.properties里面加上这么一句话:
android.useDeprecatedNdk=true
2、打开app Module的build.gradle文件,在defaultConfig节点里添加以下代码
注意这里的moduleName,是我们在之前自己编写的类里面加载的so库名 ndk {
            moduleName "JniTest"
            ldLibs "log", "z", "m"
            abiFilters "armeabi", "armeabi-v7a", "x86"
        }

检查以上这两步就可以解决问题了!

本文出自 “苦逼的研发猿” 博客,请务必保留此出处http://adu668.blog.51cto.com/3900875/1963303

以上是关于Android Gradle so文件注意事项的主要内容,如果未能解决你的问题,请参考以下文章

android studio 编译C文件出错

android studio 编译C文件出错

如何在Android Gradle中添加原生so文件依赖

android项目中如何加载已有so库

如何在Android Gradle中添加原生so文件依赖

如何在Android Gradle中添加原生so文件依赖