Android studio开发NDK,第一个NDK程序教程

欢迎来到Studio的NDK教程(Mac平台)

本文主要内容是:

NDK

在Android SDK首次发布时,Google就宣称其虚拟机Dalvik支持JNI编程方式,也就是第三方应用完全可以通过JNI调用自己的C动态库,即在Android平台上,“Java+C”的编程方式是一直都可以实现的。。 —— [NDK详细讲解 ]

本文重点是怎么MAC下Android Studio开发第一个NDK程序,所以NDK知识请读者自行阅读。

本编辑器支持 Markdown Extra ,  扩展了很多好用的功能。具体请参考[Github][2].

1.下载NDK、SDK并设置环境变量

交给读者作业

2.配置JAVA环境(在terminal中可以使用javah、javac)

3.写好TestNdk程序为后续调用JNI做准备

定义一个native方法

[定义一个native方法][5]

4.执行Studio中[Build–>Make Project][6],生成class文件

生成的class文件在Project目录下。(不知道是Studio的版本问题还是系统的问题,小编的测试未成功)
这里写图片描述

5.1生成.h文件

这个我们使用的命令:javah -d <文件名> -classpath

5.2进入TestNdk.javad的文件夹main下(cd命令)

这里写图片描述
如果不进入这个目录,后面运行javah会报找不到“com.spoofing.spoofing.ndkdemo.TestNdk”类文件。
小编在此介绍上面的方法不行的另种可行方案:
1)找到class文件所在的文件,命令行切换到该目录下
这里写图片描述
2)运行javah命令:
javah com.spoofing.spoofing.ndkdemo.TestNdk
路径不写错误,基本没什么错误。
运行成功如下图:(生成头文件,直接拷贝到jni文件下)
这里写图片描述
头文件出现了,头文件的内容、函数声明不要修改!

5.3编写c源文件,函数的名一定要从之前生成的头文件里复制过来,保持一致。

#include <jni.h>
/* Header for class com_spoofing_spoofing_ndkdemo_TestNdk */

#ifndef _Included_com_spoofing_spoofing_ndkdemo_TestNdk
#define _Included_com_spoofing_spoofing_ndkdemo_TestNdk
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_spoofing_spoofing_ndkdemo_TestNdk
 * Method:    getString
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_spoofing_spoofing_ndkdemo_TestNdk_getString
  (JNIEnv *, jobject);


#ifdef __cplusplus
}
#endif
#endif
#include <jni.h>
#include <string.h>

/* Header for class com_spoofing_spoofing_ndkdemo_TestNdk */

#ifndef _Included_com_spoofing_spoofing_ndkdemo_TestNdk
#define _Included_com_spoofing_spoofing_ndkdemo_TestNdk
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_spoofing_spoofing_ndkdemo_TestNdk
 * Method:    getString
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_spoofing_spoofing_ndkdemo_TestNdk_getString
  (JNIEnv * env, jobject jObj)
  {return (*env)->NewStringUTF(env,"Hello From NDK");}


#ifdef __cplusplus
}
#endif
#endif

6、配置build.gradle文件,加入下图中的语句。 moduleName 就是将来生成的so文件名称的一部分,修改它可以修改so的文件名。 ldLibs 目前不管 abiFilters 是生成os文件的平台,这里选择了3种

这里写图片描述

7.配置ndk路径。打开local.properties,加入NDK的路径(ndk需要单独下载,我在网上下载ndk后放在了和sdk相同的路径下)

这里写图片描述

8.生成os文件。

8.1、Build->Make Project生成so文件。
8.2 查看工程目录 ..\build\intermediates\ndk\debug\lib目录里面各有一个os文件。
这里写图片描述

9.调用jni

这里写图片描述

10.实验结果

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值