原文网址:http://blog.csdn.net/u012176591/article/details/23018913

作者:金良(golden1314521@gmail.com) csdn博客:http://blog.csdn.net/u012176591

1. 安装JDK.

1.1 去官网http://www.oracle.com/technetwork/java/javase/downloads/index.html下载JDK7软件包,我下载的是jdk-7u51-windows-i586.exe。

1.2 双击安装jdk-7u51-windows-i586.exe,安装过程中JDK和JRE的安装目录选择默认即可。

1.3 配置JDK环境变量

参见百度经验http://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html的描述。

2. 去官网http://www.eclipse.org/downloads/下载Eclipse,我下载的eclipse-java-kepler-SR2-win32.zip,解压即可使用。

3. 搭建Android开发环境

3.1  安装Android SDK

3.1.1 去网站http://developer.android.com/sdk/index.html下载adt-bundle-windows-x86-20140321.zip.先说说这个adt-bundle-windows-x86-20140321,其实用它就可以直接做Android应用开发,但是里面的Eclipse工具不好用,所以我只使用里面的sdk包。

3.1.2 将下载来的adt-bundle-windows-x86-20140321.zip解压,我们要使用的是里面的sdk文件包,将这个sdk文件包放到你想要的目录,后面要用,解压的结果见图一。

(图一)

3.2  安装Eclipse的ADT插件(Android Development Tools).
           3.2.1  启动Eclipse, 选择菜单项的Help->Install New Software
           3.2.2  点击Add, 输入名称,然后在URL中输入:
                     http://dl-ssl.google.com/android/eclipse/,OK!
           3.2.3  选择需要更新的工具,Finish, 安装完成后重启Eclipse。

3.3 安装Eclipse的NDK插件(Android Native Development Tools),这个插件包里有C语言相关的工具,安装方法同3.2.
  3.4  配置ADT插件
       3.4.1  启动Eclipse,选择菜单项的Window -> Preferences
       3.4.2  选择Android,在SDK Location中选择SDK的安装目录,OK!

3.5 创建虚拟机

3.5.1  选择创建一个Android 模拟设备。选择菜单项的Window ->AVD Manager-> New ,新建一个模拟设备,,选用插件自带的手机模拟器配置,步骤如图二中所示:

第一步:AVD Name:模拟器命名,具体名称没有要求。

第二步:Device:在下拉列表里选择手机配值,可以看到某些参数已经配置好,不需要我们设置。

第三部:Skin:在下拉列表中选择皮肤。

第四步(可选):设置内存大小

以上几个步骤完成后,点击确认,一个手机模拟器就建成了。

(图二)

4. 安装NDK

4.1 去官方网站http://developer.android.com/tools/sdk/ndk/index.html下载最新的NDK开发包,版本一定要R7以上,比如32位windows可下载android-ndk-r9d-windows- x86.zip。

4.2 解压下载的android-ndk-r9d-windows-x86.zip,将其放到你想要的目录下。

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

5. NDK实例的实现
 5.1 启动Eclipse,新建Android工程(此处名为TestNDK),如图三所示:

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

注:如果你很好奇jni文件夹里的hello-jni.c里的函数命名如此刁钻,是怎么写的,并且你如果你想的更远,已经在考虑自己以后怎么写这种文件,那么我告诉你它里面的函数命名是直接粘贴的一个头文件里的内容。这个头文件可以通过反编译下边提到的HelloJni.java得到。如果你以后要确实要进行NDK开发,那么你肯定要掌握反编译的方法。为了你能够少走弯路,推荐我的另一篇文章《1分钟攻克NDK开发中javah不能反编译的问题》,链接网址http://blog.csdn.net/golden1314521/article/details/23039417 。
 5.3 找到NDK的安装目录(\samples\hello-jni\src\com\example\hellojni)下的HelloJni.java文件,将其拷贝到TestNDK工程src文件夹对应的包下。
 5.4 修改项目文件AndroidManifest.xml,将activity标签下的 android:name =“.TestNDKActivity”修改为 android:name =“.HelloJni”。(注:此处的
TestNDKACtivity为项目自动生成的,项目不同,此处也会不同)  
5.5 新建并配置一个Builder
  5.5.1 点击Project->Properties->Builders->New,新建立一个Builder。在弹出的对话框上面点击Program,OK!如图四所示:

(图四)
  5.5.2 在弹出的对话框【Edit Configuration】中,配置选项卡【Main】:
      Location中需要填入nkd-build.cmd的路径(NDK安装目录下)。
      Working Diretcoty中需要填入TestNDK的工程根目录。
       如图五所示:

(图五)
  5.5.3 配置选项卡【Refresh】,如图六所示:
      勾选“Refresh resources upon completion”,
      勾选“The entire workspace”,
      勾选“Recuresively include sub-folders”。

(图六)
   5.5.4 配置选项卡【Build Options】,如图七所示:
      勾选“After a “Clean””,
      勾选“During manual builds”,
      勾选“During auto builds”,
      勾选“Specify working set of relevant resources”。
      点击“Specify Resources…”勾选TestNDK工程的“jni“目录 ,Finish!

保存设置,OK!

(图七)

