在根项目的local.properties中添加ndk目录(ndk-bundle所在目录)

在根项目的gradle.properties中添加

android.useDeprecateNdk = true

在app目录下创建libs目录,用于放置so文件,将so文件复制进去

方法一:

在app的builid.gradle中的android{····}中添加以下内容

sourceSets{    main{            jniLibs.srcDir 'libs'    }}

此内容表示将jni目录源定位置app下的libs目录中

最后在要调用so库的地方引入so库

static{    System.loadLibrary("vcom");}

其中vcom是so库的名称,在这里so库的完整名称是libvcom.so。

方法二

在方法一中队jniLibs的目录进行重定向是由eclipse带来的,因为android开发在使用elipse时代就是将so文件放置在libs目录中。
而在现今,如果你使用android studio那就方便多了,只需要在main目录下创建jniLibs目录,然后再把so文件复制进去就可以了

使用so文件出现的问题

使用so文件最常见的就是报找不到so库之类的问题了,它可分为以下集中情况(使用android studio开发):

问题一

确实没有正确的导入so库,也就是你的so文件放错位置,可使用上面两种调用so文件的方法解决。

问题二

已经正确导入了,但是仍旧报错。这种情况有可能是没找到CPU架构对应的.so文件,如同样都是arm平台,你设置armeabi目录,可是系统需要的是armeabi-v7a的so文件,这时就会报错。

这个问题的解决方法只需要创建armeabi和armeabi-v7a目录,将so文件都复制一份就可以了。同时还有其他的CPU架构对应的文件,也采用同样方法,需要注意的是intel架构和arm架构的平台所需要的so文件是不一样的。

问题三

前面都试过了,仍旧有问题,那么可以看看是否调用so方法的路径有问题。
如使用jni生成so文件时,你的native方法的是在com.example.Hello.class里面。

然而你创建另一个项目时,将Hello.class文件放在com.myapplication路径下,这时也会报找不到so库的情况。
解决方法也很简单,在项目下创建com.example的路径,然后将Hello.class复制进去就好了。

以上就是我在工作中调用so文件的经验以及遇到的问题,希望对大家有所帮助。

相关资料:关于Android的.so文件你所需要知道的
http://www.jianshu.com/p/cb05698a1968

更多相关文章

  1. Android在线修复bug框架AndFix调研
  2. 细说:AndroidStudio插件
  3. 毕业设计遇到的问题及解决方法
  4. Android逐帧动画,逐帧动画加载图片过多时OOM异常的解决和替代方法
  5. [android]android自动化测试六之命令行编译APK
  6. android sms接收流程(ril分析)
  7. 用ndk-build 编译C语言文件,生成可在android系统上运行的文件
  8. 属性方法介绍——View(1)
  9. Android(安卓)Studio API23以后HttpClient

随机推荐

  1. Android中的DownloadManager
  2. Android官方技术文档翻译——Gradle 插件
  3. Android(安卓)用代码获取基站号(cell)和
  4. Android热插拔事件处理流程
  5. Android(安卓)Battery 分析
  6. 在屏幕上方是actionBar tab的ViewPager页
  7. Android(安卓)Custom Dialog错误Unable t
  8. Android(安卓)开发源码分享
  9. Android(安卓)uses-feature
  10. Android实现仿gallery垂直滚动的效果