`

android NDK

 
阅读更多

一、Android NDK 安装与配置

下载Android NDK。下载地址:http://developer.android.com/tools/sdk/ndk/index.html

下载后解压缩到你的工作目录,例如:D:\Java\android-ndk-r8,结果如下图:

注意:samples下面包含几个实例开发演示项目,第一次接触NDK开发,建议先从示例开始。

docs内是技术文档,英语能力强的可以研究研究。

二、安装Cygwin与使用NDK编译

由于NDK开发大都涉及到C/C++在GCC环境下编译、运行,所以在Windows环境下,需要用Cygwin模拟Linux编译环境。

下载:

Cygwin的下载地址:http://www.cygwin.com/

点击右上角的“setup.exe”即可下载。

安装:

第一步:运行setup.exe程序,直接点击Next进入下一步。

第二步:选择安装方式。第一次可以采用Direct Connection在线下载安装,如有现成的离线包,可以选择离线安装(Install from Local Directory)。

第三步:选择安装目录。比如D:\Java\Cygwin,注意此目录是指Cygwin最终的安装目录,不是下载文件暂存目录。

第四步:设置本地包暂存路径。暂存目录默认是放到setup.exe的同级目录下,建议放到指定的文件夹,如D:\Cygwin_install_file。安装完成后把这个文件夹打包备份,以后再配置时不用重新下载。

第五步:设置网络连接方式。这个目前河蟹没爬过来,选第一个即可。

第六步:选择下载站点地址。据说国内163站点的速度不错,我也是用的这个。

第七步:等待加载安装项载入,选择安装项。点击Devel-Default,使之变成Devel-Install,展开后可以看到其下的子项被选中了(网上多数教程都说选中某12个包,找起来太坑爹了,直接全下载了吧,全选多了150M左右)。此界面其他设置都不用动。

第八步:等待下载完成。下载完成时间决定于你选择的安装包数量及网络连接速度,安装我安装的版本,约983M,下载完成后会自动安装到上文设置的安装目录,安装也要时间的,总时间较长,去吃个饭没啥问题。

提醒:第四步的备份建议,尽量去做。如果有备份,第二步中选择离线安装。

验证:

运行安装目录下的“Cygwin.bat”,第一次运行时,它会自动创建用户信息,用户信息存放在“.\Cygwin\home”中。

在运行“Cygwin.bat”打开的命令行窗口输入:“cygcheck -c cygwin”命令,会打印出当前Cygwin的版本和运行状态,如果status是ok的话,则cygwin运行正常。

分别输入:“make –v”和,“gcc –v”命令如果检测成功,会有make和gcc相关版本信息打印出来。

设置NDK路径:

在windows的系统环境变量中添加NDK的路径。使用“/cygdrive/d/Java/android-ndk-r8”这种Linux风格路径,如果使用Windows下的“D:\Java\android-ndk-r8”,Cygwin在编译时会发出警告。

运行Cygwin命令行,可以直接使用此环境变量,当然也可以手动的cd到该目录:

使用NDK编译程序:

现在我们用安装好的NDK来编译一个NDK提供的sample程序hello-jni(我的目录位于:D:\Java\android-ndk-r8\samples\hello-jni)。

第一步:运行Cygwin,配置环境变量后可输入“cd $ndk/samples/hello-jni/”,未配置则输入命令“cd /cygdrive/d/java/android-ndk-r8/samples/hello-jni”,进入到“hello-jni”工程目录。

第二步:编译。输入命令“$ndk/ndk-build”命令即可编译。ndk-build是调用ndk的编译程序。

关于下面的错误,我没遇到,但是前人有总结,记录如下:

错误:Android NDK: Host 'awk' tool is outdated。

解决方法:打开目录“D:\Java\android-ndk-r8\prebuilt\windows\bin\”,删除awk.exe(为保险起见请先备份)。

第三步:到”…/hello-jni/libs/armeabi“目录下看有没有生成的.so文件,如果有,你的ndk就运行正常啦!

导入NDK的hello-jni示例到Eclipse中:

第一步:在Eclipse中新建一个Android工程HelloJni。在Create Android Project时勾选“Create project from existing source”,Location中填“D:\Java\android-ndk-r8\samples\hello-jni” (注意:在选择API level时需要选择1.5或更高的版本)。

第二步:直接以Android Aplication运行。这里要注意,你之前在使用NDK编译程序时要把这个hello-jni编译过并产生了.so文件,此处才能运行起来。

三、在Eclipse中集成C/C++开发环境CDT

CDT的安装可以使我们在一个工程中,同时开发基于C/C++的Native代码和基于Java语言的壳,之后的配置还可以使得一次编译两部分代码。

下载:

下载地址:http://www.eclipse.org/cdt/downloads.php

说明:

Eclipse C/C++ IDE Indigo SR2:是带CDT的Eclipse开发环境。

p2 software repository:在线安装的地址。(似乎被河蟹爬了)

cdt-master-8.0.2.zip:这个是CDT的离线安装包。(推荐使用这个,保留离线包,复用)

离线安装:

Eclipse -> Help -> Install New Software,点击add。Name:随意,建议使用好记的“CDT_版本”。Location:点击Archive,定位到下载的“cdt-master-8.0.2.zip”文件。

错误:

如果Location的下面出现“Duplicate location”错误,请到Window -> preferences -> Install/Update -> Avaliable Software Site中找到该条,remove之。

验证:

安装完成后,在Eclispe中新建一个项目,如果出现了C/C++项目,则表明CDT插件安装成功了。

四、安装Sequoyah插件

Sequoyah插件用于设置Android工程对Native开发的支持。

官方网址:http://www.eclipse.org/sequoyah/downloads/

在线安装:

官网提供了用于在线安装的Update Site地址以及安装包的下载地址。貌似安装包才1M多,在线安装也没被河蟹爬过,直接在线安装了。勾选全部列出的可安装项并完成安装。

Location:http://download.eclipse.org/sequoyah/updates/2.0/

注意:

在安装界面不要勾选“Group items by category”复选框,默认是勾选的,出现了列表为空(There are no categorized items)的情况。

配置:

安装完Sequoyah插件后,为Android配置NDK路径。

在“window –> preferences ->Android -> 本机开发”中添加NDK的路径。

验证:

右键之前建立的“HelloJni”项目,在“Android Tools”选项中包含“Add Native Support…”选项即成功。

五、JNI编译环境配置

仍旧以之前建立的“HelloJni”为例,到目前为止,如果我们修改“/HelloJni/jni/hello-jni.c”文件,动态链接库libhello-jni.so文件却不会被重新编译生成。这是因为我们没有给JNI项目添加它需要的编译配置和依赖库。现在我们来配置它。

第一步:转换工程。点击“文件 -> 新建 -> 其他”(快捷键:Ctrl+N)。选择“C/C++”下的“Convert to a C/C++ Project(Adds C/C++ Nature)”。进入“下一步”。

第二步:选中你刚才建的“HelloJni”工程,下面左边选“Makefile project”右边选“Cygwin GCC”。确定后提示的“透视图”不清楚是什么,点击“是”即可。

第三步:在“HelloJni”工程上右键,选择“属性”。配置“C/C++ Build”和“C/C++ General -> Paths and Symbols”。

C/C++ Build:点击“C/C++ Build”,在右边的“Builder Settings”中去掉默认勾选的“Use default build command”复选框。设置Build command为“bash D:\Java\android-ndk-r8\ndk-build”。

C/C++ General -> Paths and Symbols:在Includes下add新的GNU C依赖路径。此“HelloJni”工程需要“D:\Java\android-ndk-r8\platforms\android-8\arch-arm\usr\include”即可,以后根据不同项目选择不同的依赖库。

验证:

将“/HelloJni/jni/hello-jni.c”中的字符串“Hello from JNI !”如改为“Hello JNI from Baron!”,运行后在模拟器上输出的字符串改变即说明配置成功。

 

分享到:
评论

相关推荐

    Android NDK环境配置

    Android NDK环境配置是Android应用开发中的一个重要环节,它允许开发者使用C或C++编写高性能的原生代码,这些代码可以被编译成动态库并与Java应用一同打包成APK。NDK集成了交叉编译器,使得开发者能够针对不同的CPU...

    ubuntu下android ndk编译环境搭建详细描述

    在Ubuntu系统上搭建Android NDK编译环境是Android原生代码开发的重要步骤,适用于那些需要进行C/C++底层开发或优化的应用程序。Android NDK(Native Development Kit)是一套工具,允许开发者使用C/C++编写部分应用...

    android ndk环境下移植libiconv方法 附源码

    3. **创建Android.mk文件**:`Android.mk`是Android NDK的构建脚本,它告诉NDK如何编译源代码。你需要创建一个名为`Android.mk`的文件,放在`libiconv`源代码目录下,内容如下: ``` LOCAL_PATH := $(call my-dir...

    非常强大的eclipse中android ndk开发环境的配置说明

    ### 非常强大的Eclipse中Android NDK开发环境的配置说明 #### 一、概述 本文档将详细介绍如何在Eclipse中配置Android NDK开发环境,并实现C/C++代码的自动编译以及通过Eclipse使用Ant生成JNI所需的头文件。配置流程...

    android ndk-stack使用说明。

    ### Android NDK-Stack 使用说明 #### 一、概述 在使用Cocos2d-x、JNI及Android NDK进行开发时,经常会遇到调试困难的问题。尤其是对于C/C++代码的调试,由于涉及到本地代码与Java层之间的交互,使得调试过程变得...

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

    在Android系统中,由于原生的Java API无法直接处理这些底层的流媒体协议,因此需要借助于NDK(Native Development Kit)来实现C或C++代码的编译,将Live555移植到Android平台。 **关于Live555:** Live555是一个...

    androidndk开发实战

    《Android NDK开发实战》是针对移动应用开发者的一份宝贵资源,主要涵盖了如何在Android平台上进行原生代码开发。NDK(Native Development Kit)是Google为Android提供的一个工具集,它允许开发者使用C和C++编写性能...

    pcl-1.9.1 for android ndk21库

    这个"pcl-1.9.1 for android ndk21库"是专门为Android平台编译的PCL版本,它基于NDK21,这是Google发布的Android NDK的一个特定版本,提供了C和C++的交叉编译工具链,用于在Android应用中使用原生代码。NDK21支持...

    使用Android NDK编译Android平台的eXosip库

    本文将深入探讨如何使用Android NDK(Native Development Kit)来编译适用于Android平台的eXosip库,包括静态库和动态库的构建过程。 首先,eXosip是基于OSI(Open Systems Interconnection)模型的SIP协议栈,它是...

    从Android NDK安装ARM交叉编译工具链

    从Android NDK安装ARM交叉编译工具链涉及的技术领域包括Android开发、交叉编译、NDK使用、ARM架构以及Linux环境下的编译工具使用。以下是详细的知识点解析: Android NDK(Native Development Kit)是Android应用...

    Android NDK使用Iconv进行编码转换

    Android NDK(Native Development Kit)提供了一种方法来实现这样的编码转换,这就是使用Iconv库。Iconv是一个广泛使用的字符集转换工具,它允许在多种字符编码之间进行转换,包括Unicode、GBK和UTF-8。 Iconv在C/...

    android ndk+代码混淆demo

    【Android NDK】是Android Native Development Kit的缩写,它允许开发者使用C和C++编写应用程序的底层代码,以提高性能或利用特定硬件功能。在Android应用开发中,NDK通常用于处理图形计算、音频处理、游戏引擎等对...

    ECLIPSE下的androidndk开发

    这就是Android NDK(Native Development Kit)的作用,它允许开发者在Android平台上编写原生代码。本教程将指导你如何在Eclipse环境中集成Android NDK进行开发。 **1. 为什么要用NDK?** 使用Android NDK的主要...

    android-ndk-r8dab.zip_NDK_android_android ndk

    Android NDK(Native Development Kit)是Google为Android平台提供的一款用于开发原生代码的应用工具,它允许开发者使用C和C++编写部分应用代码,以利用设备的硬件性能或实现更底层的操作。在“android-ndk-r8dab....

    基于Android NDK 进行 OpenGL_ES开发的完整案例.doc

    基于 Android NDK 进行 OpenGL ES 开发的完整案例 Android NDK 和 OpenGL ES 简介 Android NDK(Native Development Kit)是一套工具集合,帮助开发者使用 C 或 C++ 语言开发 Android 应用程序的原生代码部分。...

    Android NDK Game Development Cookbook 无水印pdf 0分

    This book provides you with a number of clear step-by-step recipes which will help you to start developing mobile games with Android NDK and boost your productivity debugging them on your computer....

    google android ndk demo

    **Android NDK简介** Android NDK (Native Development Kit) 是谷歌提供的一款用于在Android平台上进行原生代码(C/C++)开发的工具集。它允许开发者编写底层代码,以实现高性能、低延迟的功能,比如图形处理、物理...

    Android NDK 开发教程二

    ### Android NDK 开发教程概览 #### 一、引言 随着移动互联网技术的不断发展,Android 应用开发已成为软件行业中不可或缺的一部分。为了满足不同层次的开发需求,Google 提供了多种工具和技术栈,其中 Android NDK ...

Global site tag (gtag.js) - Google Analytics