这是Android NDK 开发系列篇 之第四篇,重点讲述 在windows 平台下NDK开发环境搭建,以及第一个NDK工程搭建。
一、开发工具准备
1、PC机电脑一台,Windows 7 64位以上操作系统 ;
2、Android SDK开发工具包,eclipse;
3、Android NDK开发工具包;
二、NDK开发环境搭建
1、下载最新版本的Android NDK安装包(下载地址在前面的博客中有说明),解压到指定目录即可。如下图所示解压到D:\ ,我这里使用两个版本的NDK10、11。实际只使用一个就可以
2、搭建Android APP开发环境,也就是 安装Android SDK-java,eclipse集成开发环境,一般读者能看到这篇博客,说明已经能够熟练运用eclipse新建Android APP。
3、到这里 Android NDK开发环境已经搭建好了,其实不需要太多工具。也就是一个NDK开发工具包,一个能够新建Android APP的eclipse集成开发环境。
三、第一个NDK工程
1、首先建立一个Android APP工程,工程,项目名字都可以随便命名,我们这里命名为AndroidHelloJNI,请用eclipse新建Android APP 工程、
2、从刚刚安装好的NDK开发工具目录中找到 samples -> hello-jni 例子。将jni目录拷贝到我们刚刚建好的工程目录下面。
3.关联jni 新建ndk-builder 让ndk-build 自动编译AndroidHelloJNI 工程下面的jni 目录
(a)Project->Properties->Builders->New,新建一个Builder。
(b)在弹出的【Choose configuration type】对话框,选择【Program】,点击【OK】:
(c)在弹出的【Edit Configuration】对话框中,配置选项卡【Main】。
在“Name“中输入新builders的名称(这个名字可以任意取)。
在“Working Diretcoty”中输入TestNdk位置(也可以点击“Browse Workspace”来选取TestNdk目录)
4. 参数配置
4.1 Main
①Name:NDK_Builder
②Location为ndk-build.cmd的路径,可以如图所示绝对路径,也可以以环境变量的形式,即 ${ANDROID_NDK}\ndk-build.cmd,其中ANDROID_NDK为配置的NDK路径
③Working Directory,为当前的工程下。
这里的${}的表达是使用了EC的环境变量,可以使用Variables...按钮找到一些3 EC的环境变量。
对于Linux上的配置,和这里的配置一样,只是把Location的地址改为ndk-build即可(下图中的workspace Directory为工作空间下的工程目录本例中为${workspace_loc:/AndroidHelloJNI})
4.2 Refresh
4.3 Build Options
注:Linux环境下只需修改ndk-build.cmd为ndk-build即可
5、经过以上步骤设置,即完成自动ndk-自动编译JNI目录下面的C/C++程序。 设置project -> clean 即可在lib目录下生成各个不同cpu类型下使用的.so库。如下图所示
6、在上层java应用程序中完成调用使用,
需要两步,单独新建类HelloJni.java 代码如下
package com.example.androidhellojni;
public class HelloJni{
public native String stringFromJNI();
}
再在MainActivity.java 中静态调用类库,即可使用这个JNI接口
package com.example.androidhellojni;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private TextView test;
private HelloJni helloJni;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
helloJni = new HelloJni();
test = (TextView)findViewById(R.id.text);
test.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, helloJni.stringFromJNI(), 3000).show();;
}
});
}
static {
System.loadLibrary("hello-jni");
}
}
7、运行 看到效果如下:
8、欢迎就Android JNI NDK开发问题进行交流
我已经将测试demo 传到git上 请自行下载。
https://github.com/Guofengpu/AndroidHelloJNI