android studio调用so方法,android studio中的so库调用
在根项目的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库调用相关推荐
- 【Android NDK 开发】NDK 交叉编译 ( Ubuntu 中交叉编译动态库 | Android Studio 中配置使用第三方动态库 )
文章目录 I . 动态库 与 静态库 II . 编译动态库 III. Android Studio 使用第三方动态库 IV . Android Studio 关键代码 V . 博客资源 I . 动态库 ...
- import android.view.window;,尝试在空对象引用上调用虚拟方法‘android.view.Window$回调...
尝试在空对象引用上调用虚拟方法'android.view.Window$回调-android.view.Window.getCallback()' 当我SplashActivity打开LoginAct ...
- android颜色值的表示方法android:background=#FFFFFFFF的意思
android颜色值的表示方法 android:background="#FFFFFFFF"的意思 Android中的颜色值是通过红(Red).绿(Green).蓝(Blue)三原 ...
- android 连续调用js方法,Android的WebView中的JavascriptInterface:对JS的多次调用会导致死锁...
这是我用过的整个Java代码.我将在下面更详细地解释... public class Test7 extends Activity { //debug private final static Str ...
- android 矢量图片使用方法,Android中的矢量图
概述 VectorDrawable是通过XML文件中的一系列点,线和曲线及其相关颜色信息定义的. 使用VectorDrawable的主要优点是图像可扩展性. 它可以缩放而不损耗显示质量,这意味着相同的 ...
- android 虚方法,尝试在空对象引用上调用虚方法’android.view.View android.view.View.getRootView()’...
我收到这个错误, "Attempt to invoke virtual method 'android.view.View android.view.View.getRootView()' ...
- android webview调js方法,Android中WebView与H5的交互,Native与JS方法互调
项目中经常用到WebView与H5的交互,一个是H5调本地方法,一个是本地调H5方法,在此记录一下. 首先,启用JS支持 //启用js支持 webSettings.setJavaScriptEnabl ...
- android 开启子线程方法,android中开启子线程
AndroidRuntime(673): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example/ ...
- android 设置全屏方法,Android中设置全屏的方法
在开发中,我们经常需要把我们的应用设置为全屏,这里有两种方式: 一是在代码中设置; 二是在配置文件中设置 一. 在代码中设置 public class BaseActivity extends Act ...
- Android解析xml的方法,Android中解析XML格式数据的方法
XML介绍:Extensible Markup Language,即可扩展标记语言 一.概述 Android中解析XML格式数据大致有三种方法: SAX DOM PULL 二.详解 2.1 SAX S ...
最新文章
- 写入和读取图片(c# asp.net sqlserver)
- 【技术贴】虚拟机 VMware win7 win8网卡驱动下载 解决虚拟机不识别网卡没有本地连接...
- 正则表达式相关案例(很实用很强大)
- Scala中集合类型与java中集合类型转换
- 【转摘】Word提升效率的快捷键
- python 组合数库函数_Python数据分析之Numpy库(笔记)
- CSS仿艺龙首页鼠标移入图片放大
- LeetCode-Scramble String
- 信息学奥赛一本通 1134:合法C标识符 | OpenJudge NOI 1.7 06
- VS2010 Beta1 / .NET Framework 4 Beta 1 - 下载
- [C++] Vector对象的合法定义
- 机器学习基础算法24-SVM理论部分
- postgresql是如何求年龄的_负债累累如何度过难关?她依靠此法三年还清300多万债务!...
- java pdf文件如何转换tiff文件_C#实现TIF图像转PDF文件的方法
- teststand 2020|ni teststand 2020(测试管理软件) 附安装教程
- 北京逛街攻略总结篇(MM必看)
- 使用javaSwing搭建一个简单的聊天室
- sx1278组网01——网关
- 【译】 从源代码构建 deb 包
- 360极速版+刷火车票应用----Chrome内核刷票 + IE内核网银付款,完美解决Chrome内核网银支付问题
热门文章
- 【转】linux电源框架——Regulator
- 笔记——跟熊浩学沟通
- 广义表(Generalized Lists)
- worldpress php部署,用XAMPP搭建本地主机(附worldpress的安装)
- 大三实习生面试BAT经验
- 详细写出拆卸计算机的步骤和过程,CPU风扇(INTEL)的详细拆卸和安装方法_计算机软件和应用程序_IT / computer_special...
- 电影票(水题 杭电排位赛-6)
- 两轮车ECU的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- MatplotlibDeprecationWarning: Calling gca() with keyword arguments was deprecated in Matplotlib 3.4.
- 魔兽争霸dota内外网p2p联机玩游戏-不需要对战平台的联机