Android NDK开发之旅(1): Eclipse中NDK环境搭建与JNI开发流程

本文介绍了在Eclipse中进行Android NDK开发的环境配置,包括NDK、JDK的选择与环境变量设置,以及Eclipse的NDK插件安装。详细阐述了JNI开发流程,包括编写native方法、生成头文件、实现C/C++代码、编译生成.so文件,并讲解了Android.mk配置文件的作用。此外,还讨论了C/C++层的日志打印和方法映射。
摘要由CSDN通过智能技术生成

Android NDK开发之旅(1):Eclipse中NDK环境搭建与JNI开发流程

(码字不易,转载请表明出处:http://blog.csdn.net/andrexpert/article/details/72626830)

前言

       看着本篇文章的标题,或许你会问现在AndroidStudio版本都更新到3.0了,从2.2开始就可以直接使用Cmake来构建NDK项目,根本没有必要再去研究NDK在Eclipse中的开发。嗯,在我使用过AndroidStudio构建NDK项目后,我也是这种想法,通过cmake编译C/C++代码来构建NDK开发框架确实是非常智能、步骤也很简单,完全可以秒杀Eclipse。但是,对于从来没有开发NDK项目的人来说,直接上AS开发可能一是无法明白这其中的原理,比如Android项目是如何构建C/C++开发环境的、Java层和C/C++层是如何映射的等等,这就是我打算写这篇文件的原因。

1. NDK/JNI简介

     AndroidFramework由基于Java语言的Java层与基于C/C++语言的C/C++层组成,在某些情况下,为了将Java(上层)与C/C++(底层)有机地联系起来,使得他们相互协调,共同完成某些任务,Android引入了Java本地接口(JNI,JavaNative interface),它允许Java代码与基于C/C++编写的应用程序、模块和库进行交互操作。在AndroidFramework中,借助JNI综合了Java语言与C/C++等本地语言的优点,使得开发者既可以利用Java语言跨平台、类库丰富、开发便捷等特点,又可以利用本地语言开发运行效率更高、更健壮、更安全的程序。使用JNI几种情况:

(1)注重处理速度(栈、堆速度区别)

     与本地代码(C/C++等)相比,Java代码的执行速度要慢一些。如果对某段程序的执行速度有较高的要求,建议使用C/C++编写代码。而后在Java中通过JNI调用基于C/C++编写的部分,常常能够获得很快的运行速度。

(2)硬件控制

     为了更好地控制硬件,硬件控制代码通常使用C语言编写。而后借助JNI将其与Java层连接起来,从而实现对硬件的控制。另外,假如搭载Android的设备上安装AndroidFramework不支持的硬件时,可以使用C语言实现设备的驱动程序,以便对设备进行控制。

(3)既有C/C++代码的复用

     在程序编写过程中,常常会使用一些已经编写好的C/C++代码,既提高了编程效率,又确保了程序的安全性与健壮性,在复用这些C/C++代码时,就要通过JNI来实现。

(4)防止被反编译,提高app安全性

2. NDK开发环境配置

* NDK:android-ndk-r10c(32位)

* JDK:jdk1.8.0_20(32位)

* NDK插件:com.android.ide.eclipse.ndk_23.0.7.2120684.jar

                        com.android.ide.eclipse.ndk.feature_23.0.7.2120684(目录)

(1) 配置环境变量

      将JDK和NDK相关路径配置到环境变量中,需要注意的是,JDK的版本要与NDK版本一致,否则会报错,比如系统是64位那么JDK和NDK应该都是64位的版本。path变量添加:;%NDK_HOME%;%JAVA_HOME%;%JAVA_HOME%\include;%JAVA_HOME%\bin;%JAVA_J

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值