zoukankan      html  css  js  c++  java
  • 【转】10分钟搭建NDK的Android开发环境

    原文网址: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的安装目录(sampleshello-jnijni)下的 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的安装目录(sampleshello-jnisrccomexamplehellojni)下的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++文件)改正此错误后,运行,正常显示。

  • 相关阅读:
    out/host/linuxx86/obj/EXECUTABLES/aapt_intermediates/aapt 64 32 操作系统
    linux 查看路由器 电脑主机 端口号 占用
    linux proc进程 pid stat statm status id 目录 解析 内存使用
    linux vim 设置大全详解
    ubuntu subclipse svn no libsvnjavahl1 in java.library.path no svnjavahl1 in java.library.path no s
    win7 安装 ubuntu 双系统 详解 easybcd 工具 不能进入 ubuntu 界面
    Atitit.json xml 序列化循环引用解决方案json
    Atitit.编程语言and 自然语言的比较and 编程语言未来的发展
    Atitit.跨语言  文件夹与文件的io操作集合  草案
    Atitit.atijson 类库的新特性设计与实现 v3 q31
  • 原文地址:https://www.cnblogs.com/wi100sh/p/4299358.html
Copyright © 2011-2022 走看看