Android Studio使用jni、so库

Android Studio使用jni、so库

在Android Studio1.1之后,AS就已经支持jni和so库了,马上发布的1.3正式版,更是可以在clion环境下编译c、c++,更加方便的使用NDK进行开发,网上有很多讲在Android Studio中使用jni的方法,但大多都是在1.1之前的,那时候还没有直接支持jni,所以需要通过给gradle增加task的方式来添加支持。而现在,这一切都不是事!!!

添加lib库

切换到project标签,直接将jar包复制到libs目录下,在添加dependency就可以了。

添加so库

添加so库有两个方法。但是强烈建议使用简单粗暴的方式。

简单粗暴

在main目录点击右键,添加文件夹,命名为jniLibs,需要注意的是,一个字都不能错,这是默认名。

自定义目录

在main下面你可以自定义一个目录,例如:xys。然后在build.gradle的Android标签下,添加如下修改:

sourceSets {
        main {
            jniLibs.srcDirs = ['xys']
        }
    }

指定下jniLibs的具体目录即可。

使用

在代码中,只需要:

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

并且指定native对应的方法:

public static native void nativeXXXXX();

这些应该不用讲了。

警告

在使用jni的时候,有几个地方非常需要注意。

包名

在loadLibrary的那个程序,包名一定要和so库的包名一样

so库版本

在jniLibs下,最好放置:

这样几个版本最好都要,但是实际上,放一个armeabi-v7a就够了。但是出错的时候,一定要往这个地方上去想。

为什么只用armeabi-v7a,这也是目前大多数Android 产品这样做法;
1.armeabi-v7a支持浮点操作,所以速度更快,并且目前绝大多数机器支持armeabi-v7a;(来自arm中国team的朋友以及业内信息)
2.armeabi 针对普通的或旧的arm v5 cpu,但是速度慢,得不到最新设备的CPU兼容优势(高级扩展功能,浮点运算);
3. x86 机子太少,没必要做兼容;(除非我们完全不care包size)

时间: 2024-10-24 18:44:17

Android Studio使用jni、so库的相关文章

Android Studio的JNI开发快餐教程

Android Studio的JNI开发快餐教程 从eclipse换到Android Studio之后,原来的NDK集成已经不能用了.同时,AndroidStudio也是在快速迭代进步中,不仅支持内置的ndk支持插件,还有支持外部编译系统的plugin. 而且这还是在实验中的结果,在不久的将来,还可能有更新的变化.不过,万变不离其宗,我们打好基础,形式上的东西跟着Android Studio变就好. 旧式的NDK支持 首先说明,既然是Android Studio认为它已经过时了,所以我们需要在g

Android studio 配置JNI环境

Android studio配置jni开发环境,主要配置是两个build文件,以及新建一个jni文件,放c代码.   代码如下1: apply plugin: 'com.android.model.application' model { android { compileSdkVersion = 23 buildToolsVersion = "23.0.2" defaultConfig.with { applicationId = "me.chunsheng.jni&quo

Android studio 下JNI编程实例并生成so库的实现代码

最近需要使用JNI编程,学了下JNI,并且在Android Studio下实现了一个小demo.这期间有一些坑,还好都解决了,想分享出来,希望大家少走弯路.本文中采用的平台是Windows,NDK环境已经搭建好,这方面资料很多,大家可以自行百度. 本文分为两个部分: 1.如何通过编写Jni实现native方法的调用. 2.怎样生成.so动态库提供给第三方使用. 以下是正文: 一,编写jni文件,实现本地方法 1,建立一个新工程,只有一个MainActivity,里面加载库文件并且调用若干本地方法

Mac OS下为Android Studio编译FFmpeg解码库的详细教程_Android

NDK部分 1.下载ndk这里就一笔带过了. 2.解压ndk不要解压,文件权限会出错.执行之,会自动解压,然后mv到想放的地方.我放到了"/usr/local/bin/android-ndk-r10d"(此目录之后用$NDK_DIR指代). 3.下载Ffmpeg我下的是2.5.3版本. 4.解压Ffmpeg解压Ffmpeg到$NDK_DIR/sources/ffmpeg-2.5.3. 5.修改Ffmpeg编译配置在ffmpeg-2.5.3目录下把configure文件中的这几行,目的是

Mac OS下为Android Studio编译FFmpeg解码库的详细教程

NDK部分 1.下载ndk 这里就一笔带过了. 2.解压ndk 不要解压,文件权限会出错.执行之,会自动解压,然后mv到想放的地方.我放到了"/usr/local/bin/android-ndk-r10d"(此目录之后用$NDK_DIR指代). 3.下载Ffmpeg 我下的是2.5.3版本. 4.解压Ffmpeg 解压Ffmpeg到$NDK_DIR/sources/ffmpeg-2.5.3. 5.修改Ffmpeg编译配置 在ffmpeg-2.5.3目录下把configure文件中的这几

Android Studio中配置OpenCV库开发环境的教程_Android

1.下载进入官网(http://opencv.org/)下载OpenCV4Android并解压.目录结构如下图所示. 其中,sdk目录即是我们开发opencv所需要的类库:samples目录中存放着若干opencv应用示例(包括人脸检测等),可为我们进行android下的opencv开发提供参考:doc目录为opencv类库的使用说明及api文档等:而apk目录则存放着对应于各内核版本的OpenCV_2.4.3.2_Manager_2.4应用安装包.此应用用来管理手机设备中的opencv类库,在

android studio添加project libs库步骤

在Eclipse中选择要导出的项目,然后依次选择菜单 file->export->Android->Generate Gradle build files. 之后依次点击next到finish即可   回到Android studio 打开settings.gradle,添加include ':libraries:你的库工程名称'   ctrl+alt+shift+s 打开 project structure 在左侧面板选中module,在中间面板选中module名,再在右边面板选中de

Android Studio中配置OpenCV库开发环境的教程

1.下载 进入官网(http://opencv.org/)下载OpenCV4Android并解压.目录结构如下图所示. 其中,sdk目录即是我们开发opencv所需要的类库:samples目录中存放着若干opencv应用示例(包括人脸检测等),可为我们进行android下的opencv开发提供参考:doc目录为opencv类库的使用说明及api文档等:而apk目录则存放着对应于各内核版本的OpenCV_2.4.3.2_Manager_2.4应用安装包.此应用用来管理手机设备中的opencv类库,

Android Studio项目引入外部库注意事项(PullToRefresh)

Android Studio开发App项目时引入第三方库是个比较麻烦的事情.之前导入Volley就折腾了好久,导入下拉刷新控件PullToRefresh时又碰到了各种问题.在此记录一下,以便查阅. 一.导入PullToRefresh 1.将PullToRefresh克隆到本地 git clone https://github.com/chrisbanes/Android-PullToRefresh 2.克隆到本地后library目录复制到app同级目录下,并将名称改为PullToRefresh