做Android NDK开发时,c代码需要用ndk-build来进行编译,而java代码则需要用Android sdk编译。
编译c代码有两种方法:
一、写好c代码后,然后用cygwin搭建ndk-build环境,用ndk-build来编译出相关的.so文件(libs目录)之后,
再用eclipse里去编译java程序,从而使用.so文件。该方法在上一篇搭建NDK环境有介绍。
二、利用eclipse完全可以达到编译.so的目的。
首先,先装上CDT吧,这是Eclipse的C/C++环境插件,装上它后你就可以在Eclipse里创建C/C++项目和代码文件了。插件的安装有两种方式,一种是在线安装,一种是下载安装包自己安装,这里只介绍第一种方式,另一种方式可自行百度。首先登录http://www.eclipse.org/cdt/downloads.php,找到对应你Eclipse版本的CDT插件的在线安装地址,如下图所示:,找到对应你Eclipse版本的CDT插件的在线安装地址,如下图所示:
2、找到对应你eclipse版本的CDT插件地址,之后打开Eclipse,点Help菜单,找到Install New Software菜单,注意一些老版本的Eclipse菜单不太一样,比如说Europa的版本,就是Help--Software Updates—Find and Install--Search for new features to install--New Remote Site,除了菜单不太一样外,安装方式都差不多,可自行百度一下,下图以Indigo版本为准:
3、把取的地址填进去,出来插件列表后,选Select All,如下图所示:
然后狂点下一步即可完成安装。
也可以点击Add按钮用离线方法安装。出现该对话框,点击Archive按钮,选择之前下载的离线安装包,安装过程同在线安装。
4、安装完成后,点菜单File-New-Project,出现新建项目界面,如果出现了C/C++项目,那么恭喜你,CDT安装也完成了,如下图所示:
5、 不过光有CDT还不行,CDT编译代码还是需要调用cygwin当中的编译工具进行,所以我们还需要手动配置C/C++的编译器,还是以NDK自带的hello-jni为例子,首先打开Eclipse,File->New->Project->Android->Android project->next,在New Android Project选项卡中,选Create project from
existing source;在Location:按Browse找到NDK自带的Hello-jni目录。
选择Android SDK版本后,点击Finish,完成导入。
6、 把这个项目导入进来,导入后如下图所示:
7、 编译C文件:
右键单击HelloJni之后,点击Properties,弹出配置界面,之后再点击Builders,如下图所示:
点击New按钮,新添加一个编译器,点击后出现添加界面,选择Program,点击OK:
8、 点击OK后,出现了添加界面:
在Main Tab界面, 填充以下内容:
Name:
编译器名称,随便填写。如:NDK_Builder
Location:
可执行工具的位置。即NDK安装目录下ndk-build.cmd的位置。
你可以点击Browser File System...按钮选择Android NDK安装目录下的ndk-build.cmd文件来指定Location。如下图:
你也可以设置一个变量来指定Android NDK的安装目录后设置Location。点击Variables按钮指定。如下图:
出现选择Variable的选择框。
单击Edit Variables...按钮。出现Variable管理的界面。单击New按钮添加Variable。
输入Variable的名称,如:ndk_home。然后单击Browse...按钮,选择Android NDK的安装目录后,单击OK。
至此,NDK的Variable设置完成。
然后,单击Main Tab界面上Location的Variables...按钮,选择刚才设置的ndk_home变量。如下图:
单击OK后,在Location的编辑框里会有选择的ndk-home变量,在其后面添加上/ndk-build.cmd,OK,Location设置完成。
如下图:
Working Directory:
要编译的C/C++程序的工作目录。一般指定到jni文件夹,因为所有的C/C++程序都在该文件夹内实现。
首先选择Working Directory里的Browse Workspace...按钮,如下图:
然后,选择要编译的项目HelloJni的jni文件夹。
9、 接着切换到Refresh选项卡,给Refresh resources upon completion打上钩,选择The Project containing the selected resource项,
表示只更新包含选中资源的项目,选中的资源项就是Main Tab选择的jni文件夹。
完成后如下图:
10、 最后切换到Build Options选项卡,勾选During auto builds,如下图所示:
Specify Resources 按钮单击后,选择HelloJni项目的 jni 文件夹。
11、单击 Apply
OK 确认设置后,确保此 NDK 构建工具设置为列表中的第一个条目,方法是选择 Up 按钮,直到其位于 Builders 列表的顶部
记得一定要点Up按钮,把它排到第一位,否则C代码的编译晚于Java代码的编译,会造成你的C代码要编译两次才能看到最新的修改,排到第一位后如下图所示:
12、 现在再次恭喜你,编译配置也配置完成啦,那么来试试看是否可以自动编译吧,打开左侧jni目录里的hello-jni.c文件把提示Hello from JNI!改改,如下图所示:
单击项目,选择Build Project后,在HelloJni项目下会多出libs文件夹,.so文件就存放在这里。
另外在Console控制台会输出成功编译的提示信息。
编译之后点击run按钮跑起来看看吧,如果模拟器当中出现了你新修改的提示信息,那么再一次恭喜你,已经全部配置成功了!
分享到:
相关推荐
详细介绍了在eclipse中android项目下c/c++代码的自动编译,和在eclipse中用ant生成ndk需要的jni头文件,加速ndk的开发,因为是原创,费了不少心力和时间,所以设了6分,有人反映太贵了,现在调成3分,这下大家满意了...
eclipse android ndk环境配置及项目编译超详细攻略,包括cygwin的安装,配置
1. 配置JDK和Android SDK以及Android NDK的环境变量; 2. eclipse生成生成项目中所有头文件:com_myndk_MainActivity.h等; 3. 将Android/Java项目转变成C++项目; 4. 设置将默认编译C++的命令由make改为ndk-build; ...
windows下eclipse集成cygwin编译android_NDK.doc
eclipse中ndk 自动编译配置
注1:0.13版本的cocosw2d-x 搭配 Eclipse 也可以使用这个批处理,不要使用NDK自带的ndk-build.cmd 注2:此批处理可以脱离Eclipse,只用NDK自带的编译器即可,这里只用来编译库,如果要打包到APK还是需要Eclipse的...
原生lapack是用fortran语言写的,而NDK默认没有fortran编译环境,所以在安卓上想使用强大的lapack进行矩阵、线性代数运算变得十分困难。 最近找到某大神翻译的c语言版lapack,下载下来经过简单调试竟然可以用。 步骤...
eclipse完整编译NDK_sample代码.doc
后来结合网上说的让后加上自己摸索,终于可以用eclipse + NDK + Cygwin编译出so文件并且能够直接运行helloJNI程序了,现在把我的经验和大家分享,希望对大家有帮助。(想起来了,我的Cygwin是下载到本地然后安装的,...
本文档的主要作用:完成在eclipse中通过建立普通的android工程,通过配置环境就可以实现本地编译c、c++代码,生成.so 动态库。文档中图文并茂,生动形象。对android开发中使用c、c++代码者有益。
NDK是jni编译环境,用来编译C/C++给java调用,首先第一步,这个环境要配好
1.) 在项目根目录下创建jni目录,下面是要放进去的第一个文件Android.mk LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := main_jni #LOCAL_CFLAGS := LOCAL_SRC_FILES := main.cpp #LOCAL_...
图片详细说明配置步骤,供9张截图
如何使用Eclipse编译C 环境
4.2 服务的原理与使用... ..128 4.3 键盘事件处理... .130 4.4 包管理... .131 4.5 传感器... .132 4.6 浅析dalvik虚拟机JIT技术的实现... ...133 4.7 应用程序的签名(Signature) ... ...135 4.8 应用的权限... .....
编译好的源码,文档搜索Eclipse NDK 配置
Windows下编译.so文件步骤(这里我使用NDK(android-ndk-1.6_r1)加Cygwin 在windows下编译,如果没有请安装, 注:android-ndk-1.6_r1只支持android 1.6或更早版本,所以这里必须将你的android工程的Target设为1.6): ...
Eclipse Android 例子源码 SDL Android 例子源码可用工程,实测编译通过在模拟器运行(SDL 2.0 for Android),工程目录名叫AndroidTst2,编译通过可用, sdl source code for android android source code for sdl...
要在Android下从事音视频开发,绕不开ffmpeg+opencv,不管是初学者还是有一定经验的程序,面临的首要问题就是环境的搭建和库文件的编译配置等问题,特别是初学者,往往会在实际开发前浪费大量的时间来编译ffmpeg及...