5.5.5 Project->clean->选择工程->点击OK。当在console里面看到如图八所示的信息,则表示一切正常,此时就已经是自动编译代码了。

(图八)

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

(图八)

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

如果你是新手,为了避免不必要的麻烦,请你安装NDK时选择R7版本(android-ndk-r7-windows.zip)。

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

(图九)

如果程序运行出错,显示“应用程序**(进程: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++文件)改正此错误后,运行,正常显示。

【转】10分钟搭建NDK的Android开发环境的更多相关文章

  1. react-native —— 在Windows下搭建React Native Android开发环境

    在Windows下搭建React Native Android开发环境 前段时间在开发者头条收藏了 @天地之灵_邓鋆 分享的<在Windows下搭建React Native Android开发环 ...

  2. 极其简单的搭建eclipse的android开发环境

    这篇博客是关于如何搭建eclipse的android开发环境, 与网上的其他博客不同,我的方法比他们简单的多,所 以推荐给大家. 搭建eclipse的android开发环境步骤: 1.配置JDK(Ja ...

  3. 在windows下用cygwin和eclipse搭建cocos2dx的android开发环境

    在windows下用cygwin和eclipse搭建cocos2dx(2.1.4)的android开发环境,2013-8-1更新. 一.准备工作 需要下载和安装以下内容,请根据自己的操作系统选择x86 ...

  4. 在Eclipse上搭建Cocos2d-x的Android开发环境

    很多其它相关内容请查看本人博客:http://www.bokeyi.com/ll/category/cocos2d-x/ 本文的搭建方法是最新最正确的方法,好多朋友反映搭建eclipse交叉编译环境非 ...

  5. 搭建PhoneGap for Android开发环境

    一.确保Android开发环境正常. 二.下载PhoneGap.可到http://www.phonegapcn.com/去下载,速度快些. 三.新建一个PhoneGap项目 1.在eclipse中新建 ...

  6. 轻松搭建Unity3D 安卓Android开发环境

    1,下载安装Java的JDK: http://www.oracle.com/technetwork/java/javase/downloads/index.html (JDK中,包含JRE) 如果是6 ...

  7. 一步一步在Windows下搭建React Native Android开发环境

    搭建JAVA开发环境 依据操作系统分为x86或x64位的.下载jdk1.8以上的版本号. 本机安装时的java版本号:jdk-8u45-windows-x64.exe 配置JAVA的环境变量 JAVA ...

  8. 手把手教你在Windows下搭建React Native Android开发环境

    最近看到React Native好像好厉害的样子,好奇心驱使之下体验了一下并将在Window下搭建React Natvie Android环境的步骤记录下来,并有需要的朋友参考.(我都是参考官方文档的 ...

  9. 搭建Mono for Android开发环境(用离线版)

    上面为我现在的离线版的安装包内容(不知道为什么上传的图名字显示不出来,郁闷),这些文件可以到http://pan.baidu.com/s/1ntM8U4T这里去下载: 安装步骤如下: 1)jdk-6u ...

随机推荐

  1. jdbc mysql 取数,突然取不到数据,数据库中有数据

    项目用的是jdbc+mysql,局网取数据的时候,数据一切正常,但是传到服务器上以后,曾经是好的 不知道为什么,近期一传就取不到数据,发现android写的也没有问题,至少大体上没有语法问题. 跟踪后 ...

  2. keystone命令与client接口学习

    keystone学习 ------------------ Keystone(OpenStack Identity Service)是OpenStack框架中,负责身份验证.服务规则和服务令牌的功能, ...

  3. java第一课:环境、变量、数据类型

    一.java编程注意事项1.java区分大小写2.每条语句结尾有分号3.上下级代码注意缩进4.大括号要成对出现5.标点符号要用英文半角(半角全角区别)二.eclipse1.eclipse是自编译及时编 ...

  4. 1176: [Balkan2007]Mokia - BZOJ

    Description维护一个W*W的矩阵,每次操作可以增加某格子的权值,或询问某子矩阵的总权值. 修改操作数M<=160000,询问数Q<=10000,W<=2000000.Inp ...

  5. Recommender Systems协同过滤

    第一部分是学习ID3时候积累的. 一.以前写的基础知识 1.信息:是用来消除不确定性的度量,信息量的大小,由所消除的不确定性的大小来计量(香农). 2.由于不确定性是由随机性引起的,所以用概率来描述和 ...

  6. PAT-乙级-1014. 福尔摩斯的约会 (20)

    1014. 福尔摩斯的约会 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 大侦探福尔摩斯接到一张奇怪的 ...

  7. Nagios : Verifying Your Configuration

    Every time you modify your configuration files, you should run a sanity check on them. It is importa ...

  8. MVC 国内架构设计

    http://www.cnblogs.com/guomingfeng/p/mvc-ef-query.html http://www.cnblogs.com/haogj/p/3127795.html

  9. ORA-12704 字符集不匹配

  10. 第十七章 委托 第十八章 Attribute 第十九章 可空值类型

    1.委托揭秘 定义一个委托,编译器会生成一个继承自System.MulticastDelegate的类,所有的委托都继承自该类. 由于委托是类,所以能定义类的地方,都能定义委托. 委托内部有一个tar ...