概述
Android系统的底层库由c/c++编写,上层Android应用程序通过Java虚拟机调用底层接口,衔接底层c/c++库与Java应用程序间的接口正是JNI(Java Native Interface)。本文将描述如何在Ubuntu下配置Android JNI的开发环境,以及如何编写一个简单的c函数库和JNI接口,并通过编写Java程序调用这些接口,最终运行在模拟器上的过程。
环境配置
1. 安装jdk 1.6
(1) 从jdk官方网站http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u29-download-513648.html
下载jdk-6u29-linux-i586.bin文件。
(2) 执行jdk安装文件
$ chmod a+x jdk-6u29-linux-i586.bin
$ jdk-6u29-linux-i586.bin
(3) 配置jdk环境变量
$ sudo vim /etc/profile
#JAVA EVIRENMENT
export JAVA_HOME=/usr/lib/java/jdk1.6.0_29
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
保存后退出编辑,并重启系统。
(4) 验证安装
$ java -version
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
Java HotSpot(TM) Server VM (build 20.4-b02, mixed mode)
$ javah
用法:javah [选项] <类>
其中[选项] 包括:
-help 输出此帮助消息并退出
-classpath <路径> 用于装入类的路径
-bootclasspath <路径> 用于装入引导类的路径
-d <目录> 输出目录
-o <文件> 输出文件(只能使用-d 或-o 中的一个)
-jni 生成JNI样式的头文件(默认)
-version 输出版本信息
-verbose 启用详细输出
-force 始终写入输出文件
使用全限定名称指定<类>(例如,java.lang.Object)。
2. 安装Android开发环境
ubuntu下安装android应用程序开发环境与windows类似, 依次安装好以下软件即可:
(1) Eclipse
(2) AVD
(3) Android SDK
与windows下安装唯一不同的一点是,下载这些软件的时候要下载Linux版本的安装包。
安装好以上android应用程序的开发环境后,还可以选择是否需要配置emulator和adb工具的环境变量,以方便在进行JNI开发的时候使用。
配置步骤如下:
把emulator所在目录android-sdk-linux/tools以及adb所在目录android-sdk-linux/platform-tools添加到环境变量中,android-sdk-linux指android sdk安装包android-sdk_rxx-linux的解压目录。
$ s