JNI学习一(AndroidStudio NDK环境配置)
来源:互联网 发布:云服务器搭建sql serv 编辑:程序博客网 时间:2024/05/01 14:18
AndroidStudio版本:1.5.1
开篇不多说废话,本文主要分两部分:
- ndk的安装与配置
- jni在androidstudio的demo
ndk的安装与配置
1.下载ndk,打开File->Setting,然后搜索sdk,如图所示,在System Settings 目录下选择Android SDK,然后选择SDK Tools,勾选上NDK并下载,这里我已经安装好了
2.配置ndk目录,选择File->Project Structure,下载后的ndk放在sdk的目录下,选择即可
3.还需在gradle.properties文件中配置
android.useDeprecatedNdk=true
这是因为会产生一个错误
做了上面的三部后ndk就算配置好了。
JNI Demo
这个过程我概括为两步
1.编写相关代码
这个过程就是在Java代码中编写native方法,并在c代码中编写对应的方法
2.配置和引入库
在Moudule的build.gradle文件中配置库,并在java代码中引入库
详细如下:
1)新建一个Module,然后在MainActivity中编写如下代码
这时候会发现hello是红色的,这是因为编译器没能找到其对应的c/c++的实现
2)在src/main目录下,新建jni文件夹,并在其中新建一个c文件,比如这里我叫做hello.c
在其中写如下代码:
其中方法名是 Java_全类名_方法名,但包名之间的.改为下划线,如下Java_com_pngfi_jnidemo_MainActivity_hello
#include<jni.h>jstring Java_com_pngfi_jnidemo_MainActivity_hello(JNIEnv* env,jobject obj){ return (*(*env)).NewStringUTF(env,"hello jni");}
3)AndroidStudio简化了Android.mk文件的配置,会自动生成,我们只
在Module的build.gradle文件的defaultConfigs中配置如下
defaultConfig { applicationId "com.pngfi.jnidemo" minSdkVersion 14 targetSdkVersion 23 versionCode 1 versionName "1.0" ndk { moduleName "JniDemo" ldLibs "log", "z", "m" abiFilters "armeabi", "armeabi-v7a", "x86" } }
其中moduleName 就是我们要引用的c库的名字,abiFilters 配置为不同类型的cpu产生对应的.so文件
4)在java代码中引入库,在MainActivity中加入如下代码
static { System.loadLibrary("JniDemo"); }
这是一个静态代码块,这里的JniDemo即上一步配置的库名字,到此我们只需在MainActivity中添加一个TextView并调用
textView.setText(hello());
点击运行即可,结果如下所示
关于其他
上面我们说到AndroidStudio中简化Android.mk文件的配置,其实它会帮我们生成对应的文件,编译Module,即可在如下图的目录查找到
另外,上面在c代码写方法名的时候是不是太麻烦了呢,javah命令可以帮助我们生成头文件,从而我们只需拷贝过来实现方法体即可。
如果你是的jdk版本>=1.7那么只需,如下在控制台中进入java目录下,执行javah 全类名 即可生成.h文件
我们把头文件剪切掉,放入jni文件夹。
在.c文件中引入头文件,把对应的方法声明拷入源文件,实现即可,如下
#include "com_pngfi_jnidemo_MainActivity.h"JNIEXPORT jstring Java_com_pngfi_jnidemo_MainActivity_hello(JNIEnv *env, jobject obj) { return (*(*env)).NewStringUTF(env, "hello jni");}
- JNI学习一(AndroidStudio NDK环境配置)
- AndroidStudio如何配置NDK/JNI开发环境
- AndroidStudio如何配置NDK/JNI开发环境
- AndroidStudio如何配置NDK/JNI开发环境
- AndroidStudio如何配置NDK/JNI开发环境
- AndroidStudio配置NDK/JNI开发环境细节
- AndroidStudio如何配置NDK/JNI开发环境
- AndroidStudio配置NDK/JNI开发环境
- androidstudio Ndk 环境配置
- AndroidStudio配置ndk环境
- Androidstudio JNI 环境配置
- 安卓 NDK JNI 使用(一) -- 环境配置(AS NDK cygwin)
- AndroidStudio上使用NDK(Jni)的配置
- JNI NDK (AndroidStudio+CMake )环境集成详解
- AndroidStudio配置NDK开发环境
- AndroidStudio NDK环境配置详解
- AndroidStudio之NDK与JNI配置详解
- Android NDk-JNi开发(一)NDK环境变量的配置
- 75. Sort Colors
- 飛飛(十二) 求两个数的最大公约数。
- 获取请求ip的工具类
- AbstractMap
- FMDB源码阅读
- JNI学习一(AndroidStudio NDK环境配置)
- 用500行Julia代码开始深度学习之旅 Beginning deep learning with 500 lines of Julia
- 为UIImageView设置手势不生效????
- phalcon windows 安装
- Spring MVC 4常用的那些注解
- Change Yii 2.0 Default Controller
- RADASM中使用DOSBOX来运行DOS/BIOS程序(16位)
- 大数据并发问题
- mysql中的触发器