多语言展示
当前在线:414今日阅读:155今日分享:35

在Windows XP下交叉编译android版osg

在Windows xp以上版本利用msys/MinGw等工具交叉编译Android平台使用的Osg(OpenSceneGraph)
工具/原料
1

Windows XP SP3

2

Java Jdk6以上

3

Android Sdk: (adt-bundle-windows-x86-20131030)

4

Android Ndk: (android-ndk-r10)

5

CMake 2.8以上

6

msys/MinGw: (tdm-gcc-4.8.1-3.exe)

7

osg: (OpenSceneGraph-3.2.1.zip,3rdpartyAndroid.zip)

方法/步骤
1

安装Java Jdk安装jdk之后配置jdk环境变量:右击 “我的电脑”->属性->高级->环境变量->系统变量->Path->编辑,将C:\Program Files\Java\jdk1.7.0_67\bin添加到最后

2

安装并配置Android SDK在D:根目录下面新建文件夹并改名“Android”将adt-bundle-windows-x86-20131030.zip解压到“D:\Android”配置Android sdk环境变量:右击 “我的电脑”->属性->高级->环境变量->系统变量->新建,ANDROID_SDK_HOME=D:\Android\adt-bundle-windows-x86-20131030\sdk

4

安装并配置CMake

5

安装并配置msys/MinGw:将msys.7z(http://pan.baidu.com/s/1c08IkqW)解压到D:\GreenSoft打开文件D:\GreenSoft\msys\etc\fstab添加D:\GreenSoft\MinGw\   /mingw

6

编译Android平台使用的Osg一、解压OpenSceneGraph-3.2.1.zip到D:\Android二、解压3rdpartyAndroid.zip到D:\Android\OpenSceneGraph-3.2.1三、利用CMake配置编译选项编译选项的具体含义参见http://www.openscenegraph.org/index.php/documentation/platform-specifics/android/43-building-openscenegraph-for-android-3-0-2运行msys.batcd /d/Android/OpenSceneGraph-3.2.1mkdir buildcd build然后分别输入以下命令,进行项目配置1). 编译GLES1的版本cmake .. \-G 'MSYS Makefiles' \-DOSG_BUILD_PLATFORM_ANDROID=ON \-DANDROID_NDK=/d/android/android-ndk-r10 \-DDYNAMIC_OPENTHREADS=OFF \-DDYNAMIC_OPENSCENEGRAPH=OFF \-DOSG_GL1_AVAILABLE=OFF \-DOSG_GL2_AVAILABLE=OFF \-DOSG_GL3_AVAILABLE=OFF \-DOSG_GLES1_AVAILABLE=ON \-DOSG_GLES2_AVAILABLE=OFF \-DOSG_GL_LIBRARY_STATIC=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 \-DJ=4 \-DANDROID_ABI='armeabi armeabi-v7a' \-DANDROID_PLATFORM=8 \-DANDROID_STL='gnustl_static' \-DANDROID_OPTIM_NEON=true \-DANDROID_OPTIM_ARM32=true \-DCMAKE_INSTALL_PREFIX=/osgGles12). 编译GLES2的版本cmake .. \-G 'MSYS Makefiles' \-DOSG_BUILD_PLATFORM_ANDROID=ON \-DANDROID_NDK=/d/android/android-ndk-r10 \-DDYNAMIC_OPENTHREADS=OFF \-DDYNAMIC_OPENSCENEGRAPH=OFF \-DOSG_GL1_AVAILABLE=OFF \-DOSG_GL2_AVAILABLE=OFF \-DOSG_GL3_AVAILABLE=OFF \-DOSG_GLES1_AVAILABLE=OFF \-DOSG_GLES2_AVAILABLE=ON \-DOSG_GL_LIBRARY_STATIC=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 \-DJ=4 \-DANDROID_ABI='armeabi armeabi-v7a' \-DANDROID_PLATFORM=8 \-DANDROID_STL='gnustl_static' \-DANDROID_OPTIM_NEON=true \-DANDROID_OPTIM_ARM32=true \-DCMAKE_INSTALL_PREFIX=/osgGles2四、配置完成之后,键入命令make进行编译五、编译完成之后,键入命令make install进行安装

7

编译osgAndroidExampleGLES1一、启动D:\android\adt-bundle-windows-x86-20131030\eclipse\eclipse.exe二、配置eclipse使用的NDKWindow->Preferences->Android->NDK->Browse选择路径D:\android\android-ndk-r10三、创建eclipse的Android项目(osgAndroidExampleGLES1)File->New->Projects->Android->Android Project from Existing Code->选择路径D:\android\OpenSceneGraph-3.2.1\examples\osgAndroidExampleGLES1四、增加本地编译支持五、修改Jni/Android.mkNDK_ANDROID_DIR    := D:/android/android-ndk-r10OSG_ANDROID_DIR    := D:/GreenSoft/msys/osgGles1LIBDIR             := $(OSG_ANDROID_DIR)/obj/local/armeabiLIBDIR2         := $(NDK_ANDROID_DIR)/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabiifeq ($(TARGET_ARCH_ABI),armeabi-v7a)    LOCAL_ARM_NEON     := true    LIBDIR             := $(OSG_ANDROID_DIR)/obj/local/armeabi-v7a    LIBDIR2         := $(NDK_ANDROID_DIR)/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7aendif### 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 -lzLOCAL_SRC_FILES := osgNativeLib.cpp OsgMainApp.cpp OsgAndroidNotifyHandler.cppLOCAL_LDFLAGS   := -L $(LIBDIR) -L $(LIBDIR2) \-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六、编译Workspace->Project Explorer->osgViewer>右键->Build Project七、运行

注意事项

第七大步参照了:《osg for android学习之二:编译运行osgAndroidExampleGLES1/2 》,但必须按照上面的内容进行修改否则会出现连接错误

推荐信息