eclipse下进行ndk开发步骤


配置NDK地址:

windows->preferences->Android->NDK,选择NDK目录.

eclipse下进行ndk开发步骤


  • 开始搭建:

1.首先,创建一个Android项目.一路next下去.这里我是基于4.0创建的.

eclipse下进行ndk开发步骤

2.右键点击项目->Android Tools -> Add Native Support.

eclipse下进行ndk开发步骤

eclipse下进行ndk开发步骤

    此时工程目录下会多出一些文件夹:jni,obj.jni文件夹是存放natvie代码的,obj是存放生成的库文件之类的.

eclipse下进行ndk开发步骤

3.然后创建GetString类
[java] view plain copy
  1. public class GetString {  
  2.     public static native String getStr();  
  3.     public native String getString();  
  4.     public native int add(int a, int b);  
  5. }  


eclipse下进行ndk开发步骤eclipse下进行ndk开发步骤

eclipse下进行ndk开发步骤

4.打开cmd命令行,进入项目的<项目地址>/bin/classes/下.输入javah -jni <包名>.类名或者进入到src目录下src>javah -com.aa.bb 也可以生成对应的头文件

这里使用了javah命令,这个命令是jdk里的,jre里是没有的.

如:<项目目录>\bin\classes>javah -jni com.zzk.hellojni.GetString

eclipse下进行ndk开发步骤eclipse下进行ndk开发步骤

该命令的作用是对GetString类生成.h头文件.成功后会在\bin\classes\下生成一个.h文件.

eclipse下进行ndk开发步骤eclipse下进行ndk开发步骤

把这个文件复制到工程jni文件下.

eclipse下进行ndk开发步骤eclipse下进行ndk开发步骤

此时会报错,提示Type 'JNIEnv' could not be resolved,是因为项目没有include 运行环境.

eclipse下进行ndk开发步骤eclipse下进行ndk开发步骤

右键项目->properties->C/C++general->Paths and Symbols

点击Add按钮

eclipse下进行ndk开发步骤eclipse下进行ndk开发步骤

勾选Add to all languages.点击File system,选择之前准备好的NDK目录下的\platforms\android-14\arch-arm\usr\include目录.注意NDK路径地址不能有汉字和空格!!!否则会报错.platforms最好选和项目sdk一致的版本.arch开头的三个目录应该是和cpu构架相关的,android绝大数的设备都是arm构架的.

eclipse下进行ndk开发步骤eclipse下进行ndk开发步骤

eclipse下进行ndk开发步骤

点击OK,点击Apply,会提示是否重构项目,点击确定.此时项目不再报错.

eclipse下进行ndk开发步骤

5.创建一个NDK Builder构造器.

右键项目->properties->builders->New.选择Program.然后弹出一个对话框.这里需要配置一下.

Main标签:Location选择NDK的根目录.Working Directory选择工程目录.

eclipse下进行ndk开发步骤eclipse下进行ndk开发步骤

Refresh标签:勾选Refresh resources upon completion.看图吧.

eclipse下进行ndk开发步骤eclipse下进行ndk开发步骤

Build Options标题:勾选框框内的.然后点击Specify Resources

eclipse下进行ndk开发步骤eclipse下进行ndk开发步骤

选择项目里的jni文件夹.

eclipse下进行ndk开发步骤eclipse下进行ndk开发步骤

点击finish,此时这里就多了一个NDK_Builder

eclipse下进行ndk开发步骤eclipse下进行ndk开发步骤

点击ok,会执行构建操作,此时如果出现下列信息就表示成功了.

eclipse下进行ndk开发步骤

eclipse下进行ndk开发步骤eclipse下进行ndk开发步骤

6.然后把之前的.h文件里的三个未实现的方法复制到.cpp内,然后实现方法.#include 头文件不要忘掉.

eclipse下进行ndk开发步骤eclipse下进行ndk开发步骤

然后点击project->build project.等待构建成功后obj文件夹下会多出一些文件.

eclipse下进行ndk开发步骤eclipse下进行ndk开发步骤

libHelloJNI.so 就是最后生成的动态库.

7.最后在MainActivity中调用GetString类的方法.显示到界面上.

[java] view plain copy
  1. public class MainActivity extends Activity {  
  2.   
  3.     @Override  
  4.     protected void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.activity_main);  
  7.         TextView tv = (TextView) findViewById(R.id.tv);  
  8.         String str = GetString.getStr();  
  9.         str += "\n" + new GetString().getString();  
  10.         str += "\n" + new GetString().add(53);  
  11.         tv.setText(str);  
  12.     }  
  13.   
  14. }  
eclipse下进行ndk开发步骤


运行会报错,提示:

eclipse下进行ndk开发步骤eclipse下进行ndk开发步骤

这是因为代码中没有加载动态库.回到GetString类中,添加方法.

eclipse下进行ndk开发步骤eclipse下进行ndk开发步骤


现在运行项目,可以看到界面上已经成功显示了三个native方法返回的值.

eclipse下进行ndk开发步骤

eclipse下进行ndk开发步骤