Android Eclipse NDK开发环境搭建

来源:互联网 发布:淘宝漏洞零元买东西 编辑:程序博客网 时间:2024/05/16 01:06

环境准备

  1. 本文描述在windows下使用Eclipse进行NDK开发环境的搭建,后续环境设置均为在windows下有效(linux下设置有差异);

  2. 在进行NDK开发之前,需要安装以下软件:

    • JDK;
      安装JDK以后,设置环境变量:
      JAVA_HOME = C:\Program Files\Java\jdk1.8.0_51\
    • Eclipse;
    • Android SDK( install in SDK manager from Eclipse );
    • NDK;
    • cygwin compile environment;

native code build

  1. 环境变量设置;
    设置系统环境变量
    ANDROID_NDK = d:\Users\username\AppData\Local\Android\android-ndk-r10e\

  2. build sample in NDK;

    1. 启动cygwin;
    2. cd到$ANDROID_NDK\samples\hello-jni目录下
    3. 执行ndk-build
      如果正常compile,并生成libhello-jni.so,说明ndk的环境已经可以正常工作;
  3. ndk build in android app project;

    • 创建一个Android APP project,名字为MyProject;
    • open MyActivity.java, 声明一个native method:
    public class MyActivity extends Activity {    public native String getMyData();}
    • 使用静态初始化的方式来加载这个native方法的实现library
    static {    System.loadLibrary( "mylib" );}
    • 在project目录下创建目录jni

    • 在jni目录下创建Android.mk文件,文件内容如下:

    LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODLUE := mylibLOCAL_SRC_FILES := com_myproject_MyActivity.cinclude $(BUILD_SHARED_LIBRARY)
    • 手动创建对应的native method的header file和method implementation;

    • 运行cygwin,在project目录下运行ndk-build来compile native code;

使用javah生成头文件

上述进行手动创建header file的步骤会比较繁琐,非常容易出错,比较常用的方式是使用javah来辅助header file的创建;
具体步骤如下:

  1. open Run | External Tools | External Tools Configurations

  2. 创建一个新的program configuration,名字为MyProject javah; 具体设置如下图:
    这里写图片描述

    • Location是javah所在的目录(安装jdk时,有创建JAVA_HOME,javah在JAVA_HOME\bin目录下;
    • Working Directory是声明native method的java file的目录;
    • Arguments中,使用-d来指定生成header file的目录, org.libsdl.app.SDLActivity是包含native method声明的class name,如果有多个class中都有native method declare,则用空格分隔;
    • Refresh tab中,勾选”Refresh resource upon completion”;
  3. 配置好以后,click Run来生成header file;

  4. 此时在Project Explorer中,应该可以看到新生成的header file,如果没有,可以使用右键菜单的Refresh试试;

使用IDE进行ndk-build

每次build native code,都需要打开cygwin,在project目录下运行ndk-build是比较麻烦的,Eclipse中可以执行这样的操作是最方便的,具体方式如下:

  1. convert to a C/C++ project;

    1. Open Menu File | New | Other;
    2. Under C/C++, select Convert to a C/C++ project and click Next;
    3. Check MyProject, choose MakeFile project and Other Toolchain and finish click on Finish;
      进行如此convert以后,后续的右键菜单才有C/C++ build的item可以进行设置。
  2. 在MyProject上右键菜单,选择Properties;

  3. 在C/C++ Build section, uncheck Use default build command and enter
    bash ${env_var:ANDROID_NDK}/ndk-build

  4. 在C/C++ Settings的Behavior tab下,把Build on resource save进行选中;这样在执行save动作时,就会自动执行ndk-build;

这样设置以后,ndk-build已经可以成功了,不过在editor中,还会有部分code因为找不到定义,会有黄色的底线,可以通过引入ndk的包含目录来解决此问题

  1. in project properties, C/C++ Geleral/Paths and Symbols -> Includes;

  2. click “Add…”, enter the path to the directory containing the include file which is located inside NDK’s “platforms” directory, like:
    ${env_var:ANDROID_NDK}/platforms/android-9/arch-arm/usr/include

  3. also add path

${env_var:ANDROID_NDK}/toolchains/arm-linuxandroideabi-4.4.3/prebuilt/<your OS>/lib/gcc/armlinuxandroideabi/4.4.3/include

添加好include 目录后,code中的黄色底线也消失了。

至此,Eclipse下的NDK开发环境就已经搭建好了。

0 0
原创粉丝点击