在根项目的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 studio调用so方法,android studio中的so库调用相关推荐

  1. 【Android NDK 开发】NDK 交叉编译 ( Ubuntu 中交叉编译动态库 | Android Studio 中配置使用第三方动态库 )

    文章目录 I . 动态库 与 静态库 II . 编译动态库 III. Android Studio 使用第三方动态库 IV . Android Studio 关键代码 V . 博客资源 I . 动态库 ...

  2. import android.view.window;,尝试在空对象引用上调用虚拟方法‘android.view.Window$回调...

    尝试在空对象引用上调用虚拟方法'android.view.Window$回调-android.view.Window.getCallback()' 当我SplashActivity打开LoginAct ...

  3. android颜色值的表示方法android:background=#FFFFFFFF的意思

    android颜色值的表示方法 android:background="#FFFFFFFF"的意思 Android中的颜色值是通过红(Red).绿(Green).蓝(Blue)三原 ...

  4. android 连续调用js方法,Android的WebView中的JavascriptInterface:对JS的多次调用会导致死锁...

    这是我用过的整个Java代码.我将在下面更详细地解释... public class Test7 extends Activity { //debug private final static Str ...

  5. android 矢量图片使用方法,Android中的矢量图

    概述 VectorDrawable是通过XML文件中的一系列点,线和曲线及其相关颜色信息定义的. 使用VectorDrawable的主要优点是图像可扩展性. 它可以缩放而不损耗显示质量,这意味着相同的 ...

  6. android 虚方法,尝试在空对象引用上调用虚方法’android.view.View android.view.View.getRootView()’...

    我收到这个错误, "Attempt to invoke virtual method 'android.view.View android.view.View.getRootView()' ...

  7. android webview调js方法,Android中WebView与H5的交互,Native与JS方法互调

    项目中经常用到WebView与H5的交互,一个是H5调本地方法,一个是本地调H5方法,在此记录一下. 首先,启用JS支持 //启用js支持 webSettings.setJavaScriptEnabl ...

  8. android 开启子线程方法,android中开启子线程

    AndroidRuntime(673): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example/ ...

  9. android 设置全屏方法,Android中设置全屏的方法

    在开发中,我们经常需要把我们的应用设置为全屏,这里有两种方式: 一是在代码中设置; 二是在配置文件中设置 一. 在代码中设置 public class BaseActivity extends Act ...

  10. Android解析xml的方法,Android中解析XML格式数据的方法

    XML介绍:Extensible Markup Language,即可扩展标记语言 一.概述 Android中解析XML格式数据大致有三种方法: SAX DOM PULL 二.详解 2.1 SAX S ...

最新文章

  1. 写入和读取图片(c# asp.net sqlserver)
  2. 【技术贴】虚拟机 VMware win7 win8网卡驱动下载 解决虚拟机不识别网卡没有本地连接...
  3. 正则表达式相关案例(很实用很强大)
  4. Scala中集合类型与java中集合类型转换
  5. 【转摘】Word提升效率的快捷键
  6. python 组合数库函数_Python数据分析之Numpy库(笔记)
  7. CSS仿艺龙首页鼠标移入图片放大
  8. LeetCode-Scramble String
  9. 信息学奥赛一本通 1134:合法C标识符 | OpenJudge NOI 1.7 06
  10. VS2010 Beta1 / .NET Framework 4 Beta 1 - 下载
  11. [C++] Vector对象的合法定义
  12. 机器学习基础算法24-SVM理论部分
  13. postgresql是如何求年龄的_负债累累如何度过难关?她依靠此法三年还清300多万债务!...
  14. java pdf文件如何转换tiff文件_C#实现TIF图像转PDF文件的方法
  15. teststand 2020|ni teststand 2020(测试管理软件) 附安装教程
  16. 北京逛街攻略总结篇(MM必看)
  17. 使用javaSwing搭建一个简单的聊天室
  18. sx1278组网01——网关
  19. 【译】 从源代码构建 deb 包
  20. 360极速版+刷火车票应用----Chrome内核刷票 + IE内核网银付款,完美解决Chrome内核网银支付问题

热门文章

  1. 【转】linux电源框架——Regulator
  2. 笔记——跟熊浩学沟通
  3. 广义表(Generalized Lists)
  4. worldpress php部署,用XAMPP搭建本地主机(附worldpress的安装)
  5. 大三实习生面试BAT经验
  6. 详细写出拆卸计算机的步骤和过程,CPU风扇(INTEL)的详细拆卸和安装方法_计算机软件和应用程序_IT / computer_special...
  7. 电影票(水题 杭电排位赛-6)
  8. 两轮车ECU的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  9. MatplotlibDeprecationWarning: Calling gca() with keyword arguments was deprecated in Matplotlib 3.4.
  10. 魔兽争霸dota内外网p2p联机玩游戏-不需要对战平台的联机