OSG Android版本编译
来源:互联网 发布:千帆网络信息传媒 编辑:程序博客网 时间:2024/05/14 23:54
1、准备工作
1.1、下载安装cygwin
把cygwin 的del(开发)的部分装完,这个过程需要花费2-3个小时,主要是下载时间。
1.2、相关工程版本
OSG: 3.2.1
OSG_Data_Resource: 3.0.0
CMake: 2.8.12.1
cygwin: make -v 3.8.1(cygwin的make工具,3.8.1版本,尝试使用make 4.0.0编译不了)
NDK: android-ndk-r9b
ADT:adt-bundle-windows-x86-20131030
1.3、下载3rd库文件
OSG Android依赖文件下载路径3rdpartyAndroid
1.4、下载Android NDK
Android NDK下载路径 Android NDK
1.5、Android编译过程官方链接
OSG for Android编译准备及设置 OSG Android配置编译
2、CMake配置
先定位到build目录下,再执行一下命令
编译GLES1版本,输入如下:
cmake .. -DOSG_BUILD_PLATFORM_ANDROID=ON -DDYNAMIC_OPENTHREADS=OFF-DDYNAMIC_OPENSCENEGRAPH=OFF -DOSG_GL_DISPLAYLISTS_AVAILABLE=OFF-DOSG_GL_MATRICES_AVAILABLE=ON -DOSG_GL_VERTEX_FUNCS_AVAILABLE=ON-DOSG_GL_VERTEX_ARRAY_FUNCS_AVAILABLE=ON -DOSG_GL_FIXED_FUNCTION_AVAILABLE=ON-DOSG_CPP_EXCEPTIONS_AVAILABLE=OFF -DOSG_GL1_AVAILABLE=OFF -DOSG_GL2_AVAILABLE=OFF-DOSG_GL3_AVAILABLE=OFF -DOSG_GLES1_AVAILABLE=ON -DOSG_GLES2_AVAILABLE=OFF
编译GLES2版本,输入如下:
cmake .. -DOSG_BUILD_PLATFORM_ANDROID=ON -DDYNAMIC_OPENTHREADS=OFF -DDYNAMIC_OPENSCENEGRAPH=OFF -DOSG_GL_DISPLAYLISTS_AVAILABLE=OFF -DOSG_GL_MATRICES_AVAILABLE=OFF -DOSG_GL_VERTEX_FUNCS_AVAILABLE=OFF -DOSG_GL_VERTEX_ARRAY_FUNCS_AVAILABLE=OFF -DOSG_GL_FIXED_FUNCTION_AVAILABLE=OFF -DOSG_CPP_EXCEPTIONS_AVAILABLE=OFF -DOSG_GL1_AVAILABLE=OFF -DOSG_GL2_AVAILABLE=OFF -DOSG_GL3_AVAILABLE=OFF -DOSG_GLES1_AVAILABLE=OFF -DOSG_GLES2_AVAILABLE=ON -DJ=4
除了上面的参数外,还需要加上以下参数
-DANDROID_NDK={Path to your NDK root directory}
-DANDROID_ABI="armeabi armeabi-v7a" (此处说明要编译armeabi、armeabi-v7a两个版本)
-DANDROID_DEBUG=1
-DANDROID_OPTIM_ARM32=1
3、生成Android工程文件
建议:在OpenSceneGraph3.2.1目录下,生成buildes1、buildes2两个路径,分别用于存放GLES1、GLES2两种工程配置。
3.1、Cygwin环境下生成
Cygwin中已经包含cmake命令
直接在osg的build路径中,输入以上cmake内容,即可生成工程文件。
在环境变量Path中,添加CMake路径,启动Windows cmd,有CMake提示即可。
在命令行中,输入CMake设置选项
4、编译Android
4.1、Cygwin环境下生成
先设置cygwin的环境变量:cygwin/home/${Computer Name}目录下的.bash_profile、.bashrc
a、.bash_profile 设置NDK路径:NDK=/cygdrive/d/Android/android-ndk-r9b export NDK
b、.bashrc 导出ndk-build命令:NDK_HOME=/cygdrive/d/Android/android-ndk-r9b export PATH=$PATH:$NDK_HOME
cd 到OSG的Android_build目录下,执行ndk-build.cmd NDK_APPLICATION_MK=application.mk,但是编译过程总是不流畅,不建议使用cygwin.
4.2、Windows命令行下生成
在环境变量中配置Android NDK全局值,启动windows cmd,输入ndk-build.cmd,有Android NDK找不到路径的报错,说明配置成功。
cmd 到OSG的Android_build目录下,执行ndk-build.cmd NDK_APPLICATION_MK=application.mk
生成的.a文件在Android_build-->obj-->local-->armeabi 、armeabi-v7a目录下
5、运行、查看Demo
5.1 eclipse导入工程
使用adt-bundle-windows-x86-20131030 文件夹中的eclipse工程,打开、导入工程examples/osgAndroidExamplesGLES1或2(具体根据cmake中指定的gles版本),编译即可。联手机安装.apk文件,应用程序安装成功,但是只看到Light(ON/OFF)、Center View、Change Navigation,使用过程容易崩溃。
5.2 osgAndroidExamplesGLES1编译配置:
osgAndroidExampleGLES1的jni/Application.mk、Android.mk配置,osgAndroidExampleGLES2配置参照此配置:
5.2.1 Application.mk配置
#ANDROID APPLICATION MAKEFILEAPP_BUILD_SCRIPT := $(call my-dir)/Android.mk#APP_PROJECT_PATH := $(call my-dir)APP_OPTIM := releaseAPP_PLATFORM := android-8APP_STL := gnustl_staticAPP_CPPFLAGS := -fexceptions -frttiAPP_ABI := armeabi armeabi-v7aAPP_MODULES := osgNativeLib
5.2.2 Android.mk配置
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := osgNativeLib### Main Install dirOSG_ANDROID_DIR:= E:/Workspace/Coding/OSG/OpenSceneGraph-3.2.1-android/examples/osgAndroidExampleGLES1 #(配置.so生成路径)LIBDIR := E:/Workspaces/Coding/OSG/OpenSceneGraph-3.2.1-android/buildes1/obj/local/armeabi # (配置osg .lib链接路径)LIB_STD_DIR := D:/Android/android-ndk-r9b/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi # (配置系统库链接路径)ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)LOCAL_ARM_NEON := trueLIBDIR := E:/Workspaces/Coding/OSG/OpenSceneGraph-3.2.1-android/buildes1/obj/local/armeabi-v7a #(配置osg .lib链接路径)LIB_STD_DIR := D:/Android/android-ndk-r9b/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a #(配置系统库链接路径)endif### Add all source file names to be included in lib separated by a whitespaceLOCAL_C_INCLUDES:= $(OSG_ANDROID_DIR)/includeLOCAL_CFLAGS := -Werror -fno-short-enumsLOCAL_CPPFLAGS := -DOSG_LIBRARY_STATIC LOCAL_LDLIBS := -llog -lGLESv1_CM -ldl -lz -lgnustl_static #(配置系统库)LOCAL_SRC_FILES := osgNativeLib.cpp OsgMainApp.cpp OsgAndroidNotifyHandler.cppLOCAL_LDFLAGS := -I $(LOCAL_C_INCLUDES) \ #(添加头文件路径)-L $(LIBDIR) \ #(添加库文件路径)-L $(LIB_STD_DIR) \ #(添加系统库文件路径)-losgdb_dds \-losgdb_openflight \......(以下不变)
6、apk运行情况
6.1、三星I9100G + Android 2.3.5 (ADT Android2.3.3)
apk成功安装,app启动后,无法显示菜单栏的按键。而且点击View随机异常退出。
6.2、三星GT-N8000 + Android 4.1.2 (ADT Android 4.1)
apk安装成功,app启动后,点击菜单可以显示按键按钮。输入资源路径,正常加载模型,但是模型贴图加载异常。
- OSG Android版本编译
- 编译Android版本的OSG库
- OSG Windows版本编译
- osg for Android编译
- osg for android (三) Windows 下编译
- OSG编译
- osg for android学习之二:编译运行osgAndroidExampleGLES1/2
- NDK编译的osg在Android平台上的几个问题
- osg for android 编译(Windows)完整图文教程
- android版本编译问题
- 编译FFMPEG Android版本
- 编译android版本pjsip
- 编译android版本pjsip
- Android版本-编译VLC
- 编译Chromium Android版本
- Android版本-编译VLC
- Android编译Release版本
- 编译android版本openssl
- Xcode5删除多余证书的方法
- [Linux]Vim的NERDTree快捷键
- html样式不兼容 详解
- php读写操作hbase数据库的基本方法
- 好记性不如烂笔头-总结一下手动打jar包
- OSG Android版本编译
- JS禁用右键,禁用打印,防止另存为
- chenpi
- linux i2c驱动
- 高并发大数据量的数据库的设计与优化
- 递归转非递归学习二:求斐波那契数列F(N)的值
- 转储buffer cache
- mysql+keepalived 主主高可用集群配置
- Java 单例模式的七种写法