Android JNI MAC OS环境配置

Android JNI MAC OS环境配置

http://whbzju.github.io/blog/2013/06/01/android-jni-config/ html

JUN 1ST, 2013 | COMMENTS java

前言—JNI技术简介

JNI是Java Native Interface的缩写,即“Java本地调用”,它是Java世界和Native世界的中介桥梁。其中Native世界通常指C/C++的世界。众所周知,Java是一种跨平台的语言,即Java编写的应用与平台无关。可是,计算机的世界在Java出现以前已经发展了好久,有不少优秀健壮的代码能够复用。好比Linux下的好多驱动模块、文件系统等。Java若去从新实现这些功能,未免费力不讨好,落下重复造轮子的名声。经过JNI技术,使用这些Native的模块,便成了一个折中的办法。同时,Java的世界依靠虚拟机构建,而虚拟机是native语言实现,而且虚拟机运行在具体的平台上,因此虚拟机自己是没法作到平台无关。经过JNI技术,可能作到在Java层的平台无关,即在Java层,底层的细节彻底被屏蔽掉了。综合来说,JNI技术一直支撑这Java世界,只不过咱们平时接触的较少。 linux

在Android的世界里,不容许纯C/C++的程序出现,可是它支持JNI,经过JNI来实现java和C/C++的交互。所以,JNI对于须要接触到Android源码、底层驱动、图形图像等领域的开发者来说异常重要。 android

在Android中,Native语言实现的代码最终要编译成*.so动态库的方式,供java层调用,目前有两种途径实现。 git

两种编译环境

  • 源码编译环境:Android平台提供基于Make的编译环境,为App正确的编写Android.mk便可使用该编译环境,该环境须要经过git从Android的官方的源码平台获取源码并编译,获得环境。具体见:http://source.android.com/index.html
  • 基于Android NDK的编译环境:NDK的全称叫作Native Development Kit。是google提供给咱们用于本地编译JNI的工具。事实上,NDK和源码编译环境同样,都是使用Android的编译系统,经过Android.mk来控制编译。本文重点介绍这种方式。

NDK编译环境

在Mac下,配置NDK的环境十分简便,你只须要去官网下载ndk包,前提是你已经安装好ndk须要的工具,通常你若是安装过xcode,基本的环境都会有。解压缩到任意一个目录下,把该目录加到你的PATH中便可。好比个人: github

在~/.bash_profile中把路径加入PATH,若是没有,能够建立一个.bash_profile,在最后加入下面语句。 xcode

1
export PATH=$PATH:/Users/youpath/android-ndk-r8e

重启bash,便可使用ndk-build bash

1 2
HaibotekiMacBook-Air:jni haibowu$ source ~/.bash_profile 
HaibotekiMacBook-Air:jni haibowu$ ndk-build 

运行Hello-jni

ndk包解压缩以后,自带一些jni的例子,下面咱们就来编译运行下hello-jni,感受下jni的世界。该demo的路径在ndk安装路径的sample目录下。进入该路径,执行下列命令: app

1 2 3 4 5 6
HaibotekiMacBook-Air:jni haibowu$ ndk-build Gdbserver : 
[arm-linux-androideabi-4.6] libs/armeabi/gdbserver Gdbsetup : 
libs/armeabi/gdb.setup Compile thumb : 
hello-jni <= hello-jni.c SharedLibrary : 
libhello-jni.so Install : 
libhello-jni.so => libs/armeabi/libhello-jni.so

当系统提示生成*.so文件时,即表明编译成功。能够经过eclipse或者intellij idea导入该工程,运行查看效果。 eclipse

其余

后续

接下来,我会写一篇介绍Jni的blog,但愿能写的浅显易懂。

Posted by 阿波 Jun 1st, 2013  JNI

http://whbzju.github.io/blog/2013/06/01/android-jni-config/

相关文章
相关标签/搜索