一、需要先行下载的工具(以我自已的开发环境为例)
eclipse版本: eclipse-cpp-helios-SR1-win32.zip
NDK版本: android-ndk-r7-windows.zip
SDK版本: android_sdk_r15.exe
Cygwin版本: cygwin-downloader-end.rar(1.7.1-1)
ADT版本: ADT-14.0.0.zip
JDK版本: jdk-6u23-windows-i586.exe(jdk1.6.0_23)
二、安装工具
1、 安装JDK
2、 解压eclipse-java-c-svn-explorer-adt_11-helios-win32.zip到某个分区根目录(插件已经都安装好,但需要配置adt)
3、 安装android_sdk_r15.exe,仅选择文档和sdk 仅安装2.2,2.3即可(耗时较长),其他保留
安装SDK时,会出现Failed to fetch URL…的错误
1.到settings一栏,将force复选框选上,并填上代理服务器的地址和端口,使用https下载数据
2.更改ie的代理设置,如果是 “自动脚本配置” 就需要改成LAN方式手动指定代理.
3.重新尝试。
4.在avilible…一栏中选择所有,然后安装。
5.可以创建VAD,然后运行
4、 启动eclipse,选择工作区,配置ADT(Window->Prefrence->Android,点击Browser,选择SDK的安装路径)
5、 安装ADT
1.启动eclipse,主菜单Window->Prefrence->General->Network Connection,确认面板中Proxy部分的HTTP已勾选
2.选择Help主菜单,Install New Software…,点击Add…
3.点击Archive…,选择ADT-8.0.0.zip的路径(不要解压),开始安装,中间有一些步骤,不赘述
4.结束时要求重启eclipse,确认。
5.配置Android SDK,主菜单Window->Prefrence,选择Android面板
6.点击Browser,选择SDK的安装路径,确认。
7.配置完成可以新建Android应用测试
三、确认环境是否配置成功
1、确认SDK安装成功: windows->Prefrence->Android,右边是否列出了所安装的android(TARGET NAME)2.2/2.3…
选择正确的 SDK Location: D:\tools\android-sdk
2、Cygwin版本:
$ cygcheck -c cygwin 此命令在Cygwin中执行
Cygwin Package Information
Package Version Status
cygwin 1.7.1-1 OK
3、配置NDK环境变量
1.cygwin的安装目录,找到一个home\<你的用户名>\.bash_profile文件中添加如下:
NDK=/cygdrive/c/android-ndk-r7
export NDK
2.运行cygwin,输入 cd $NDK,如何设置成功,则显示刚刚配置的路径
3.测试ndk-build脚本,进入 N D K / s a m p l e / h e l l o − j n i 项目下,运行 NDK/sample/hello-jni项目下,运行 NDK/sample/hello−jni项目下,运行NDK/ndk-build
输出一下信息:说明编译成功
Compile thumb : helloneon <= helloneon.c
Compile thumb : cpufeatures <= cpu-features.c
StaticLibrary : libcpufeatures.a
SharedLibrary : libhelloneon.so
Install : libhelloneon.so => libs/armeabi/libhelloneon.so
Compile thumb : helloneon <= helloneon.c
Compile thumb : helloneon <= helloneon-intrinsics.c
Compile thumb : cpufeatures <= cpu-features.c
StaticLibrary : libcpufeatures.a
SharedLibrary : libhelloneon.so
Install : libhelloneon.so => libs/armeabi-v7a/libhelloneon.so
四、使用 ecclipse 编辑代码与编译
1、设定字体及颜色:windows->Prefrence点击Genral->Appearance->Colors and Fonts
2、导入工程代码
1.File->new->other…->Android->Android Project,next
2.可选择新建,也可以选择create project from existing example
3.选择后者,选择build target为Android 2.3
4.samples 下拉列表选择任意一个工程,finish
5.选中工程,右键->build project(如果没有,取消主菜单Project->build automaticly)
6.选中工程,右键->Android application(如果没有AVD设备则需要配置)
3、配置C/C++的编译器
1.右键单击项目名称,点击Properties,弹出配置界面,之后再点击Builders,弹出项目的编译工具列表,之后点击New,新添加一个编译器,点击后出现添加界面,选择Program,点击OK按钮
出现了添加界面,首先给编译配置起个名字,如:C_HelloJni_Builder
设置Location为<你cygwin安装路径>\bin\bash.exe程序,例如:C:\cygwin\bin\bash.exe,
设置Working Directory为<cygwin安装路径>\bin目录,例如:C:\cygwin\bin
设置Arguments为 --login -c “cd /cygdrive/c/NDK/android-ndk-r7/samples/hello-jni && $NDK/ndk-build”
$NDK是之前配置的ndk的环境变量,这两个根据你具体的安装目录进行配置,其他的不用变,Arguments这串参数实际是给bash.exe命令行程序传参数,进入要编译的程序目录,然后运行ndk-build编译程序
对于NDK_Builder的参数时可以设定如下:
–login -c “cd ‘${project_loc}’ && $NDK/ndk-build”
每个工程都需要配置一次,主要是参数需要变更。
2.对于以上的Edit Configuration中有四个选项框,自行进行配置:
【Main】 【Refresh】 【Environment】 【Build Options】
配置保存完成,如果你配置的编译器在其它编译器下边,记得一定要点Up按钮,把它排到第一位,否则C代码的编译晚于Java代码的编译,会造成你的C代码要编译两次才能看到最新的修改
4、编译及清除中间文件
清除: project->Clean…-> 这里有两个选择框 Clean all projects & Clean projects selected below选中需要清除的项目
编译:项目名称右键单击,选择 Build Project
运行:Run as/Debug As -> Android Project 即可运行,需要在盒子上运行,则首先利用adb connect target_ip 然后再运行
默认情况下,NDK的编译系统会按”armeabi”ABI生成机器代码。若想生成其他类型的机器代码 eg:x86 mips
只需修改application.mk中的 APP_ABI 即可。
关于application.mk的介绍如下:
配合android.mk 使用的make 文件还有一个application.mk ,大部分情况无需修改该文件,下面也来自网络翻译
Application.mk文件
简介:
—————————–
要将C\C++代码编译为SO文件,光有Android.mk文件还不行,还需要一个Application.mk文件。
本文档是描述你的Android应用程序中需要的本地模块的Application.mk的语法使用,要明白如下。
Application.mk目的是描述在你的应用程序中所需要的模块(即静态库或动态库)。
Application.mk文件通常被放置在 P R O J E C T / j n i / A p p l i c a t i o n . m k 下, PROJECT/jni/Application.mk下, PROJECT/jni/Application.mk下,PROJECT指的是您的项目。
另一种方法是将其放在顶层的子目录下:
$NDK/apps目录下,例如:
$NDK/apps//Application.mk
是一个简称,用于描述你的NDK编译系统的应用程序(这个名字不会生成共享库或者最终的包)
下面是Application.mk中定义的几个变量。
APP_PROJECT_PATH
这个变量是强制性的,并且会给出应用程序工程的根目录的一个绝对路径。这是用来复制或者安装一个没有任何版本限制的JNI库,从而给APK生成工具一个详细的路径。
APP_MODULES
这个变量是可选的,如果没有定义,NDK将由在Android.mk中声明的默认的模块编译,并且包含所有的子文件(makefile文件)
如果APP_MODULES定义了,它不许是一个空格分隔的模块列表,这个模块名字被定义在Android.mk文件中的LOCAL_MODULE中。注意NDK会自动计算模块的依赖
注意:NDK在R4开始改变了这个变量的行为,再次之前:
- 在您的Application.mk中,该变量是强制的
- 必须明确列出所有需要的模块
APP_OPTIM
这个变量是可选的,用来定义“release”或”debug”。在编译您的应用程序模块的时候,可以用来改变优先级。
“release”模式是默认的,并且会生成高度优化的二进制代码。”debug”模式生成的是未优化的二进制代码,但可以检测出很多的BUG,可以用于调试。
注意:如果你的应用程序是可调试的(即,如果你的清单文件中设置了android:debuggable的属性是”true”)。默认的是”debug”而不是”release”。这可以通过设置APP_OPTIM为”release”来将其覆盖。
注意:可以在”release”和”debug”模式下一起调试,但是”release”模式编译后将会提供更少的BUG信息。在我们清楚BUG的过程中,有一些变量被优化了,或者根本就无法被检测出来,代码的重新排序会让这些带阿弥变得更加难以阅读,并且让这些轨迹更加不可靠。
APP_CFLAGS
当编译模块中有任何C文件或者C++文件的时候,C编译器的信号就会被发出。这里可以在你的应用中需要这些模块时,进行编译的调整,这样就不许要直接更改Android.mk为文件本身了
重要警告:+++++++++++++++++++++++++++++++++++++++++++++++ + +
+ 在这些编制中,所有的路径都需要于最顶层的NDK目录相对应。
+ 例如,如果您有以下设置:
+sources/foo/Android.mk
+sources/bar/ Android.mk
+ 编译过程中,若要在foo/Android.mk中指定你要添加的路径到bar源代码中,
+ 你应该使用
+ APP_CFLAGS += -Isources/bar
+ 或者交替:
+ APP_CFLAGS += -I $(LOCAL_PATH )/…/bar
+ 使用’-l…/bar/’将不会工作,以为它将等同于”-l$NDK_ROOT/…/bar”
++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++
注意:在Android的NDK 1.5_r1,只适用于C源文件,而不适合C++。
这已得到纠正,以建立完整相匹配的Android系统。
APP_CXXFLAGS
APP_CPPFLAGS的别名,已经考虑在将在未来的版本中废除了