在上一篇教程中,主要介绍了如何把OSG源代码编译成为能够在Android项目下使用的函数库。在这一篇教程中,我将针对如何在自己的Android项目中配置OSG函数库进行详细讲解。
现阶段网上关于OSGfor Android的配置方式教程有很多,但是大部分在实际使用起来都会或多或少的出现一些问题,无法完全照搬,需要一定的修改。而且,对于配置中的那些变量的具体含义,也很少有人能够进行仔细的讲解。这非常不利于新手的学习和理解,往往会造成出现bug后面对满屏幕的错误log完全一脸茫然的情况。
所以我将在这篇教程中详细介绍系统的介绍如何在Android项目中配置OSG函数库,并对各个配置变量的含义进行详细讲解。
-------------------------------------------------------------------------------------------------
在一个项目中配置函数库,是我们在进行项目开发时几乎都要做的第一件事情。可以说,各种第三方函数库帮助我们完成了很多通用的常用的功能,使我们从繁杂的基本算法、基本功能中脱离出来,能够更专心的完成我们需要实现的业务功能。OSG就是一个非常好的开源三维引擎,提供了一套成熟的API用于实现三维场景功能的开发。
一、工具准备
OSG是基于C++平台的API,在开发时使用的都是标准的C++。众所周知,开发Android项目,我们平常使用的都是Java,那么,如何才能在Java语言中调用OSG的这些C++函数呢?Java中提供了Java本地接口,即JNI(Java Native Interface)。JNI是一个协议,用于沟通Java代码和本地的C/C++代码。而Google公司为Android开发了一套用于快速创建native工程的工具集合,即NDK(Native Development Kit)。在本文中,将使用Eclipese+NDK的方式进行配置开发。网上有许多的经验教程用到了Cygwin。但是,从NDK的r7版本以上就包含了Cygwin,所以本文在配置项目时,并没有单独使用Cygwin。
这里使用的NDK版本是r10d,可以在官方网站上下载,链接为:
http://developer.android.com/tools/sdk/ndk/index.html。
当然,由于一些原因,现在很多情况下是连接不上这个网站的,比如我就是。不过现在很多网盘上有共享的可以下载,大家可以自行搜一下。OSG函数库可以根据我前一篇教程里讲的那样自己进行编译,不过时间花费比较大,当然也可以从网上下载别人已经编译好的OSG函数库,这样省时省力。这里我使用的是3.0.1版本的OSG。需要注意的是,上一篇教程讲过,在编译时根据参数不同,会有两个版本的OSG库,分别是GLES1和GLES2,这两个版本在使用时,配置的参数会有所不同,甚至会对新手来说产生一些莫名其妙的错误。具体的区别,我会详细的说明一下。
二、具体配置
首先,为了在项目中使用C/C++,在项目结构上会有一点不同,需要增加一个jni文件夹,其位置在项目的根目录下,与src等文件夹在同一层。这个文件夹用于存放所有的C/C++文件,以及项目配置文件(.mk后缀)。下面进行详细讲解。
1. 配置文件
在OSG for Android项目中,配置文件有两个,一个是Android.mk,另一个是Application.mk。这两个文件都是存放在jni文件夹内的,用于在编译项目时提供配置信息。