Android之NDK开发环境r9

news/2023/9/27 6:50:31

需要的软件:

 

  1. android-ndk-r9-windows-x86_64.zip(我的系统是64位的,所以下载的是64的)下载地址:http://developer.android.com/tools/sdk/ndk/index.html#Downloads
  2. adt-bundle-windows-x86_64-20130917(这个ADT Bundle包含了C/C++开发环境CDT、Sequoyah插件)下载地址:http://developer.android.com/sdk/index.html
  3. Cygwin(Linux编译环境)下载地址:http://www.cygwin.com/

一、Android NDK安装与配置

将下载后的android-ndk-r9-windows-x86_64.zip重命名解压到工作目录,我放在了D:\Android\ndk,截图如下:

二、Cygwin安装和使用NDK编译

由于NDK开发大都涉及到C/C++在GCC环境下编译、运行,所以在Windows环境下,需要用Cygwin模拟Linux编译环境。
安装:
  1. 运行setup.exe程序,直接点击Next进入下一步。
  2. 选择安装方式。第一次可以采用Direct Connection在线下载安装,如有现成的离线包,可以选择离线安装(Install from Local Directory)。
  3. 选择安装目录。比如D:\Java\Cygwin,注意此目录是指Cygwin最终的安装目录,不是下载文件暂存目录。
  4. 设置本地包暂存路径。暂存目录默认是放到setup.exe的同级目录下,建议放到指定的文件夹,如D:\Cygwin_install_file。安装完成后把这个文件夹打包备份,以后再配置时不用重新下载。
  5. 设置网络连接方式。这个目前河蟹没爬过来,选第一个即可。
  6. 选择下载站点地址。据说国内163站点的速度不错,我也是用的这个。
  7. 等待加载安装项载入,选择安装项。点击Devel-Default,使之变成Devel-Install,展开后可以看到其下的子项被选中了(网上多数教程都说选中某12个包,找起来太坑爹了,直接全下载了吧,全选多了150M左右)。此界面其他设置都不用动。
  8. 等待下载完成。下载完成时间决定于你选择的安装包数量及网络连接速度,安装我安装的版本,约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/Android/ndk”这种Linux风格路径,如果使用Windows下的“D:\Android\ndk”,Cygwin在编译时会发出警告。
运行Cygwin命令行,可以直接使用此环境变量,当然也可以手动的cd到该目录:
使用NDK编译程序:
现在我们用安装好的NDK来编译一个NDK提供的sample程序hello-jni(我的目录位于:D:\android\ndk\samples\hello-jni)。

第一步:运行Cygwin,配置环境变量后可输入“cd $ndk/samples/hello-jni/”,未配置则输入命令“cd /cygdrive/d/android/ndk/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文件,此处才能运行起来。

三、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!”,运行后在模拟器上输出的字符串改变即说明配置成功。

转载于:https://www.cnblogs.com/liangxiaofeng/p/3481271.html


https://dhexx.cn/news/show-17881.html

相关文章

被大厂废掉的年轻人

作者| Mr.K 编辑| Emma来源| 技术领导力(ID:jishulingdaoli)朋友M总的公司招人,有两个候选人,一个是有大厂经验的“毕业生”,另一个曾在某腰部企业工做过团队主管。M总有点拿不准,问K哥的意见。对比两人的简历后&…

工作这几年

11年年初来北京找工作,转眼已经8个年头了,经验丰富了,技术更广泛了,也结婚了,孩子也有了,几乎身边所有的地方都在悄悄的发生变化。可是,唯一不变的,确实这身材(175cm,60公…

主流浏览器CSS3和HTML5兼容性详细清单

各大主流浏览器对 CSS3 和 HTML5 的支持越来越完善,曾经让多少前端开发人员心碎的IE系也开始拥抱标准。就在前几天,W3C的 HTML5 社区领袖 Shelley 宣布,HTML5的开发工作已经接近完成,如果进展顺利,HTML5 将在 2012 年正…

tomcat性能优化,内存优化和并发线程连接优化

今天被一同事问到tomcat和内存优化的问题,而网上的资料基本都是来回copy,所以抽时间随便写点。文章中设置的参数都是一个随便写的,具体的还要根据自己的情况来定。 1.内存优化: 说到tomcat不得不提的是jvm,想让tomca…

微软BI 之SSAS 系列 - 基于雪花模型的维度设计

基于雪花模型的维度以下面的 Product 产品与产品子类别,产品类别为例。 DimProduct 表和 DimProductSubcategory 表有外键关系,而 DimProductSubcategory 表和 DimProductCategory 表存在外键关系。 测试的维度表与数据 - USE BIWORK_SSIS GOIF OBJECT_…

HIVE-row_number() OVER(PARTITION BY)函数-先分组,取每个分组的前几个

OVER(PARTITION BY order by)函数更详细的使用,可查看博文https://blog.csdn.net/qq_41712271/article/details/109224538 select row_number() over (partition by month order by ref_host_cnts desc) partition:按照month分成区块 order by &#x…

Lr监控linux系统资源方法

1.监控linux系统需要开启rstatd和xinetd两个服务,查看系统是否配置rstatd、xinetd守护进程: 输入命令:rpcinfo -p查看rstatd服务 输入命令:rpm -q xinetd查看xinetd服务 2. 监控linux系统需要安装下载4个服务包:&a…

Windows Phone 8初学者开发—第22部分:用演示图板创建卷盘的动画

第22部分: 用演示图板创建卷盘的动画 原文地址:http://channel9.msdn.com/Series/Windows-Phone-8-Development-for-Absolute-Beginners/Part-22-Animating-the-Reel-Grid-with-a-Storyboard 系列地址:http://channel9.msdn.com/Series/Windows-Phone-8-…

在Ubuntu 13.10(64位)安装Oracle 11g(32+64位)成功----有图!

先上一张图片,安装了两个晚上,漫长的等待,主要是一些欺骗oracle安装程序的设置(oracle安装程序默认不支持ubuntu的,需要更改里面的一些设置)!(由于我第一学的是mysql,然后…

Eclipse启动认定SDK地址,出现Error executing aapt

我把安卓的SDK安装在D盘,但是新建项目之后,提示的错误是 就是认定在F盘了,可是那个时候我只是在F盘启动了第一次,之后就拷贝到了D盘的,是不是第一次启动就会注册了什么的呢? 解决方案: 更改你的…