android 的NDK在Windwos环境搭建

2024-02-05 18:48

本文主要是介绍android 的NDK在Windwos环境搭建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

NDK的Windwos环境搭建Eclipse版本是3.6以上的   
一、下载android NDK您可以下载NDK r4  for Windows或NDK r5  for Windows安装包,下载地址:
地址:http://developer.android.com/sdk/ndk/index.html


下载后解压缩到你的工作目录,例如:E:\Android\tools\android-ndk-r7,结果如下图:

Android NDK包含build、docs、samples、sources、GNUmakefile、ndk-build、ndk-gdb及readme等内容。samples下面包含几个实例开发演示项目,第一次接触NDK开发,建议先从示例开始。下面先看一下编译环境配置。
二、下载Cygwin由于NDK开发大都涉及到C/C++在GCC环境下编译、运行,所以在Windows环境下,需要模拟Linux模拟编译环境,下载地址:
http://www.cygwin.com/
下载setup.exe文件。http://cygwin.com/setup.exe


使用过程如下:
第一步:运行setup程序,第一步图略,直接点击Next进入下一步。
第二步:选择安装方式,第一次可以采用Direct Connection在线下载安装,如有现成的离线包,可以选择离线安装(Install from Local Directory)。

第三步:选择安装目录,比如E:\Android\cygwin,注意此目录是指Cygwin最终的安装目录,不是下载文件暂存目录。
第四步:设置本地包暂存路径
暂存目录默认是放到setup.exe的同级目录下,下载后名字类似E:\Android\Softs这样格式。
第五步:设置网络连接方式
第六步:选择下载站点地址
起初尝试几个看哪个速度快就用哪个地址(如果感觉不快就点取消,再次来过)。国内的话,我感觉163的速度不错。

第七步:等待加载安装项载入,选择安装项
我们编译NDK,在默认设置下,只需选择Devel(点击列表中Devel,将后面的Default改为Install,图中箭头所示),其它均为默认状态。

那四个单选按钮是选择下边树的样式,默认就行,不用动。View默认是Category,建议改成full显示全部包再查,省的一些包被隐藏掉。左下角那个复选框是是否隐藏过期包,默认打钩,不用管它就行,下边开始下载我们要安装的包吧,为了避免全部下载,这里列出了后面开发NDK用得着的包:autoconf2.1、automake1.10、binutils、gcc-core、gcc-g++、gcc4-core、gcc4-g++、gdb、pcre、pcre-devel、gawk、make共12个包


第八步:等待下载完成
下载完成时间决定于你选择的安装包数量及网络连接速度,比如按照本文默认的选择方式,可能需要4-5个小时,下载后压缩包约830M左右,下载完成后会自动安装到上文设置的安装目录。

提醒:第一次下载完成后,最好把下载的包目录做个备份,下次安装同样的环境可以直接使用离线安装方式(第二步中选择本地安装)。


三、验证Cygwin环境 
安装完成后,运行cygwin,
第一次使用时,会创建一些用户环境文件,
在弹出的命令行窗口输入:cygcheck -c cygwin命令,会打印出当前cygwin的版本和运行状态,如果status是ok的话,则cygwin运行正常。
分别输入:
make -v
和,
gcc -v
如果检测成功,会有make和gcc相关版本信息打印出来,
四、编译示例 
1、设置NDK路径。
在windows的系统环境变量中添加NDK的路径。如:e/Andriod/tools/android-ndk-r7

2、也可以不添加,每次打开目录时,输入该路径即可。 /cygdrive/e/Andriod/tools/android-ndk-r7

四:用NDK来编译程序 

    1、现在我们用安装好的NDK来编译一个NDK提供的示例的程序。

我们选择ndk自带的例子hello-jni,我的位于android-ndk-r7\samples\hello-jni(根据你具体的安装位置而定),

    2、运行cygwin,输入命令cd /cygdrive/e/android-ndk-r5/samples/hello-jni,进入到E:\android-ndk-r5\samples\hello-jni目录。


3、输入 ../ndk-build ,执行成功后,它会自动生成一个libs目录,把编译生成的.so文件放在里面。(ndk-build是调用ndk的编译程序)
错误:
Android NDK: Host 'awk' tool is outdated。
找到目录E:\Android\tools\android-ndk-r7\prebuilt\windows\bin\awk.exe:删除awk。(为保险起见可先cp一份),重新ndk-build
成功编译:


  4、此时去hello-jni的libs目录下看有没有生成的.so文件,如果有,你的ndk就运行正常啦!正常编译完成后会在你的项目libs/armeabi目录下生成对应的 .so文件。
hello-jni目录中多了一个libs目录。打开目录,发现到so文件。

导入示例s到Android项目ndk自带例子是无法直接导入的,需要使用方法如下(示例):
1、在Eclipse中新建一个工程HelloJni。在eclipse中通过 Create project from existing source 方法建立起hello-jni项目。需要注意的是在选择API level时需要选择1.5或更高的版本。如图所示:


2、导入成功后,目录。

3、运行该代码


