Android JNI开发入门之一
2010-12-18 08:04:01 来源:WEB开发网JNI在Android系统中有着广泛的应用。Android系统底层都是C/C++实现的,上层提供的API都是Java的,Java通过 JNI调用底层的实现。比如:Android API多媒体接口MediaPlayer类,其实底层通过JNI调用libmedia库。由于JNI的存在可以让我们重用很多已经存在C/C++的库,省 去了重复开发的麻烦,并且可以利用很多开源的库(Android库中就有很多开源库,比如libjpeg,libpng等等),并且让我们开发的程序更有 效率(C/C++代码发挥硬件最佳性能)。如果你对标准JNI不熟悉的话,可以先参考我的博文《Linux下JNI实现》,文中介绍了怎样用标准JNI在 Linux系统中实现一个Helloworld程序,可以让你对JNI有一个初步的认识。本文简单介绍一下怎样在Android下面怎样用JNI开发程 序,并开发一个经典Helloworld应用程序。
交叉编译环境
首先是要搭建交叉编译环境,因为Java层的应用程序是和硬件无关的,JDK编译即可;但是Native C/C++代码是和硬件相关的,必须要用交叉编译器编译成特定硬件可执行代码。请根据你的硬件平台搭建你的交叉编译环境,我的MIPS平台,当然选择的是 MIPS的交叉编译器,如果你是Arm的请配置自己的交叉编译器。
我们首先编译一个Native C的helloworld程序,一个学习怎样在Android中增加一个程序,另外也可以验证我们的交叉编译环境是否正确,可以参考《Android编译 环境(1) ? 编译Native C的helloworld模块》。如果这个步没有问题说明你的交叉编译环境是没有问题的,可以继续往下面进行。
Java编写的Android应用程序
我们首先用java编写helloworld应用程序(APK),这个代码很简单创建一个HelloWorld activity。代码如下:
package com.simon;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class HelloWorld extends Activity {
private static final String TAG = "HelloWorld";
static {
System.loadLibrary("helloworld");
}
private native String printJNI();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
赞助商链接