本文转载自如下网址,感谢原作者。

http://www.th7.cn/Program/Android/201409/287799.shtml

ps。已经亲测成功可用

1)打开Android开发者的官网 http://developer.android.com/ 找到Develop点击。如果页面打不开,通过代理来访问。

android NDK环境搭建【针对EClipse】_第1张图片

2)进入后再点击Tools


android NDK环境搭建【针对EClipse】_第2张图片

3)进入后在左侧找到NDK点击,可以见到各种平台的NDK r10。



android NDK环境搭建【针对EClipse】_第3张图片

选择需要的下载


android NDK环境搭建【针对EClipse】_第4张图片

5)解压下载的android-ndk32-r10-windows-x86_64.zip,将其放到你想要的目录下。


注:R7之前的版本,必须要安装Cygwin才能使用NDK。从R7开始,Windows版本的NDK提供了一个ndk-build.cmd脚本,可以直接利用这个脚本编译。想要做到这一 点,只要为Eclipse Android工程添加一个Builder,就能实现Eclipse的自动编译NDK,这一点在后面的步骤会有介绍。

android NDK环境搭建【针对EClipse】_第5张图片

6) NDK实例的实现


启动Eclipse,新建Android工程(此处名为TestNDK),如图所示:

android NDK环境搭建【针对EClipse】_第6张图片

7)在TestNDK工程的根目录下新建文件夹jni,之后找到NDK的安装目录(sampleshello-jnijni)下的 Android.mk和hello-jni.c 这两个文件,将其拷贝到TestNDK->jni文件夹下面。


android NDK环境搭建【针对EClipse】_第7张图片 android NDK环境搭建【针对EClipse】_第8张图片 android NDK环境搭建【针对EClipse】_第9张图片

注:如果你很好奇jni文件夹里的hello-jni.c里的函数命名如此刁钻,是怎么写的,并且你如果你想的更远,已经在考虑自己以后怎么写这种文件,那么我告诉你它里面的函数命名是直接粘贴的一个头文件里的内容。这个头文件可以通过反编译下边提到的HelloJni.java得到。如果你以后要确实要进行NDK开发,那么你肯定要掌握反编译的方法。为了你能够少走弯路,推荐我的另一篇文章《1分钟攻克NDK开发中javah不能反编译的问题》,链接网址http://blog.csdn.net/golden1314521/article/details/23039417 。


8) 找到NDK的安装目录(sampleshello-jnisrccomexamplehellojni)下的HelloJni.java文件,将其拷贝到TestNDK工程src文件夹对应的包下。

android NDK环境搭建【针对EClipse】_第10张图片 android NDK环境搭建【针对EClipse】_第11张图片

9) 修改项目文件AndroidManifest.xml,将activity标签下的 android:name =“com.zhw.testndk. MainActivity”修改为 android:name =“com.example.hellojni.HelloJni”。(注:此处的


TestNDKACtivity为项目自动生成的,项目不同,此处也会不同)

10) 新建并配置一个Builder

点击Project->Properties->Builders->New,新建立一个Builder。在弹出的对话框上面点击Program,OK!如图所示

android NDK环境搭建【针对EClipse】_第12张图片

在弹出的对话框【Edit Configuration】中,配置选项卡【Main】:


Location中需要填入nkd-build.cmd的路径(NDK安装目录下)。

Working Diretcoty中需要填入TestNDK的工程根目录。如图所示:

注:不要漏了

android NDK环境搭建【针对EClipse】_第13张图片

配置选项卡【Refresh】,如图所示:


勾选“Refresh resources upon completion”,

勾选“The entire workspace”,

勾选“Recuresively include sub-folders”。

android NDK环境搭建【针对EClipse】_第14张图片

配置选项卡【Build Options】,如图七所示:

勾选“After a “Clean””,

勾选“During manual builds”,

勾选“During auto builds”,

勾选“Specify working set of relevant resources”。

点击“Specify Resources…”勾选TestNDK工程的“jni“目录 ,Finish!

android NDK环境搭建【针对EClipse】_第15张图片

当在console里面看到如图八所示的信息,则表示一切正常,此时就已经是自动编译代码了。

注:如果不成功:Project->clean->选择工程->点击OK

android NDK环境搭建【针对EClipse】_第16张图片

假如你使用的是NDK-R9版本中的例子,你在console里面会看到比上图要多的编译信息,截图如下

这时候你要检查一下工程根目录下的libs目录下的子目录,要删除libs中多余的子文件夹,只留下armeabi文件夹和以jar为后缀名的jar包。

android NDK环境搭建【针对EClipse】_第17张图片

10)右键点击工程TestNDK,Run As -> Android Application, 运行程序。当出现图所示信息时,NDK实例运行成功!

android NDK环境搭建【针对EClipse】_第18张图片

如果程序运行出错,显示“应用程序**(进程:com.example.***)意外停止,请重试”的错误提示

这个错误产生的原因极有可能是你的JNI文件的命名或包的声明写错了。查一下程序运行的日志logcat,显示错误为“java.lang.UnsatisfiedLinkError:stringFromJNI”,说的是Java层调用本地方法stringFromJNI时,却没有找到这个本地方法,所以除了错。

那么Android虚拟机怎么查找这个本地方法的呢?先说一下Android工程的环境:包名称是com.example.testndk,应用名称是HelloJni,如果Java层调用了本地方法String stringFromJNI(),那么Android虚拟机就会由这三个变量生成一个名字:jstring Java_com_example_testndk_HelloJni_stringFromJNI( JNIEnv* env, jobject thiz ) ,并在本地方法中严格按照这个名字查找同名的本地方法。如果找不到,就会返回上图的错误。所以要确认一下JNI文件的命名或包的声明是否与Java文件中的一致。

在本地文件(即C或C++文件)改正此错误后,运行,正常显示。

更多相关文章

  1. Android Webview upload 图片上传
  2. Android图片圆角转换 RoundedImageView开源项目 小记
  3. Android UI开发第二十二篇――android 瀑布流图片实现
  4. android studio开发环境配置(指定SDK及卸载)附安装文件网盘地址(win
  5. Android 绘制一个Loading动画__向图片中缓慢填充颜色,从而形成动
  6. 如何在Android当中显示网络图片

随机推荐

  1. android 音效处理 (2)
  2. 转:Game Engines for Android(安卓)(Andr
  3. 修改android系统和watchdog的延时
  4. Android常用控件
  5. android 下写文件性能测试
  6. android之BitMap
  7. android 拨打紧急号码,通话时开启免提功能
  8. APP开发实战94-Vector静态图的使用
  9. android 分辨率及密度详细
  10. android用户界面-组件Widget-画廊视图Gal