OSG For Android的环境搭建(NDK不使用Cygwin)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/l491453302/article/details/25006045

首先是十分感激胥师兄的指导,我才能成功完成OSG For Android的配置。当然他的博客绝对是OSG For Android的真经,我想搞OSG For Android的人没有不首先拜读的吧。

附上他的博客地址:http://blog.csdn.net/xuhaiyan8825/article/details/7847313


这里我就不说编译的事情了,因为我水平有限,自己也没亲自编译过。我只说说环境搭建的事吧。


关于Android的开发环境的搭建的博客可谓是一搜一大把,但是其实我们会发现,多少都是有一定历史的了,里面的内容写的android的搭建方式大致都是如下的步骤

  • 1.1、JDK安装
  • 1.2、Eclipse安装
  • 1.3、Android SDK安装
  • 1.4、ADT安装
  • 1.5、创建AVD

搞得好像很复杂的样子,事实上的确是很复杂的不过这些也都是正确的。大约在两年前我也试着学习android的开发,那时候搭建这样一个环境就已经要折腾好久了,一方面下载来下载去的,东西多;再者不得不吐槽学校的网速烂的不能忍受,下载ADT时老是不成功,断线(当然现在也是一样)。不过幸运的是现在Googole公司对Android开发环境的搭建已经做了很大的完善,你几乎不需要做太多的东西就可以开始基本的开发。下面我就进入正题说说我的环境搭建吧。


第一、下载JDK,一样的,java的开发嘛,自然应该首先从JDK的下载开始。你可以在http://www.oracle.com/technetwork/java/index.html这里下载到你需要的最新的jdk。下载后建议使用的所有的目录的名字不要带上中文和空格。下载后配置相应的环境吧。虽然按道理来说android的开发是不需要配置的,但是为了以后的其他开发着想,还是配下吧。

  1. 我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量:
  2. JAVA_HOME值为: D:\Program Files\Java\jdk1.6.0_18(你安装JDK的目录
  3. CLASSPATH值为:.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\bin;
  4. Path:  在开始追加 %JAVA_HOME%\bin;
安装完成之后,可以在检查JDK是否安装成功。打开cmd窗口,输入java –version 查看JDK的版本信息。出现类似下面的画面表示安装成功了


第二、下载ADT Bundle。在这里下载http://developer.android.com/sdk/index.html。这东西里面用官网上的说法是:With a single download, the ADT Bundleincludes everything you need to begin developing apps。就是我刚才说的基本的开发就可以进行了。里面一般包含了eclipse(ADT和各个插件)、android的最新的的SDK并初始化了一个模拟器。这个eclipse可是集成了各个插件的(This product includes Eclipse Platform, JDT, CDT, EMF, GEF and WTP)这也节省了后面CDT插件的安装。

那么完成上面的两个下载后,就可以打开ADT Bundle中的eclipse进行android的开发了,不过正如前面说的,开发的平台因为只有最新的android版本的SDK,最好还是在SDK Manager中下载你想要的开发平台。一般而言android向下兼容,下载一个比较合适的低版本还是比较有用的,比如因为OSG目前支持的最低版本是2.2,你可以下载一个2.2平台。


前面是基础的android开发环境的搭建。我们面向的是android的OSG 开发,就是在java和C++间的编程,关于两个的科学关系我就说不清楚了,不过这里是需要安装一个NDK的。NDK全称:Native Development Kit,它集成了交叉编译环境,并能够自动地将so和Java应用一起打包生成apk。这里的交叉编译环境的集成应该就是为什么不用再安装Cygwin来模拟UNIX环境编译的原因吧。

第三、下载NDK。那么NDK在http://developer.android.com/tools/sdk/ndk/index.html是可以下载到的。

下载后,就是一系列的环境的配置了。我也看了好多关于NDK环境配置的博客,最后发现了这个极好清晰的博客。博客地址:http://cherishlc.iteye.com/blog/1756762。感谢他的耐心分享。他的博客就可以指导你一步一步的完成NDK的配置和测试了。

下面就进行osg在android上的使用了。首先你可以结合老胥师兄的这个博客(http://blog.csdn.net/xuhaiyan8825/article/details/7860256)。他的中文部分写的是冠以osg 被编译为gles 2.0的配置(英文部分写的是gles1.x的版本)。我下面就以gles1.x来说吧。


首先也是通过eclipse的File-->New-->Project--Android-->Android project from exsit code,然后选择你的osg源码下的excamples下的osgAndroidExampleGLES1,如下图。

将例子导入到eclipse中后,你需要注意一个问题,这里会自动生成一个Adroid Dependencise的jar包,这个东西会导致Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.的错误。所以需要删除,删除方法如下。

在JNI文件夹下有几个基本的文件,我们需要在Android.mk文件中修改配置信息。如老胥师兄的博客所言,需要修改OSG_ANDROID_DIR所指向的位置,指向你编译好的osggles1.x的目录位置。我写的是E:/AndApp/osggles1(注意这里采用的目录路径的方式 /);其次修改LOCAL_LDLIBS 的值为-llog -lGLESv1_CM -ldl -lz -lgnustl_static,并修改Application.mk中的platform为8吧,这个其实要和你的AndroidMenifes.xml文件中的target platform相关。然后这里就因为搭建的环境没有依赖cygwin,所以下面稍微和胥师兄的不一样了。

点击你的项目,右击选择 Android tools--.>add native support,如下图:

然后项目就能识别C++的东西了。当然这里的前提是你按照前面说的那个博客的方式把NDK的配置正确了。

按道理来说目前的情况就可以运行了,但是偏偏这时不知道是为什么,osg的例子中的源码可能是比较旧的语法,你会遇到大约三个错误,它们在osgNativeLib.cpp中,都是关于GetStringUTFChars()函数的,没关系,我们把原代码中的这个函数的参数由false改为NULL就好了。


如果你足够耐心地看完了并实践完了上面的所有步骤,那么我很高兴的告诉你,你可以成功通过你的手机进行调试了。效果如下:

注意:里面的立方体是我自己添加代码绘制的,原始例子没有绘制任何东西。

至于es2.0的那就和老胥师兄的配置修改一样,环境的运行就和本文前面的一样就可以了。微笑









猜你喜欢

转载自blog.csdn.net/l491453302/article/details/25006045