Android之NDK开发
- 格式:pdf
- 大小:222.48 KB
- 文档页数:22
第1篇一、前言随着移动互联网的快速发展,安卓系统凭借其开源、免费的优势,在全球范围内迅速普及。
作为一名安卓开发者,我深感荣幸能参与到这个充满活力和挑战的领域。
在过去的一年里,我紧跟技术发展趋势,努力提升自己的专业技能,现将年度工作总结如下。
二、技术成长1. 熟练掌握Java编程语言,能够独立完成Android应用开发。
2. 熟悉Android开发工具,如Android Studio、Eclipse等,能够快速搭建开发环境。
3. 熟悉Android系统架构,包括四大组件(Activity、Service、BroadcastReceiver、ContentProvider)、AndroidManifest.xml配置、Intent等。
4. 掌握Android UI开发,熟悉各种布局方式(LinearLayout、RelativeLayout、FrameLayout等)和常用UI组件(Button、TextView、EditText等)。
5. 学习并应用Android性能优化技巧,如内存优化、电量优化、CPU优化等。
6. 熟悉Android网络编程,掌握HTTP、HTTPS、Socket等网络通信方式。
7. 掌握Android数据存储,包括SharedPreferences、SQLite、ContentProvider 等。
8. 学习并应用Android框架,如MVC、MVP、MVVM等,提高开发效率和代码质量。
三、项目经验1. 参与了多个Android应用开发项目,积累了丰富的项目经验。
2. 独立负责过项目需求分析、设计、开发、测试、上线等全过程。
3. 负责过Android应用界面设计,实现用户交互体验优化。
4. 负责过Android应用性能优化,提高应用运行速度和稳定性。
5. 参与过Android应用版本迭代,持续优化产品功能。
四、团队协作1. 积极参与团队讨论,与团队成员分享技术心得。
2. 主动承担团队任务,协助其他成员解决技术难题。
声明:本文非原创,而是对以下的文章的一些整理:一步一步了解Cocos2dx 3.0 正式版本开发环境搭建(Win32/Android)Cocos2d-x 3.4环境搭建及apk发布调试之谜海归巢Windows7 64位系统搭建Cocos2d-x 2.2.1最新版以及Android交叉编译环境(详细教程)Cocos2dx.3x入门三部曲-Hello Game项目创建(二)cocos2d-x3.2 在Windows下打包Android平台APKPS:本人电脑是win7 64位,用的是cocos2d-x 3.6。
准备工具Cocos2d-x 3.x【我的版本是3.6】Windows环境:VS2012Python-2.7Android环境:apache-ant-1.8.2-bin.tar.zip 【ANT】Java JDK(版本:jdk-8u40-windows-x64)adt-bundle-windows-x86_64-20121030 【集成了Android SDK与Eclipse】Android-ndk64-r10b-windows-x86_64 【NDK】cygwin2.738 native(本地版)Windows环境搭建1.安装vs2012如果是msdn版是不用注册的,不过安装的时候记得先把系统日期先调到2012到2012年左右,否则会出现什么时间戳有问题,安装不成功。
如果不是msdn版的就自己上网找注册码。
2.Python安装与环境配置安装的时候使用默认安装方式即可,但是安装完毕后我们需要配置环境变量。
在我的电脑(右键)->属性->高级系统设置->高级选项卡->环境变量->系统变量中找到Path 变量,并在其值中增加指向Python的环境变量。
格式为 [Python安装路径]; 例如我的安装路径为F:\Python 2.7.8,即在path里添加“F:\Python 2.7.8;”【注意加上分号,分号是区分各个不同的路径的】。
一、libcutils是什么 a. libcutils是Android NDK中的一个重要组件,提供了一系列用于系统级开发的C/C++工具函数和类。 b. libcutils包含了许多常用的系统调用封装,方便开发者在NDK中进行底层的系统级编程。 c. libcutils的功能包括内存分配、线程管理、文件操作、进程间通信等,是Android系统开发中必不可少的一部分。
二、libcutils的编译过程 a. 在NDK中使用libcutils需要先配合Android系统源码进行编译。 b. 首先需要获取Android源码,然后配置NDK的环境变量以及路径。 c. 在NDK下新建一个项目,并在项目中引入libcutils的头文件和静态库。 d. 编写C/C++代码时,需要在编译选项中指定libcutils的路径和依赖关系。 e. 最后进行编译、信息,生成可执行文件或动态信息库。
三、使用libcutils的注意事项 a. 使用libcutils需要对系统级编程有一定的了解,要避免使用libcutils内部的函数和数据结构,以免出现不可预料的问题。 b. 在进行多线程编程时,要注意libcutils的线程管理函数,以保证线程安全和互斥访问。 c. libcutils在系统升级时可能会有API变动,需要及时更新代码以适配新版本的系统。
四、结语 a. libcutils是Android系统开发中非常重要的一个组件,对于系统级编程和NDK开发具有非常重要的意义。 b. 使用libcutils可以简化系统级编程的复杂度,提高开发效率,但需要在使用时注意一些细节和注意事项。 c. 通过对libcutils的深入学习和实践,可以更好地理解Android系统底层的运行机制,为系统级开发提供更强大的支持。由于对libcutils的重要性和广泛应用,我们有必要更加深入地了解其各方面的功能和使用方法。接下来,我将继续介绍libcutils的一些重要功能和使用技巧,希望能够为大家在NDK编译中更好地运用libcutils提供一些帮助。
ndk源码编译NDK是AndroidNativeDevelopmentKit的缩写,是一个可以让开发者使用C和C++等语言进行Android应用开发的工具集。
在使用NDK 时,需要先将NDK源码编译成可执行文件,然后再将自己的代码与NDK调用库链接起来。
本文将介绍NDK源码编译的具体步骤。
1. 下载NDK源码NDK源码可以在官网上下载,也可以在GitHub上获取。
下载完成后,将源码解压到本地文件夹中。
2. 安装依赖项在编译NDK源码之前,需要安装一些依赖项,例如GNU GCC、GNU binutils、GNU make、flex、bison等。
可以使用以下命令在Ubuntu 系统中安装:sudo apt-get install build-essentialsudo apt-get install gcc-multilibsudo apt-get install g++-multilibsudo apt-get install lib32z1-devsudo apt-get install libssl-devsudo apt-get install libncurses5-devsudo apt-get install libgtk2.0-dev3. 设置环境变量为了让编译器可以找到正确的工具链和库文件,需要设置一些环境变量。
可以在.bashrc文件中添加以下内容:export NDK_ROOT=/path/to/ndkexportPATH=$PATH:$NDK_ROOT/toolchains/arm-linux-androideabi-4.9/p rebuilt/linux-x86_64/binexport PATH=$PATH:$NDK_ROOT/build/toolsexport PATH=$PATH:$NDK_ROOT/prebuilt/linux-x86_64/bin4. 编译NDK源码在进入NDK源码目录后,可以使用以下命令编译:./build/tools/make-standalone-toolchain.sh--platform=android-21 --install-dir=/path/to/toolchain 其中,--platform参数指定了目标平台的API版本,--install-dir参数指定了编译后的工具链安装目录。
Android 音视频编解码ubuntu下ndk编译ffmpeg0.8.1ffmpeg最新版本有些问题,比如jni/liblibavcodec/ac3enc_combined.c在最新的版本中已经没有了,但是又多了一个ac3enc_template.c的文件。
虽然更新版本对于开发人员可以使用到更多的功能,但是如果这样乱改的话真的好无语,非常讨厌这种更新版本的不一致性,唉,只是抱怨一下我使用的还是稍微老一点的版本ffmpeg 0.8.1的,至少老的版本能搜到更多的资料,也比较稳定。
ffmpeg版本:ffmpeg 0.8.1(最新版本是0.10,但是有很多问题)NDK版本:ndk r6(ndk r7编译的话会出现各种错误)机器:32位系统:ubuntu注意:ndk r6+ffmpeg0.8.1+Android.mk+config.sh是经过测试过的,可以生成。
如果你用的其他版本的会出现各种问题前提:需要你配置好NDK的环境,还是说说吧一、下载并配置NDK环境变量(ubuntu下,windows下请使用cygwin)1、到/sdk/ndk/index.html下载NDK这里,ndk r6版本的下载地址是:/android/ndk/android-ndk-r6-linux-x86.tar.bz22、解压包到/home/loulijun/android/目录下3、$vim ~/.bashrc 在里面添加如下信息export NDK=/home/loulijun/android/android-ndk-r6107 export PATH=${PATH}:$NDK4、$source ~/.bashrc 使其生效注意:最新r7版本出现了一个关于awk问题,这个awk是64位的,所以如果你是32位机会遇到,具体解决办法见我的上篇博客:/loulijun/archive/2012/02/26/2368787.html二、下载ffmpeg源码包如果你想下载ffmpeg0.8.1版本(老版本),请点击这里:/releases/ffmpeg-0.8.1.tar.gz如果你想下载最新版本,可以到/download.html下载使用$git clone git:///ffmpeg.git ffmpeg但是下载后的虽然是最新且纯净的代码,可能Android.mk文件与之不完全匹配,如果非要用最新版本的话最好修改一下Android.mk吧(工作量有点大)三、配置ffmpeg环境可以系统目录下创建一个用于存放ffmpeg的目录,假如我们全部操作都在~/mywork/ndk/ffmpeg/目录下,将下载好的ffmpeg源码放在ffmpeg目录下,并改目录名字为jni(名字必须位jni,否则会出现如下的错误)。
2021年3期科技创新与应用Technology Innovation and Application设计创新基于Android土地调查客户端的设计与开发*孙玉强1,陈嘉浩2,李博2,范俊甫2(1.中交公路规划设计院有限公司,北京100088;2.山东理工大学建筑工程学院,山东淄博255049)1概述我国国土资源相关部门的建设用地管理和监测工作主要以人工实地巡查和影像判读为主,导致公众参加较少,国土资源勘察调研存在发现难、效率低、时效差等问题。
成都、沈阳督察局虽基于WebGIS平台建立了土地资源调查网页,但其操作复杂、定位精度差,群众参与度不高,可推广性不强。
为了提高当前国土资源相关部门的工作效率,需结合当前技术发展现状,紧跟移动GIS的发展步伐,及时发现土地资源占用使用行为,实时上报和解决问题。
国内已有相关部门结合移动GIS技术制作了用地调查系统,北京市建立了国土资源调查系统,主要提供信息上报、信息管理、信息反馈等服务;福建省国土资源部门结合3S技术,构建包含数据对接以及短信发送功能的移动土地调查管理平台,从而实现快速调查、快速上报、快速管理等功能。
移动GIS应用技术的外在承载形式为便携式移动终端,结合移动互联网技术,通过GPS或基站实现设备定位以及地图的浏览、标绘等基本功能。
目前,土地资源调查客户端的主要技术路线为:利用3S技术实现国土资源的调研一体化,从而构建高效、便捷的立体跟踪调研体系;利用数据库技术和移动GIS技术实现海量空间数据的管理和相应空间数据库的管理;利用矢量地图和高分辨率遥感影像对不合理用地进行圈定,上传被占用土地资源的具体信息;利用GPS技术和基站进行导航定位,实现现场的调查取证。
2研究方法2.1移动GIS移动GIS是提供移动中的、分布式的、随遇性的移动地理信息服务的GIS,国际GIS界将GIS+GPS+无线互联网一体化称为移动GIS。
移动GIS可实现数据的上传和下载、地图的浏览、点位标记等基本功能。
本文主要讲解开发Android平台下的LKM(Linux Kernel Module)的步骤,以及如何使用Android Emulator调试LKM。
一、编译android内核1.首先运行模拟器(emulator命令所在目录为androidsdk/tools/,可将其添加至系统环境变量PATH中)emulator -avd android4注意:本人使用的是android4的版本,android2.x的版本也可使用2.goldfish内核下载git clone /kernel/goldfish.git3.从模拟器中将/proc/config.gz文件复制到goldfish(即kernel)目录cd goldfish/adb pull /proc/config.gz .4.将config.zg解压gunzip config.gzmv config .config5.进行编译make ARCH=arm CROSS_COMPILE=arm-eabi- -j4注意:本人所用arm toolchain为NDKr5c版本,NDKr7所用的gcc 4.4.3版本编译后的模块在加载时会出问题,切莫使用。
也可自己编译arm toolchain6.通过emulator运行刚刚编译好的kernelemulator -kernel /Volumes/Software/Android/kernel/goldfish/arch/arm/boot/zImage -avd android47.通过"About phone",可以查看当前内核信息提示:也可使用如下命令查看内核版本cat /proc/version二、编译"Hello World!"模块,源码详见helloworld.zip1.解压并进入到helloworld目录unzip helloworld.zipcd helloworld2.编译hello模块,编译成功之会将得到hello.komake注意:如果编译时出现下述错误error: variable '__this_module' has initializer but incomplete type需要配置内核选项,首先执行make ARCH=arm CROSS_COMPILE=arm-eabi- menuconfig进入内核配置界面,勾选下列选项[*] Enable loadable module support ---> (选中这一项,按空格即可) [*] Forced module loading(选中上述一项,按回车即可看到此项) [*] Module unloading[*] Forced module unloading注意:修改内核选项后要重新编译内核3.加载编译好的hello.ko模块1)将hello_m.ko复制到模拟器中adb push hello.ko /sdcard/3)加载hello.ko模块adb shellinsmod /sdcard/hello.ko4)通过下述命令打印内核信息,看到"Hello, World!",表示模块加载成功。
ndk21编译NDK(Native Development Kit)是一种用于开发Android平台上本地代码(C/C++)的工具集。
随着Android应用的复杂性和性能需求的提升,NDK的使用变得越来越重要。
NDK 21是NDK的一个版本,它带来了一些新的特性和改进,为开发者提供了更好的开发体验和性能优化的机会。
NDK 21引入了对新的Android版本的支持。
随着Android系统的更新和升级,开发者需要确保他们的应用在最新的Android版本上能够正常运行。
NDK 21增加了对Android 11的全面支持,开发者可以利用NDK 21来开发适配Android 11的应用,并且能够充分利用新的特性和功能。
NDK 21改进了对于64位架构的支持。
随着移动设备的硬件性能的提升,64位架构的设备越来越普及。
NDK 21对于ARM64和x86_64架构提供了更好的支持,开发者可以通过NDK 21来开发适配64位架构的应用,提升应用的性能和兼容性。
NDK 21还引入了一些新的工具和功能,帮助开发者更好地进行应用开发。
其中一个重要的改进是对LLDB调试器的支持。
LLDB是一个功能强大的调试器,可以帮助开发者定位和解决应用中的bug和问题。
NDK 21增加了对LLDB的支持,使开发者能够更方便地进行调试和排错。
NDK 21还提供了一些新的API和库,帮助开发者更好地进行本地代码开发。
其中一个重要的新增功能是对Vulkan图形API的支持。
Vulkan是一种新一代的图形API,具有更好的性能和更低的CPU开销。
NDK 21提供了对Vulkan的支持,使开发者能够充分利用Vulkan的优势,开发高性能的图形应用。
除了以上的改进和新增功能,NDK 21还修复了一些已知的问题和bug,提升了整体的稳定性和可靠性。
开发者可以放心地使用NDK 21进行应用开发,减少出现意外问题的概率。
NDK 21是一款强大的工具集,为开发者提供了更好的开发体验和性能优化的机会。
(1)安卓手机快速开发 Lazarus Laz4android v1.3 系统安装By lissdd 如花一、准备Java坏境1、Java机下载并安装Java-F7U60-i586.exe2、NDK下载android-ndk-r9d-windows-x86.zip解压后备用3、SDK下载adt-bundle-windows-x86-20140321.zip解压后备用二、安装 Lazarus下载laz4android1.3-43585-FPC2.7.1-New.7z解压。
1、编译laz得到目录laz4android, 进入编辑文件 built.bat修改其中:SET FPC_BIN_PATH=D:\dev\delphi\lazarus\laz4android为正确的目录保存后运行build.bat, 约3分钟后编译完成2、运行laz运行startlazarus.exe,首次运行会有一个提示对话,不管,直接”start IDE”打开\examples\androidlcl\androidlcltest.lpr 工程文件,3、配置工程菜单”Project”->”Project Option..”打开工程配置图一、工程配置点击“Librariyes”路径设置如图一找到第二步已经解压好的NDK目录,点击“Delete Invalid Paths”删除无效路径,加入新路径:android-ndk-r9d\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\lib\gcc\arm-linux-androideabi\4.6和android-ndk-r9d\platforms\android-8\arch-arm\usr\lib如图二红线圈出部分图二、设置NDK路径该新路径根据个人NDK版本选择有所变化设置目标平台左下角的Config and Target右边一定要把Target OS (默认为Linux,害我2个小时),拉选为“android”如图三红线圈出部分,否则编译时会得到如下错误:“Fatal: cannot find unit system used by fcllaz of package FCL"图三、设置编译目标4、编译例子“OK”确定配置后, 就可以shift + F9 等待不到一分钟后,就可以在目录:\examples\androidlcl\android\libs\armeabi 下发现编译成的liblclapp文件,但不知为何没有扩展名, 加上.so吧,阿门!图四、成功编译5、制作APK包(1)生成Key:修改\examples\androidlcl\android\generate_debug_key.bat中的路径为本地正确路径我的为:SET PATH=D:\dev\delphi\lazarus\adt-bundle-windows-x86-20140321\sdk\tools\;D:\dev\delphi\lazarus\adt-bundle-windows-x86-20140321\sdk\platform-tools\;C:\ProgramFiles\Java\jdk1.7.0_60\bin\SET APP_NAME=androidlcltestSET ANDROID_HOME=D:\dev\delphi\lazarus\adt-bundle-windows-x86-20140321\sdkSET APK_SDK_PLATFORM=D:\dev\delphi\lazarus\adt-bundle-windows-x86-20140321\sdk\platforms\android-19 SETAPK_PROJECT_PATH=D:\dev\delphi\lazarus\laz4android\exampl es\androidlcl\android运行时要求输入密码,记住,下次要用的图五、生成Key 需要填写密码等运行生成\bin\LCLDebugKey.keystore文件(2)、打包生成APK用批处理文件\examples\androidlcl\android\build_debug_apk.bat ,但它调用了apkbuilder.bat 和dx.bat会引起版本不同找不到apkbuilder.jar等问题,故改用网友truetom 提供的build_debug_apk.bat ,他用鸟语说该文件:In this batch file, as you saw , my batch file is not called apkbuilder.bat and dx.bat.So it can used to any version of Andrid SDK即:无版本问题,适用各种版本的SDK哦!再次感谢鸟语鸟人网友truetom 在论坛中提供的build_debug_apk.bat其中有一行:jarsigner -verbose -keystore bin\LCLDebugKey.keystore -keypass123456-storepass123456-signedjar bin\%APP_NAME%-unaligned.apk bin\%APP_NAME%-unsigned.apk LCLDebugKey蓝色的123456即刚才生成Key时第(1)步generate_debug_key.bat运行时要求你输入的密码,修改到一致。
Android之NDK开发一、NDK产生的背景Android平台从诞生起,就已经支持C、C++开发。
众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第三方应用都必须使用Java语言。
但这并不等同于“第三方应用只能使用Java”。
在Android SDK首次发布时,Google就宣称其虚拟机Dalvik支持JNI 编程方式,也就是第三方应用完全可以通过JNI调用自己的C动态库,即在Android平台上,“Java+C”的编程方式是一直都可以实现的。
不过,Google也表示,使用原生SDK编程相比Dalvik虚拟机也有一些劣势,Android SDK 文档里,找不到任何JNI方面的帮助。
即使第三方应用开发者使用JNI完成了自己的C动态链接库(so)开发,但是so如何和应用程序一起打包成apk并发布?这里面也存在技术障碍。
比如程序更加复杂,兼容性难以保障,无法访问Framework API,Debug难度更大等。
开发者需要自行斟酌使用。
于是NDK就应运而生了。
NDK全称是Native Development Kit。
NDK的发布,使“Java+C”的开发方式终于转正,成为官方支持的开发方式。
NDK将是Android 平台支持C开发的开端。
二、为什么使用NDK1.代码的保护。
由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大。
2.可以方便地使用现存的开源库。
大部分现存的开源库都是用C/C++代码编写的。
3.提高程序的执行效率。
将要求高性能的应用逻辑使用C开发,从而提高应用程序的执行效率。
4.便于移植。
用C/C++写得库可以方便在其他的嵌入式平台上再次使用。
三、NDK简介1.NDK是一系列工具的集合NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。
这些工具对开发者的帮助是巨大的。
NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。
NDK可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作。
2.NDK提供了一份稳定、功能有限的API头文件声明Google明确声明该API是稳定的,在后续所有版本中都稳定支持当前发布的API。
从该版本的NDK中看出,这些API支持的功能非常有限,包含有:C标准库(libc)、标准数学库(libm)、压缩库(libz)、Log库(liblog)。
四、NDK开发环境的搭建1.下载安装Android NDK地址:/sdk/ndk/index.html2.下载安装cygwin由于NDK编译代码时必须要用到make和gcc,所以你必须先搭建一个linux环境,cygwin 是一个在windows平台上运行的unix模拟环境,它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,非常有用。
通过它,你就可以在不安装linux的情况下使用NDK来编译C、C++代码了。
下载地址:1)然后双击运行吧,运行后你将看到安装向导界面。
2)点击下一步,此时让你选择安装方式:∙Install from Internet:直接从Internet上下载并立即安装(安装完成后,下载好的安装文件并不会被删除,而是仍然被保留,以便下次再安装)。
∙Download Without Installing:只是将安装文件下载到本地,但暂时不安装。
∙Install from Local Directory:不下载安装文件,直接从本地某个含有安装文件的目录进行安装。
3)选择第一项,然后点击下一步。
4)选择要安装的目录,注意,最好不要放到有中文和空格的目录里,似乎会造成安装出问题,其它选项不用变,之后点下一步:5)上一步是选择安装cygwin的目录,这个是选择你下载的安装包所在的目录,默认是你运行setup.exe的目录,直接点下一步就可以:6)此时你共有三种连接方式选择:∙Direct Connection:直接连接。
∙Use IE5Settings:使用IE的连接参数设置进行连接。
∙Use HTTP/FTP Proxy:使用HTTP或FTP代理服务器进行连接(需要输入服务器地址、端口号)。
用户可根据自己的网络连接的实情情况进行选择,一般正常情况下,均选择第一种,也就是直接连接方式。
然后再点击“下一步”。
7)这是选择要下载的站点,选择后点下一步。
8)此时会下载加载安装包列表9)Search是可以输入你要下载的包的名称,能够快速筛选出你要下载的包。
那四个单选按钮是选择下边树的样式,默认就行,不用动。
View默认是Category,建议改成full显示全部包再查,省的一些包被隐藏掉。
左下角那个复选框是是否隐藏过期包,默认打钩,不用管它就行,下边开始下载我们要安装的包吧,为了避免全部下载,这里列出了后面开发NDK用得着的包:autoconf2.1、automake1.10、binutils、gcc-core、gcc-g++、gcc4-core、gcc4-g++、gdb、pcre、pcre-devel、gawk、make共12个包10)然后开始选择安装这些包吧,点skip,把它变成数字版本格式,要确保Bin项变成叉号,而Src项是源码,这个就没必要选了。
11)下面测试一下cygwin是不是已经安装好了。
运行cygwin,在弹出的命令行窗口输入:cygcheck-c cygwin命令,会打印出当前cygwin 的版本和运行状态,如果status是ok的话,则cygwin运行正常。
然后依次输入gcc–version,g++--version,make–version,gdb–version进行测试,如果都打印出版本信息和一些描述信息,则cygwin安装成功!3.配置NDK环境变量a.首先找到cygwin的安装目录,找到一个home\<你的用户名>\.bash_profile文件,我的是:E:\cygwin\home\Administrator\.bash_profile,(注意:我安装的时候我的home文件夹下面什么都没有,解决的办法:首先打开环境变量,把里面的用户变量中的HOME变量删掉,在E:\cygwin\home文件夹下建立名为Administrator的文件夹(是用户名),然后把E:\cygwin\etc\skel\.bash_profile拷贝到该文件夹下)。
b.打开bash_profile文件,添加NDK=/cygdrive/<你的盘符>/<android ndk目录>例如:NDK=/cygdrive/e/android-ndk-r5export NDKNDK这个名字是随便取的,为了方面以后使用方便,选个简短的名字,然后保存c.打开cygwin,输入cd$NDK,如果输出上面配置的/cygdrive/e/android-ndk-r5信息,则表明环境变量设置成功了。
4.用NDK来编译程序a.现在我们用安装好的NDK来编译一个简单的程序吧,我们选择ndk自带的例子hello-jni,我的位于E:\android-ndk-r5\samples\hello-jni(根据你具体的安装位置而定),b.运行cygwin,输入命令cd/cygdrive/e/android-ndk-r5/samples/hello-jni,进入到E:\android-ndk-r5\samples\hello-jni目录。
c.输入$NDK/ndk-build,执行成功后,它会自动生成一个libs目录,把编译生成的.so文件放在里面。
($NDK是调用我们之前配置好的环境变量,ndk-build是调用ndk的编译程序)d.此时去hello-jni的libs目录下看有没有生成的.so文件,如果有,你的ndk就运行正常啦!5.在eclipse中集成c/c++开发环境a.装Eclipse的C/C++环境插件:CDT,这里选择在线安装。
首先登录/cdt/downloads.php,找到对应你Eclipse版本的CDT插件的在线安装地址。
b.然后点Help菜单,找到Install New Software菜单c.点击Add按钮,把取的地址填进去,出来插件列表后,选Select All,然后选择下一步即可完成安装。
d.安装完成后,在eclispe中右击新建一个项目,如果出现了c/c++项目,则表明你的CDT插件安装成功啦!6.配置C/C++的编译器a.打开eclipse,导入ndk自带的hello-jni例子,右键单击项目名称,点击Properties,弹出配置界面,之后再点击Builders,弹出项目的编译工具列表,之后点击New,新添加一个编译器,点击后出现添加界面,选择Program,点击OK。
b.出现了添加界面,首先给编译配置起个名字,如:C_Builder,设置Location为<你cygwin安装路径>\bin\bash.exe程序,例:E:\cygwin\bin\bash.exe,设置Working Directory为<你cygwin安装路径>\bin目录,例如:E:\cygwin\bin,设置Arguments为--login-c"cd/cygdrive/e/android-ndk-r5/samples/hello-jni&& $NDK/ndk-build"上面的配置中/cygdrive/e/android-ndk-r5/samples/hello-jni是你当前要编译的程序的目录,$NDK是之前配置的ndk的环境变量,这两个根据你具体的安装目录进行配置,其他的不用变,Arguments这串参数实际是给bash.exe命令行程序传参数,进入要编译的程序目录,然后运行ndk-build编译程序c.接着切换到Refresh选项卡,给Refresh resources upon completion打上钩d.然后切换到Build Options选项卡,勾选上最后三项e.之后点击Specify Resources按钮,选择资源目录,勾选你的项目目录即可f.最后点击Finish,点击OK一路把刚才的配置都保存下来,注意:如果你配置的编译器在其它编译器下边,记得一定要点Up按钮,把它排到第一位,否则C代码的编译晚于Java代码的编译,会造成你的C代码要编译两次才能看到最新的修改。
g.编译配置也配置完成啦,现在来测试一下是否可以自动编译呢,打开项目jni目录里的hello-jni.c文件把提示Hello from JNI!改成其他的文字:如:Hello,My name is alex.,然后再模拟器中运行你的程序,如果模拟器中显示了你最新修改的文字,那么Congratulations!你已经全部配置成功啦!五、开发自己的NDK程序入门的最好办法就是学习Android自带的例子,这里就通过学习Android的NDK自带的demo 程序:hello-jni来达到这个目的。