标签:开始 开发工具 com 源代码 display library 灵活 conf 函数
JNI是Java众多开发技术中的一门,意在利用本地代码,为Java程序提供 更高效,更灵活的拓展。
NDK是Google为Android进行本地开发而放出的一个本地开发工具, 包括Android的Native API、公共库以及编译工具, 注意,NDK需要Android 1.5版本以上的支持哦。
简单来说,NDK是JNI开发的一个扩展工具包!
SDK是Google提供的Android标准开发工具包,里面包含了完整的 API文档,各Android版本的开发库,Android的虚拟机以及Android的打包工具等。众所周知,Android的应用开发语言是 Java,App的运行时是Delvik Runtime,属于JVM的改良版本,官方说Delvik VM更适用于移动设备。一般而言,由于Google的SDK提供了强大又完善的API,开发一般需求的应用,SDK足矣。然而前面已经说过,Java的运 行效率引发了不少问题,因而才有了JNI技术的存在。NDK是SDK的一个补充。
环境搭建
下载安装Android NDK,地址:http://developer.android.com/sdk/ndk/index.html
Android Studio里面设置NDK路径:
新建NDKDemo项目
1) 新建一个类JniUtils用来实现native方法:
public class JniUtils { public static native String getStringFromC(); } |
2) Rebuild Project,生成JniUtils.class
3) 在命令窗口定位到classes\debug目录下,执行命令(注意区分大小写)
javah -jni com.smile.sample.ndkdemo.JniUtils |
此时会在debug目录下生成文件 com_smile_sample_ndkdemo_JniUtils.h
4) 在app模块下,新建jni目录,并把头文件放到这个目录下。
5) 新建一个cpp文件JniUtils.cpp来实现方法。此时需要做几个操作:
i. 下载和配置NDK路径,修改build.gradle配置,在defaultConfig里面新增一下代码
ndk { moduleName "JniDemo" abiFilters "armeabi", "armeabi-v7a", "x86" } |
ii. 在gradle.properties里面配置
android.useDeprecatedNdk=true |
6) Jni目录下,新建一个cpp的空文件
这是NDK在Windows下一个bug,当只编译一个文件时出现,解决方法就是再添加一个空的文件即可。
7) 在JniUtils.cpp里面写入实现代码,比如:
#include "com_smile_sample_ndkdemo_JniUtils.h" JNIEXPORT jstring JNICALL Java_com_smile_sample_ndkdemo_JniUtils_getStringFromC(JNIEnv * env, jclass obj){ return env->NewStringUTF("这里是C++代码"); } |
8) Rebuild Project,会在lib目录下生成三个子目录,里面有对应生成的.so文件
9) 在JniUtils里面,加入加载so文件代码,就可以运行了
static { System.loadLibrary("JniDemo"); } |
标签:开始 开发工具 com 源代码 display library 灵活 conf 函数
原文地址:http://www.cnblogs.com/keyarchen/p/6062980.html