Android Studio 1.5.1 JNI 编程
来源:互联网 发布:淘宝导购怎么做 编辑:程序博客网 时间:2024/06/18 08:30
1. 新建project MyJNI,使用默认设置即可。
2. 新建Test类:右键com.example.myjni新建java类
3. 在Test类中编写如下代码,loadLibrary(“test”)中“test”库为NDK库名,之后将会定义。myFun()即为我们自定义的c++函数。
public class Test { static { System.loadLibrary("test"); } native String myFun();}
4. 生成Test类所对应的头文件:打开AS Terminal,切换到$工作目录$\MyJNI\app\src\main\java目录下,键入命令:javah -jni -cp ;, com.example.myjni.Test生成头文件(注意-cp之后是 空格+分号+逗号),经过尝试直接使用“javah -jni com.example.myjni.Test”命令会出现“ Could not find class file for ‘com.example.myjni.Test’.”的错误。此时在java\目录下就可以看到生成的.h文件了。
生成的.h内容如下:
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class com_example_myjni_Test */#ifndef _Included_com_example_myjni_Test#define _Included_com_example_myjni_Test#ifdef __cplusplusextern "C" {#endif/* * Class: com_example_myjni_Test * Method: myFun * Signature: ()Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_com_example_myjni_Test_myFun (JNIEnv *, jobject);#ifdef __cplusplus}#endif#endif
5. 新建jni文件夹:在main目录上右键,new->folder->jni floder
6. 将步骤4中生成的头文件剪切到jni文件夹中,并且新建C++ source file “test.cpp”,编辑代码如下:
#include "com_example_myjni_Test.h"JNIEXPORT jstring Java_com_example_myjni_Test_myFun(JNIEnv *env, jobject obj) { return env->NewStringUTF("hello, this is myFun output!");}jstring Java_com_example_myjni_Test_myFun(JNIEnv *env, jobject obj);
在编辑完头文件之后,可以build一下,这样便会提示相关变量类型及函数。至此代码部分就搞定了~
7. 配置AS NDK环境:打开AS SDK manager在sdk tools中选择Android NDK点击安装。
8.左键file,选择project structure。进入sdk location,看到如下界面,选择OK。此时NDK及SDK的目录将会出现在local.properties中。
local.properties中代码如下所示:
ndk.dir=D\:\\Users\\XXX\\AppData\\Local\\Android\\sdk\\ndk-bundlesdk.dir=D\:\\Users\\XXX\\AppData\\Local\\Android\\sdk
9.向gradle.properties中加入android.useDeprecatedNdk=true
10.向app目录下build.gradle文件中设置库文件名(生成的so文件名),其moduleName “test”就是第3步中System.loadLibrary(“test”);中所填的库名。
apply plugin: 'com.android.application'android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { applicationId "com.example.myjni" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" //添加部分 ndk{ moduleName "test" } //添加部分结束 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }}
11.至此我们第一个jni程序所需的所有步骤已经完成,点击运行,查看结果。
参考博文:
NDK-JNI实战教程(一) 在Android Studio运行第一个NDK程序: http://yanbober.github.io/2015/02/14/android_studio_jni_1/
2. Android问题集锦转载之三:Javah 常见错误记录-NDK与JNI除错:http://blog.csdn.net/lincyang/article/details/6528477
3. http://developer.android.com/ndk/samples/sample_hellojni.html
4. https://segmentfault.com/a/1190000003999352
- Android Studio 1.5.1 JNI 编程
- android studio JNI编程
- Android studio JNI编程
- Android Studio下JNI编程
- Android Studio JNI NDK编程(一)
- Android Studio下使用JNI编程备忘录
- Android Studio NDK开发--JNI编程
- Android Studio NDK,JNI编程入门
- 在Android Studio中进行JNI编程
- Android JNI学习笔记1(Android Studio)
- Android Studio 1.4.x导入ffmpeg进行JNI编程
- Android studio 使用NDK工具实现JNI编程
- Android Studio JNI/NDK 编程简介(一)
- Android Studio JNI编程以及NDK环境配置
- Android studio 下JNI编程实例并生成so库
- Android studio 下JNI编程实例并生成so库
- 安卓JNI--Android studio 1.5 JNI开发初探
- Android Studio JNI学习之(1)-hello jni
- Java十进制转二进制,递归算法
- 关于sublime text3 的package control
- ARP与RARP详细解析
- UVa 1673 str2int
- UTF-8编码数据在命令行终端编织成表格并输出
- Android Studio 1.5.1 JNI 编程
- jboss tomcat 配置https请求方式
- 腾讯笔试题总结
- UDEV SCSI Rules Configuration for ASM in Oracle Linux 5, 6 and 7
- JQuery日期插件datepicker的使用
- Tomcat配置参数详解
- oracle job
- SQLite 命令
- 使用ngrok让微信公众平台通过80端口访问本机