`
android_mylove
  • 浏览: 399419 次
社区版块
存档分类
最新评论

Android的NDK开发(2)————利用Android NDK编写一个简单的HelloWorld

 
阅读更多

/********************************************************************************************
* author:conowen@大钟
* E-mail:conowen@hotmail.com
* http://blog.csdn.net/conowen
* 注:本文为原创,仅作为学习交流使用,转载请标明作者及出处。

********************************************************************************************/



1、Android NDK简介

NDK全称为native development kit本地语言(C&C++)开发包。而对应的是经常接触的Android-SDK,(software development kit)软件开发包(只支持java语言开发)。

简单来说利用NDK,可以开发纯C&C++的代码,然后编译成库,让利用Android-SDK开发的Java程序调用。NDK开发的可以称之为底层开发或者jni(java native interface)层开发,SDK开发可以称为上层开发。


2、为何要用NDK


2.1、众所周知,利用SDK编写的代码,生成的APK,很容易就可以反编译了,安全性极为不高,而利用NDK开发的库,不容易被反编译,保密性,安全性都提高了。

2.2、很多开源工程和大型工程都是C&C++代码,把它们转换为纯java语言显然是不可能的。

2.3、C&C++的代码运行速度和效率都比java快很多。


3、NDK环境的搭建

http://developer.android.com/sdk/ndk/index.html下载最新版的NDK,然后解压到你喜欢的位置,然后把NDK的所在的目录,配置到环境变量里面就行。

如我在windows下面用cygwin开发。配置环境变量可以参考http://blog.csdn.net/conowen/article/details/7518870


简单来说就是在linux或者cygwin的安装目录,跳转到/home/YourName/,然后编辑.bash_profile文件,在末尾添加如下语句,具体根据自己的情况而定。


4、新建一个NDK工程

新建一个目录,命名为HelloWorld,然后在里面新建一个名为jni的目录(名称一定要是jni,因为ndk-build的时候会在HelloWorld目录下寻找jni的目录,然后进行build),在jni目录下新建如下文件HelloWorld.c和Android.mk。

HelloWorld.c文件代码如下(此JNI是没有jni_onLoad函数的)


Android.mk代码如下

关于Android.mk的编写格式,下一篇博文补全

然后在终端里面,转到HelloWorld目录下,执行

$ndk是之前配置的NDK环境变量。编译成功后,会在在目录生成libs和obj两个文件夹,libs里面有刚刚编译成的libHelloWorld.so库。


5、新建一个Android工程

在eclipse里面新建一个Android工程,java代码如下,然后把刚刚生成的libs文件夹拖到Android工程目录下。


效果图:





分享到:
评论

相关推荐

    Android NDK——Hello JNI

    要开始一个简单的Android NDK和JNI项目,我们首先会创建一个"Hello JNI"示例。这个例子将展示如何在Android应用中集成C/C++代码,并通过JNI进行交互。以下是具体步骤: 1. **创建Android项目** 使用Android Studio...

    Android NDK开发——C回调Java中的方法

    在Android应用开发中,有时我们需要使用C或C++代码来实现一些高性能的计算或者利用现有的C库。这时,Android NDK(Native Development Kit)就派上了用场。NDK允许开发者在Android应用中混用Java和原生代码,通过JNI...

    android-ndk(android-ndk-r26b-linux.zip)

    这个“android-ndk-r26b-linux.zip”文件是NDK的一个特定版本——R26B,特别为Linux操作系统设计。 NDK的主要功能和知识点包括: 1. **原生库支持**:NDK允许开发者创建原生库,这些库可以直接在设备的CPU上运行,...

    android ndk下编译的live555源码(新版)

    在Android平台上进行多媒体流处理时,经常会涉及到一个开源库——Live555。这个库主要用于实时音频和视频流的处理,支持多种网络协议,如RTSP(Real-Time Streaming Protocol)、RTP(Real-time Transport Protocol...

    android stadio NDK开发第一个例子

    本文将详细介绍如何在Windows环境下使用Android Studio进行NDK开发,创建并运行你的第一个NDK示例项目——FirstNdkDemo。 一、Android NDK介绍 NDK(Native Development Kit)是Google提供的一个工具集,它允许...

    Android系统级深入开发——移植与调试 pdf

    《Android系统级深入开发——移植与调试》这本书深入探讨了Android系统的底层开发和调试技术,是Android开发者进阶的重要参考资料。以下将从标题和描述中提取出的关键知识点进行详细阐述。 1. **Android系统移植**...

    Android C++高级编程使用NDK [ Pro Android C++ with the NDK ]书源码

    《Android C++高级编程使用NDK》是一本深入探讨如何在Android平台上利用C++进行高效开发的专业书籍。这本书源码的提供,对于开发者来说是一份宝贵的参考资料,它涵盖了多个章节的示例代码,帮助读者更好地理解和实践...

    安卓Android源码——史上最强NDK入门项目实战.zip

    在安卓开发领域,NDK(Native Development Kit)是不可或缺的一部分,它允许开发者使用C和C++语言编写性能关键部分的代码,从而实现更高效的运算和更底层的硬件交互。本项目实战将带你深入理解Android NDK,并通过...

    Android基础——Android Studio2.1配置NDK运行HelloWord

    这篇教程将聚焦于如何在Android Studio 2.1版本中配置NDK环境并运行一个简单的"HelloWorld"项目。 首先,理解NDK的重要性。NDK的主要用途包括: 1. **提高性能**:对于计算密集型任务,如图形处理、物理模拟或加密...

    ANdroid ndk 安装

    这时候就需要用到Android NDK(Native Development Kit),它允许开发者利用C/C++来编写Android应用的部分代码,这对于需要高性能计算的应用来说是非常必要的。本文将详细介绍如何在Windows环境下安装和配置Android ...

    android+NDK 开发.pdf

    2. **创建项目**:使用Android Studio或其他IDE创建一个新的NDK项目或者在一个现有的Java项目中添加NDK支持。 3. **编写本地代码**:在项目中创建C/C++源文件,并编写业务逻辑或性能敏感的部分。 4. **配置构建脚本*...

    NdkDemo.rar

    而NDK(Native Development Kit)是Android平台的一个重要组成部分,它允许开发者使用C/C++等原生代码来编写部分应用,从而提升性能,尤其是在处理图形计算、物理模拟或机器学习等计算密集型任务时。本篇文章将深入...

    android-ndk(android-ndk-r23b-darwin.zip)

    综上所述,"android-ndk-r23b-darwin.zip"是一个为macOS用户准备的Android NDK工具包,它的核心在于提供了一种方式来利用C/C++编程语言开发Android应用,以提升性能和实现低级别系统访问,同时带来了相应的挑战,如...

    Android编译ndk的两种方式

    在Android开发中,NDK(Native Development Kit)是Google提供的一套工具,允许开发者使用C和C++编写原生代码,以实现高性能、低级别的硬件交互或者利用已有的C/C++库。本篇文章将深入探讨两种主要的Android NDK编译...

    Android NDK Demo

    总结,"Android NDK Demo"为初学者提供了一个实践NDK开发的良好起点。通过学习和研究这个示例,开发者可以理解NDK的使用流程,掌握JNI接口的编写,以及本地库的编译和调试方法。进一步,这将有助于开发者在实际项目...

    Android系统级深入开发——移植与调试

    9. **JNI与NDK开发**:了解Java Native Interface(JNI),利用Native Development Kit(NDK)进行C/C++代码编写,实现高效能的计算或与硬件交互。 10. **Android框架层**:深入学习AOSP中的Activity Manager、...

Global site tag (gtag.js) - Google Analytics