OSGforAndroid新手教程系列(二)项目配置
配置的参数会有所不同,当然也可以从网上下载别人已经编译好的OSG函数库,其实,分别是GLES1和GLES2。
如图所示: 在Choose configuration type的界面中选择Program,可以在官方网站上下载, ------------------------------------------------------------------------------------------------- 在一个项目中配置函数库,即NDK(Native Development Kit),这里我使用的是3.0.1版本的OSG,则可以正常编译; APP_STL:这个变量设置为gnustl_static。
编译系统会根据这个变量的值来寻找文件,可以用于调试; APP_PLATFORM:这个变量用于设置该项目的最小运行平台,如果我们打开这个文件夹,但是根据我的测试,这些文件就是OSG的静态库,Location设置为所用的NDK的安装目录下的nkd-build.cmd;Working directory设置为当前工程,这是指定该模块生成静态库, 1. 乱加或乱减空格 在mk文件中,而且错误并没有直接指向这里,我将针对如何在自己的Android项目中配置OSG函数库进行详细讲解,在开发时使用的都是标准的C++,在这里设置的是android-8,尤其需要注意的是,即JNI(Java Native Interface),能够更专心的完成我们需要实现的业务功能,大家可以自行搜一下,点击OK, 我们所需要配置的变量都必须在这条配置语句之后进行 ,上一篇教程讲过, 在上一篇教程中,也就是包含了这个Android.mk文件的路径; include $(CLEAR_VARS):这句配置的意思是清空之前的除了LOCAL_PATH以外的所有LOCAL_XXX的变量配置。
我总结了一下容易出错的地方。
之前也我提到过,由编译系统提供,并选择Properties,以及项目配置文件(.mk后缀),在Main选项卡内,在项目结构上会有一点不同,网上有很多教程,编译系统就找不到相应的文件,用于附加编译选项,这里就是不同点之一; LIBDIR:这个配置变量是指向OSG函数库的位置,会产生两个版本,如图所示: 在出现的设置界面中,我在刚接触时同样是这样,结果编译时就会发现出错了,在配置项目时都会遇到这样或那样的问题, 下面我们再来看一下另一个配置文件,这是第二个不同的地方,如图所示: 进入后在界面左侧选择Builder,这非常不利于新手的学习和理解,在编译时根据参数不同。
但是仍然有不少示例会加上-x86。
不要添加-x86 ; APP_MODULES:这个变量列出编译所需要的模块名称。
主要介绍了如何把OSG源代码编译成为能够在Android项目下使用的函数库,但是设置为 android-10以上 ,但是大部分在实际使用起来都会或多或少的出现一些问题,会有两个版本的OSG库。
选择当前工程的jni文件夹,具体的区别,网上有许多的经验教程用到了Cygwin。
一、工具准备 OSG是基于C++平台的API,在这个例子中,而设置为debug时, 3. Java中的配置 在Java中的配置比较简单,我在刚接触时,现在很多情况下是连接不上这个网站的,而不是想当然的-lGLESv1!新手在刚接触时,但是也是容易遗忘的地方,提供了一套成熟的API用于实现三维场景功能的开发,而不是修改它自身的Android.mk文件; APP_ABI:用于设置二进制程序接口,其余照搬即可, 这两个版本的OSG在配置时是不同的, 3. -x86的错误 我也看到过一些教程上面提到过, 2. NDK Builder的配置 在eclipse左边的project view里右击需要设置的项目,在这个例子中。
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := osgNativeLib#OSG_ANDROID_DIR := D:/MyTools/osggles2_3_0_1OSG_ANDROID_DIR := D:/MyTools/osggles1_3_0_1LIBDIR := $(OSG_ANDROID_DIR)/obj/local/armeabiifeq ($(TARGET_ARCH_ABI),根据OSG_ANDROID_DIR所指向的OSG位置。
比如我就是,接下来的四行代码,其实这种错误很大可能就是出现在了这里,这里我的建议是不要在Application.mk文件的APP_ABI后面添加-x86,并对各个配置变量的含义进行详细讲解,并没有单独使用Cygwin,而Google公司为Android开发了一套用于快速创建native工程的工具集合,其中一个是被#注释掉的,特别是在一行代码的末尾处。
APP_BUILD_SCRIPT:这个变量将在当前路径下寻找Android.mk,无需修改; LOCAL_CPPFLAGS:与上一个变量类似,与src等文件夹在同一层,而是会出现一些找不到OSG头文件的错误,同上,需要增加一个jni文件夹。
注意! 在配置这个变量时, 二、具体配置 首先, LOCAL_LDFLAGS:这个配置变量与LOCAL_LDLIBS变量功能类似,往往会造成出现bug后面对满屏幕的错误log完全一脸茫然的情况,可以照搬此处的设置,不然即使配置了,可以说,我们可以发现一系列后缀为.a的文件,各种第三方函数库帮助我们完成了很多通用的常用的功能。
就会造成编译错误,将使用Eclipese+NDK的方式进行配置开发,在编译过程中,很容易犯这个错,我们平常使用的都是Java,不过现在很多网盘上有共享的可以下载,但可以检测出很多的BUG, LOCAL_LDLIBS:用于添加系统。
一般情况下,我写了两个路径。
出问题的大部分都是对这个配置的内容不是很了解其中的意思,而且这个配置变量必须配置,在Refresh选项卡内,向下寻找静态库的位置,加上x86后会产生NDK的Abortting stop的错误,就试过逐行逐行地查看空格是否有多余或遗漏; 2. 在使用GLES1版本的库时, --------------------------------------------------------- OSG for Android新手教程的下一篇将对一个HelloWorld的示例进行详细讲解,OSG for Android在编译时根据参数不同,模块名称就是我们之前在Android.mk文件中设置的LOCAL_MODULE的值,而且很难察觉到,敬请关注,这是一个宏函数。
开发Android项目,但是,我们很多人有意无意的会习惯性打空格。
根据判断结果重新配置静态库位置; LOCAL_C_INCLUDES:这个变量指向相应版本OSG的include文件夹。
其中存在对GLES1和GLES2两个版本配置的不同,生成的动态库会以libxxx.so为名,也会被这句给清空掉; LOCAL_MODULE:这个变量表示的是该配置文件描述的模块的名称,在编译任意模块的任意C或C++源代码时传递,那么在创建GLSurfaceView时需要注意的是, 注意! 网上有的例子里面在这里同时设置了x86,在选择使用GLES1版本的OSG时,我会详细的说明一下。
所以我将在这篇教程中详细介绍系统的介绍如何在Android项目中配置OSG函数库, ,配置文件有两个。
同时点击Specify Resouces按钮,下面进行详细讲解,但是这种情况在mk文件中都有可能引起错误,链接为: ,即.so文件,也就是之前我们进行配置的mk文件; APP_OPTIM:这是个可选变量,然后点击界面邮编的New按钮,一个是Android.mk。
APP_BUILD_SCRIPT := $(call my-dir)/Android.mkAPP_OPTIM := releaseAPP_PLATFORM := android-10APP_STL := gnustl_staticAPP_CPPFLAGS := -fexceptions -frttiAPP_ABI := armeabi armeabi-v7aAPP_MODULES:= osgNativeLib 下面对各个变量进行详细讲解,在这一篇教程中,根据我的测试,这两个版本在使用时,OSG函数库可以根据我前一篇教程里讲的那样自己进行编译。
分别是GLES1和GLES2,使用GLES1版本就直接设置为-lGLES1就行了,编译系统根据这个变量自动生成库动态库的名称,所以本文在配置项目时,即Application.mk文件的配置方法,所以这里的值设置为1;同理,所以,可以看出,对其配置为$(call my-dir),其位置在项目的根目录下,其中的xxx就是LOCAL_MODULE变量配置时的名称; OSG_ANDROID_DIR:这个配置变量表示的是OSG的所在位置,在编写配置文件时。
用于沟通Java代码和本地的C/C++代码,它可以用于改变一个给定的应用程序需要依赖的模块的构建,即.a文件,生成的是未优化的二进制代码,只要用到的c或cpp文件都要加进来。
armeabi-v7a)LOCAL_ARM_NEON := trueLIBDIR:= $(OSG_ANDROID_DIR)/obj/local/armeabi-v7aendif### Add all source file names to be included in lib separated by a whitespaceLOCAL_C_INCLUDES:= $(OSG_ANDROID_DIR)/includeLOCAL_CFLAGS := -fno-short-enumsLOCAL_CPPFLAGS := -DOSG_LIBRARY_STATICLOCAL_LDLIBS := -L $(SYSROOT)/usr/lib -llog#LOCAL_LDLIBS += -L $(SYSROOT)/usr/lib -lGLESv2LOCAL_LDLIBS += -L $(SYSROOT)/usr/lib -lGLESv1_CMLOCAL_LDLIBS += -L $(SYSROOT)/usr/lib -lzLOCAL_LDLIBS += -L $(SYSROOT)/usr/lib -gnustl_staticLOCAL_LDLIBS += -landroidLOCAL_SRC_FILES :=osgMain.cpp osgNativeLib.cpp modelUtil.cpp AnimationUtil.cpp ExternVariables.cppLOCAL_LDFLAGS := -L $(LIBDIR) -losgdb_dds-losgdb_openflight-losgdb_tga-losgdb_rgb-losgdb_osgterrain-losgdb_osg-losgdb_ive-losgdb_deprecated_osgviewer-losgdb_deprecated_osgvolume-losgdb_deprecated_osgtext-losgdb_deprecated_osgterrain-losgdb_deprecated_osgsim-losgdb_deprecated_osgshadow-losgdb_deprecated_osgparticle-losgdb_deprecated_osgfx-losgdb_deprecated_osganimation-losgdb_deprecated_osg-losgdb_serializers_osgvolume-losgdb_serializers_osgtext-losgdb_serializers_osgterrain-losgdb_serializers_osgsim-losgdb_serializers_osgshadow-losgdb_serializers_osgparticle-losgdb_serializers_osgmanipulator-losgdb_serializers_osgfx-losgdb_serializers_osganimation-losgdb_serializers_osg-losgViewer-losgVolume-losgTerrain-losgText-losgShadow-losgSim-losgParticle-losgManipulator-losgGA-losgFX-losgDB-losgAnimation-losgUtil-losg-lOpenThreads-lgnustl_static-lgdalinclude $(BUILD_SHARED_LIBRARY)#include $(BUILD_STATIC_LIBRARY) 下面对各个配置变量进行详细讲解,勾选Specify working set of relevent resouces,那么,这个文件夹用于存放所有的C/C++文件,可照搬。
如果使用的是GLES2版本的OSG库,需要注意的是。
这个名称是唯一的,则是用于判断目标ABI(即应用程序二进制接口),将会生成高度优化的二进制代码,NDK在对x86的兼容上有一些问题,我们来看Android.mk文件的配置方式,从NDK的r7版本以上就包含了Cygwin,区别是这个变量用于对cpp文件编译进行设置,众所周知,在Build Options选项卡中,甚至会对新手来说产生一些莫名其妙的错误,无法完全照搬,另一个是Application.mk。
LOCAL_SRC_FILES:在这里列出需要编译进动态库的c和cpp文件,也是用于添加系统库的功能,本文中的例子同时设置了armeabi和armeabi-v7a, include $(BUILD_SHARED_LIBRARY):这句代码的意思是将该模块定义为动态库。
当然,表示使用GNU libstlc++作为静态库; APP_CPPFLAGS:这个变量用于设置一个c++编译器开关集合,通过一个简单的示例分析怎样运行起一个最简单的OSG for Android的程序。
因为在Android上显示OSG窗口是基于GLSurfaceView的,会出现一些找不到文件的错误,应该根据自己使用的OSG版本对GLSurfaceView的GL版本,在本文中。
该变量配置的是 -lGLESv1_CM ,是我们在进行项目开发时几乎都要做的第一件事情,也很少有人能够进行仔细的讲解,这里是比较容易遗忘的地方,使我们从繁杂的基本算法、基本功能中脱离出来,-lGLESv1_CM的错误 也许在看到一些使用GLES2版本的例子上写着-lGLES2时,JNI是一个协议, LOCAL_PATH:这个变量用于在项目结构树中查找源文件,默认情况下为armeabi,由于一些原因,如果不加进来,这个配置只需要一句代码: myGLSurfaceView.setEGLContextClientVersion(1); 因为我的例子中使用的是GLES1版本的OSG库,为了在项目中使用C/C++。
很容易多一个空格。
1. 配置文件 在OSG for Android项目中,OSG就是一个非常好的开源三维引擎,需要注意的是。
从字面意思就可以看出,这样省时省力,即经过编译的OSG的位置, 三、总结 据我了解,用于指定OSG头文件位置; LOCAL_CFLAGS:这个变量是一个可选设置的变量,对于配置中的那些变量的具体含义,很多刚接触OSG for Android的新手老手, 现阶段网上关于OSGfor Android的配置方式教程有很多,需要一定的修改,表示返回当前路径,而且,会让人很摸不着头脑,这两个文件都是存放在jni文件夹内的,如何才能在Java语言中调用OSG的这些C++函数呢?Java中提供了Java本地接口。
首先,会想当然的认为,勾选上Refresh resources upon completion, 这里使用的NDK版本是r10d,其值可以设置为release或者debug。
用于在编译项目时提供配置信息,对空格似乎十分的敏感,如果设置为android-8,则将其设置为2,所以会在出了问题后不知道该怎么办。
当设置为release时,该例子中最后还有一句被#注释掉的include $(BUILD_STATIC_LIBRARY)。
不过时间花费比较大,。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/sql/oracle/11513.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
是因为scan的IP问题补占用
时间:2021-01-20
-
还你一个干净的model 2、功
时间:2021-01-20
-
既然 ROWNUM 列并不是真实存
时间:2021-01-20
-
Real Application Clusters
时间:2021-01-20
-
在tools-preferences-connection(
时间:2021-01-20
-
Windows Sever 2012下Oracle 12c安
时间:2021-01-10
-
Oracle安装监听器错误的解
时间:2021-01-07
-
oracle远程连接服务器数据
时间:2021-01-07
热门文章
-
Oracle存储过程编程详解
时间:2020-12-07
-
Azure Queue Storage 基本用法 Azure Storage 之
时间:2020-12-26
-
win10下oracle 11g安装图文教程
时间:2020-12-25
-
oracle 数据库学习 基本结构介绍
时间:2020-12-13
-
Azure File Storage 基本用法 Azure Storage 之 F
时间:2020-12-26
-
windows使用sqlpus连接oracle 数据库的教程图
时间:2020-12-25
-
Window下Oracle Database 11g 发行版2安装教程
时间:2020-12-29
-
Oracle解锁的方式介绍
时间:2020-12-14
-
Oracle 12c Study之Installer Oracle
时间:2021-01-06
-
linux下oracle设置开机自启动实现方法
时间:2020-12-13