五:在eclipse中集成c/c++开发环境

    1、装Eclipse的C/C++环境插件:CDT。

    首先登录
http://www.eclipse.org/cdt/downloads.php,找到对应你Eclipse版本的CDT插件的在线安装地址。


如图,首先是一个Eclipse C/C++ IDE Indigo SR-1的下载链接,该链接是用于下载自带集成了CDT插件的Eclipse开发环境,如果当前计算机上没有安装任一版本的Eclipse,则可以选择下载安装此版本Eclipse,则无需再另外安装CDT。
果已经安装了Eclipse Indigo,则可以使用第二个连接“p2 software repository”在Eclipse的Help菜单下选择Install New Software并复制如上所述链接进行在线安装。
    2、在线安装。然后点Help菜单,找到Install New Software菜单

    3、点击Add按钮,把取的地址填进去,出来插件列表后,选Select All,然后选择下一步即可完成安装。
勾选Group items by category,会按分类出现供安装的组件。此处可以不需要安装所有的组件,推荐勾选CDT Main Features分类并勾选CDT Optional Features下的“C/C++ Development Platform”、“C/C++ DSF GDB Debugger Integration”、“C/C++ GCC Cross Compiler Support”、“C/C++ GNU Toolchain Build Support”、“C/C++ GNU Toolchain Debug Support”、“Eclipse Debugger for C/C++”、“Miscellaneous C/C++ Utilities”这些组件,其他组件可以在需要用的的时候再进行安装.

3、离线安装
如果在线安装的方法由于网络原因或者其他原因不能够成功完成,则可以通过下载离线安装包的方式进行安装,首先需要通过如图13-10中最下方的链接下载CDT安装包,例如目前最新的8.0.1版本,下载到本地后,在如图13-11所示的界面中点击地址栏右方的Add…按钮,然后点击Archive按钮并定位到刚下载的cdt-master-8.0.1.zip压缩包,再进行安装即可。

4、安装完成后,在eclispe中右击新建一个项目,如果出现了c/c++项目,则表明你的CDT插件安装成功啦!



六、使用Sequoyah插件来配置
1、Sequoyah插件的官方下载点为http://www.eclipse.org/sequoyah/downloads/,在该网页上同样提供了用于在线安装的update site地址以及安装包的下载地址,需要注意的是在安装界面要确认Group items by category复选框处于未选中状态,否则可能出现列表为空(There are no categorized items)的情况。全部勾选列出的安装包并完成安装。
http://download.eclipse.org/sequoyah/updates/2.0/



Sequoyah安装完成后,
添加ndk路径。
在windows-》preferences。



右键点击任意的Android Project会发现在Android Tools中多出了一个“Add Native Support…”选项


Add Native Support…点击后会弹出一个简单的设置界面。

JNI编译环境配置

对于jni项目,需要添加c编译以及依赖库。
右击项目-》Properties。
编译设置:
在弹出界面中选择c/c++Build。在builder setting选项卡的build command输入 “bash <ndk路径>/ndk-build" 。如下图

依赖库
 选择Gennera-》paths and。。。-》includes选项卡,选择GNU c。添加依赖路径
\android-ndk-r7\platforms\android-8\arch-arm\usr\include

这篇关于android 的NDK在Windwos环境搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/681830

相关文章

Android 12解决push framework.jar无法开机的方法小结

《Android12解决pushframework.jar无法开机的方法小结》:本文主要介绍在Android12中解决pushframework.jar无法开机的方法,包括编译指令、框架层和s... 目录1. android 编译指令1.1 framework层的编译指令1.2 替换framework.ja

Android开发环境配置避坑指南

《Android开发环境配置避坑指南》本文主要介绍了Android开发环境配置过程中遇到的问题及解决方案,包括VPN注意事项、工具版本统一、Gerrit邮箱配置、Git拉取和提交代码、MergevsR... 目录网络环境:VPN 注意事项工具版本统一:android Studio & JDKGerrit的邮

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

Android实现在线预览office文档的示例详解

《Android实现在线预览office文档的示例详解》在移动端展示在线Office文档(如Word、Excel、PPT)是一项常见需求,这篇文章为大家重点介绍了两种方案的实现方法,希望对大家有一定的... 目录一、项目概述二、相关技术知识三、实现思路3.1 方案一:WebView + Office Onl

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

Android实现悬浮按钮功能

《Android实现悬浮按钮功能》在很多场景中,我们希望在应用或系统任意界面上都能看到一个小的“悬浮按钮”(FloatingButton),用来快速启动工具、展示未读信息或快捷操作,所以本文给大家介绍... 目录一、项目概述二、相关技术知识三、实现思路四、整合代码4.1 Java 代码(MainActivi

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

如何解决idea的Module:‘:app‘platform‘android-32‘not found.问题

《如何解决idea的Module:‘:app‘platform‘android-32‘notfound.问题》:本文主要介绍如何解决idea的Module:‘:app‘platform‘andr... 目录idea的Module:‘:app‘pwww.chinasem.cnlatform‘android-32