eclipse下进行ndk开发步骤


配置NDK地址:

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


  • 开始搭建:

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


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



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


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. }  
 
 
 
  
  

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

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

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

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

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

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

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

点击Add按钮

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

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

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

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

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

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

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

选择项目里的jni文件夹.

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

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

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

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

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. }  


运行会报错,提示:


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



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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值