Android NKD初探

本文详细介绍如何使用Android NDK及JNI技术实现Android应用的本地方法调用,包括NDK安装配置、JNI接口定义与实现、自动生成so库等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NDK

Android NDK 是在SDK前面又加上了“原生”二字,即Native Development Kit,因此又被Google称为“NDK”。

下载地址:https://developer.android.google.cn/ndk/downloads/index.html


截图中是最新版本

如果需要下载历史版本,点击 Revision History

NDK:android-ndk-r14b-windows-x86_64.zip

解压生成:android-ndk-r14b文件夹

windows-Preferences-Android-NDK

NDK Location 设置路径


选择ndk目录时提示“Not a valid NDK directory”, 在你安装的ndk的主目录下创建一个ndk-build空文件,然后重新打开对话框选择就可以了。


 

简单JNI调用

1、创建一个Android工程,名为firstjni;

2、在com.example.firstjni包下新建一个Jni接口类FirstInterface,这个类不需要继承java的接口类;

3、编译这个接口类,为c端调用的头文件。

工程目录:


命令窗口:运行cmdcd进入到eclipse工作空间中firstjni工程目录,
输入javah-classpath bin/classes -d jni com.example.firstjni.FirstInterface编译接口类


编译完成后,刷新工程,就可以看到工程中自动创建了jni文件夹,其中包含编译好的.h头文件


4, 右键firstni工程选择Androidtools下Add Native Support选项,library name使用默认的工程名;


完成后,会在jni文件夹中添加一个Android.mk文件和firstjni.cpp文件;


5、然后给工程新建并配置一个Builder,能够自动生成so库在Android端代码进行调用。

①右键工程-Properties-Builders-New,在弹出对话框中点击Program。

②在Edit Configuration对话框中的Main选项卡中,添加路径;

Location中选择到NDK安装目录下的ndk-build.cmd;

WorkingDirectory中选择到firstjni工程目录。

点击Browser File System按钮选择。


③选择Refresh选项卡,在其中勾选如下


④在Build Options选项卡中勾选如下


点击上图中SpecifyResource,配置到firstni工程的jni目录即可。


到此点击ok,配置完成了,相比通过命令行编译的方法,至少方便很多。
完成后,会在firstjni工程libs文件下自动创建armeabi文件夹并包含编译好的libfirstni.so库文件,当工程有所改变的时候,就会自动编译so文件;


6、下面来填充firstjni.cpp,相信学过C++的朋友会觉得很熟悉,在这个cpp文件里面写接口的具体实现。

这里会出现JNICALL等类型无法识别等报错,需要导入一个NDK的include头文件库:

①  键工程,选择Properties -> C/C++ General -> Path and Symbols 中点击include选项卡,添加NDK安装目录下的include文件夹E:\android-ndk-r14b\platforms\android-23\arch-arm\usr\include


导入完毕之后就不会报错了。

7、首先将头文件Include进来,但是要遵循方法的命名规则:Java_(固定开头)com_example_firstjni(用"_"连接的包名)_ FirstInterface (类名)_ getHello (函数名) 再从接口.h头文件中把getHello方法复制过来,并修改参数,简单的返回一个字符串。


8、然后修改MainActivity.java代码,添加一个TextView并设置其文本为getHello()方法的返回值;添加static代码块,载入so库,之前右键工程add native Support的library名称就是在这里调用:


运行结果如下:


参考:http://www.aichengxu.com/android/1411740.htm

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值