Cocos2d-x学习笔记3:将VS2010下cocos2d-x 2.0.2 win32工程移植到android环境

因为本人以前使用WiEngine引擎,所以文章跳跃幅度比较大。 @H_502_0@ @H_502_0@ 问题:在WIN7下使用VS2010使用调试通过一个COCOS2D-X项目后如何移植到ANDROID环境并进而打包安装到真机(或者模拟器)上呢? @H_502_0@ @H_502_0@ STEP 1:配置android工程生成
@H_502_0@ 用edit plus之类的编辑器打开 cocos2d-x目录下的 create-android-project.bat,并进行修改。@H_502_0@ @H_502_0@ @H_502_0@ @H_502_0@ @H_502_0@ 注意:上述文件中的几个路径一定要与你自己的路径对应起来!另外,这一步配置成功后,以后再创建其他的工程的android版本便基本上不再需要修改了。@H_502_0@ @H_502_0@ @H_502_0@ STEP 2:创建android工程@H_502_0@ @H_502_0@ 这一步是通过运行cocos2d-x目录下的create-android-project.bat实现的(在WINDOWS资源管理器中右键单击此文件,然后选择以管理员身份运行即可)。参考其它的资料,我使用管理员身份运行此文件的(一般运行情况还没有试验)。
然后,屏幕上提示你输入包名和项目名。
注意:如果在2.0.2版本中,如果你输入一个已经存在的项目名,则系统会提示你,已经存在同名,不允许你创建并退出。另外一定要注意,这一步是运行文件 create-android-project.bat而不是另一个相同主文件名的create-android-project.sh!!!-----这个文件后面才使用; 否则整个步骤乱套了!!!
@H_502_0@ 我的例子中创建的WIN32项目为eee2,这里创建的ANDROID工程名称为eee21。之后,系统自动运行,并创建项目,其下有三个子文件夹:Classes,proj.android和Resources。 @H_502_0@ @H_502_0@ @H_502_0@ STEP 3:导入代码和有关资源 @H_502_0@ @H_502_0@ 现在, 把你win32项目里的Classes拷贝到当前Classes下。然后把你win32项目里的Resources拷贝到当前Resources 下。@H_502_0@ 提示1:2.0.2版本与1.x版本中管理资源的方式发生了较大变化,请注意这一点。当然,在高版本中,管理更为方便和科学了。@H_502_0@ 提示2:直接使用覆盖方式复制粘贴即可。另外,还要想着先把最初系统自动生成的几个可能不再有用的文件删除。@H_502_0@ @H_502_0@ @H_502_0@ STEP 4:编辑jni文件夹下的android.mk等文件@H_502_0@ @H_502_0@ 这一步比较复杂,要求你最好深入理解application.mk和android.mk这两个文件在NDK编程中的位置及详细作用。在此不具体展开介绍了。@H_502_0@ @H_502_0@ 因为,我的例子是一个由系统向导自动生成的HELLO WORLD级的程序,所以,一路走下来非常顺利。@H_502_0@ 我的android.mk文件修改为如下形式:@H_502_0@ LOCAL_PATH := $(call my-dir)@H_502_0@ @H_502_0@ include $(CLEAR_VARS)@H_502_0@ @H_502_0@ LOCAL_MODULE := game_shared@H_502_0@ #LOCAL_MODULE_FILENAME := libgame@H_502_0@ @H_502_0@ LOCAL_SRC_FILES := hellocpp/main.cpp \@H_502_0@ ../../Classes/AppDelegate.cpp \@H_502_0@ ../../Classes/HelloWorldScene.cpp@H_502_0@ @H_502_0@ LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes \@H_502_0@ $(LOCAL_PATH)/../../../cocos2dx \@H_502_0@ $(LOCAL_PATH)/../../../cocos2dx/platform. \@H_502_0@ $(LOCAL_PATH)/../../../cocos2dx/include \@H_502_0@ $(LOCAL_PATH)/../../../cocosDension/include@H_502_0@ @H_502_0@ @H_502_0@ LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static cocos_extension_static@H_502_0@ @H_502_0@ include $(BUILD_SHARED_LIBRARY)@H_502_0@ @H_502_0@ $(call import-module,CocosDenshion/android) \@H_502_0@ $(call import-module,cocos2dx) \@H_502_0@ $(call import-module,extensions)@H_502_0@ 我的更改有:@H_502_0@ 1,注释掉了LOCAL_MODULE_FILENAME := libgame这一句。@H_502_0@ 2,把共享库名字更改为game_shared,对应于eee21.java文件中的下面一句必须作相应的修改:@H_502_0@ System.loadLibrary("game_shared"); @H_502_0@ 3,根据我的ANDROID工程所在位置修改了头文件引用部分。 @H_502_0@ @H_502_0@ LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes \@H_502_0@ $(LOCAL_PATH)/../../../cocos2dx \@H_502_0@ $(LOCAL_PATH)/../../../cocos2dx/platform. \@H_502_0@ $(LOCAL_PATH)/../../../cocos2dx/include \@H_502_0@ $(LOCAL_PATH)/../../../cocosDension/include@H_502_0@ @H_502_0@ 其中, $(LOCAL_PATH)是jni文件夹,于是相对于这一级文件夹,你的cocos2d-x系统的相应的头文件在哪一级文件夹下要明明白白才行。@H_502_0@ 另外,要注意的是,在最上面一行的\符号的后面直接跟的是一个硬回车字符。如果这个硬回车字符前面还有其他的什么空白符号的话,NDK编译到这个地方就停止了。@H_502_0@ @H_502_0@ STEP 4:运行build_native.sh脚本文件编译生成so库@H_502_0@ @H_502_0@ 根据网络的参考资料,我以系统管理员身份运行cycwin。然后运行你的系统生成的ANDROID工程内proj.android文件夹下的build_native.sh脚本文件,我的文件位置在:@H_502_0@ E:\download2010\cocos2d-x\cocos2d-2.0-x-2.0.2\eee21\proj.android@H_502_0@ 一般是先切换到上述文件夹下,然后再运行那个脚本文件,我的命令是:@H_502_0@ 1. cd /cygdrive/e/download2010/cocos2d-x/cocos2d-2.0-x-2.0.2/eee21/proj.android@H_502_0@ @H_502_0@ 2. ./build_native.sh@H_502_0@ 输出结果是:@H_502_0@ NDK_ROOT = /cygdrive/d/ndkr8@H_502_0@ COCOS2DX_ROOT = /cygdrive/e/download2010/cocos2d-x/cocos2d-2.0-x-2.0.2/eee21/pro@H_502_0@ j.android/../..@H_502_0@ APP_ROOT = /cygdrive/e/download2010/cocos2d-x/cocos2d-2.0-x-2.0.2/eee21/proj.and@H_502_0@ roid/..@H_502_0@ APP_ANDROID_ROOT = /cygdrive/e/download2010/cocos2d-x/cocos2d-2.0-x-2.0.2/eee21/@H_502_0@ proj.android@H_502_0@ Using prebuilt externals@H_502_0@ make: Entering directory `/cygdrive/e/download2010/cocos2d-x/cocos2d-2.0-x-2.0.2@H_502_0@ /eee21/proj.android'@H_502_0@ Gdbserver : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver@H_502_0@ Gdbsetup : libs/armeabi/gdb.setup@H_502_0@ Cygwin : Generating dependency file converter script@H_502_0@ Compile++ thumb : game_shared <= main.cpp@H_502_0@ Compile++ thumb : game_shared <= AppDelegate.cpp@H_502_0@ Compile++ thumb : game_shared <= HelloWorldScene.cpp@H_502_0@ Prebuilt : libgnustl_static.a <= <NDK>/sources/cxx-stl/gnu-libstdc++/libs/@H_502_0@ armeabi/@H_502_0@ Compile++ thumb : cocos2dx_static <= CCConfiguration.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCDrawingPrimitives.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCScheduler.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCCamera.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCAction.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCActionCamera.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCActionCatmullRom.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCActionEase.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCActionGrid.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCActionGrid3D.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCActionInstant.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCActionInterval.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCActionManager.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCActionPageTurn3D.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCActionProgresstimer.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCActionTiledGrid.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCActionTween.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCAtlasNode.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCNode.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCAffineTransform.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCGeometry.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCAutoreleasePool.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCDictionary.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCNS.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCObject.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCSet.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCString.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCZone.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCArray.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= cocos2d.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCDirector.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCGrabber.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCGrid.cpp@H_502_0@ Compile thumb : cocos2dx_static <= aabb.c@H_502_0@ Compile thumb : cocos2dx_static <= mat3.c@H_502_0@ Compile thumb : cocos2dx_static <= mat4.c@H_502_0@ Compile thumb : cocos2dx_static <= neon_matrix_impl.c@H_502_0@ Compile thumb : cocos2dx_static <= plane.c@H_502_0@ Compile thumb : cocos2dx_static <= quaternion.c@H_502_0@ E:/download2010/cocos2d-x/cocos2d-2.0-x-2.0.2/eee21/proj.android/../../cocos2dx/@H_502_0@ kazmath/src/quaternion.c: In function 'kmQuaternionAssign':@H_502_0@ E:/download2010/cocos2d-x/cocos2d-2.0-x-2.0.2/eee21/proj.android/../../cocos2dx/@H_502_0@ kazmath/src/quaternion.c:478: warning: incompatible implicit declaration of buil@H_502_0@ t-in function 'memcpy'@H_502_0@ Compile thumb : cocos2dx_static <= ray2.c@H_502_0@ Compile thumb : cocos2dx_static <= utility.c@H_502_0@ Compile thumb : cocos2dx_static <= vec2.c@H_502_0@ Compile thumb : cocos2dx_static <= vec3.c@H_502_0@ Compile thumb : cocos2dx_static <= vec4.c@H_502_0@ E:/download2010/cocos2d-x/cocos2d-2.0-x-2.0.2/eee21/proj.android/../../cocos2dx/@H_502_0@ kazmath/src/vec4.c: In function 'kmVec4Assign':@H_502_0@ E:/download2010/cocos2d-x/cocos2d-2.0-x-2.0.2/eee21/proj.android/../../cocos2dx/@H_502_0@ kazmath/src/vec4.c:150: warning: incompatible implicit declaration of built-in f@H_502_0@ unction 'memcpy'@H_502_0@ Compile thumb : cocos2dx_static <= mat4stack.c@H_502_0@ Compile thumb : cocos2dx_static <= matrix.c@H_502_0@ Compile++ thumb : cocos2dx_static <= CCKeypadDelegate.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCKeypaddispatcher.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= cclabelAtlas.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= cclabelBMFont.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= cclabelTTF.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= cclayer.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCScene.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCTransitionPageTurn.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCTransition.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCTransitionProgress.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= Ccmenu.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CcmenuItem.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCMotionStreak.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCProgresstimer.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCRenderTexture.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCParticleExamples.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCParticleSystem.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCParticleBatchNode.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCParticleSystemQuad.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCSAXParser.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCThread.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= platform.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCEGLViewProtocol.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCEGLView.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCAccelerometer.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCApplication.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCCommon.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCFileUtils.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCImage.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= EditBoxJni.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= JniHelper.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= IMEJni.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= MessageJni.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= SensorJni.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= SystemInfoJni.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= touchesJni.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= ccScriptSupport.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= ccShaders.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCGLProgram.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= ccGLStateCache.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCshadercache.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCAnimation.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCAnimationCache.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCSprite.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCSpriteBatchNode.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCSpriteFrame.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCSpriteFrameCache.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCNotificationCenter.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCProfiling.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCPointExtension.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= TransformUtils.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCUserDefault.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= base64.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= ccUtils.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCVertex.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= ccCArray.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= Tgalib.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= ZipUtils.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= ioapi.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= unzip.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCIMEdispatcher.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCTextFieldTTF.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCTexture2D.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCTextureAtlas.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCTextureCache.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCTexturePVR.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCParallaxNode.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCTMXLayer.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCTMXObjectGroup.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCTMXTiledMap.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCTMXXMLParser.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCTileMapAtlas.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCTouchdispatcher.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCTouchHandler.cpp@H_502_0@ Compile++ thumb : cocos2dx_static <= CCTouch.cpp@H_502_0@ Prebuilt : png.a <= /cygdrive/e/download2010/cocos2d-x/cocos2d-2.0-x-2.0.2@H_502_0@ /eee21/proj.android/../../cocos2dx/platform/third_party/android/prebuilt/libpng/@H_502_0@ libs/armeabi/@H_502_0@ Prebuilt : jpeg.a <= /cygdrive/e/download2010/cocos2d-x/cocos2d-2.0-x-2.0.@H_502_0@ 2/eee21/proj.android/../../cocos2dx/platform/third_party/android/prebuilt/libjpe@H_502_0@ g/libs/armeabi/@H_502_0@ Prebuilt : xml2.a <= /cygdrive/e/download2010/cocos2d-x/cocos2d-2.0-x-2.0.@H_502_0@ 2/eee21/proj.android/../../cocos2dx/platform/third_party/android/prebuilt/libxml@H_502_0@ 2/libs/armeabi/@H_502_0@ Prebuilt : tiff.a <= /cygdrive/e/download2010/cocos2d-x/cocos2d-2.0-x-2.0.@H_502_0@ 2/eee21/proj.android/../../cocos2dx/platform/third_party/android/prebuilt/libtif@H_502_0@ f/libs/armeabi/@H_502_0@ StaticLibrary : libcocos2d.a@H_502_0@ Compile++ thumb : cocosdenshion_static <= SimpleAudioEngine.cpp@H_502_0@ Compile++ thumb : cocosdenshion_static <= SimpleAudioEngineJni.cpp@H_502_0@ Compile++ thumb : cocosdenshion_static <= OpenSLEngine.cpp@H_502_0@ E:/download2010/cocos2d-x/cocos2d-2.0-x-2.0.2/eee21/proj.android/../../CocosDens@H_502_0@ hion/android/opensl/OpenSLEngine.cpp: In function 'bool initAudioPlayer(AudioPla@H_502_0@ yer*,const char*)':@H_502_0@ E:/download2010/cocos2d-x/cocos2d-2.0-x-2.0.2/eee21/proj.android/../../CocosDens@H_502_0@ hion/android/opensl/OpenSLEngine.cpp:292: warning: extended initializer lists on@H_502_0@ ly available with -std=c++0x or -std=gnu++0x@H_502_0@ E:/download2010/cocos2d-x/cocos2d-2.0-x-2.0.2/eee21/proj.android/../../CocosDens@H_502_0@ hion/android/opensl/OpenSLEngine.cpp:292: warning: extended initializer lists on@H_502_0@ ly available with -std=c++0x or -std=gnu++0x@H_502_0@ Compile++ thumb : cocosdenshion_static <= SimpleAudioEngineOpenSL.cpp@H_502_0@ StaticLibrary : libcocosdenshion.a@H_502_0@ Compile++ thumb : cocos_extension_static <= CCBFileLoader.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= CCBReader.cpp@H_502_0@ E:/download2010/cocos2d-x/cocos2d-2.0-x-2.0.2/eee21/proj.android/../../extension@H_502_0@ s/CCBReader/CCBReader.cpp:141:52: warning: multi-character character constant@H_502_0@ Compile++ thumb : cocos_extension_static <= CCControlButtonLoader.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= CCControlLoader.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= cclabelBMFontLoader.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= cclabelTTFLoader.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= cclayerColorLoader.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= cclayerGradientLoader.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= cclayerLoader.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= CcmenuItemImageLoader.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= CcmenuItemloader.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= CCNodeLoader.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= CCNodeLoaderLibrary.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= CCParticleSystemQuadLoader.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= CCScale9SpriteLoader.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= CCScrollViewLoader.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= CCSpriteLoader.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= CCControl.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= CCControlButton.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= CCControlColourPicker.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= CCControlHuePicker.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= CCControlSaturationBrightnessPicker@H_502_0@ .cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= CCControlSlider.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= CCControlSwitch.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= CCControlUtils.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= CCInvocation.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= CcmenuPassive.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= CCScale9Sprite.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= CCSpacer.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= CCScrollView.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= CCEditBox.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= CCEditBoxImplAndroid.cpp@H_502_0@ Compile++ thumb : cocos_extension_static <= HttpClient.cpp@H_502_0@ Prebuilt : curl.a <= /cygdrive/e/download2010/cocos2d-x/cocos2d-2.0-x-2.0.@H_502_0@ 2/eee21/proj.android/../../cocos2dx/platform/third_party/android/prebuilt/libcur@H_502_0@ l/libs/armeabi/@H_502_0@ StaticLibrary : libextension.a@H_502_0@ SharedLibrary : libgame_shared.so@H_502_0@ Install : libgame_shared.so => libs/armeabi/libgame_shared.so@H_502_0@ make: Leaving directory `/cygdrive/e/download2010/cocos2d-x/cocos2d-2.0-x-2.0.2/@H_502_0@ eee21/proj.android'@H_502_0@ @H_502_0@ Administrator@Xianzhong-PC /cygdrive/e/download2010/cocos2d-x/cocos2d-2.0-x-2.0.@H_502_0@ 2/eee21/proj.android@H_502_0@ @H_502_0@ @H_502_0@ 注意:其中有几处警告性提示--这个以后再学习。总之,顺利生成了libs文件夹下的.so文件。@H_502_0@ @H_502_0@ @H_502_0@ STEP 5:使用ECLIPSE再编译并打包到真机测试@H_502_0@ @H_502_0@ @H_502_0@ 启动Eclipse,使用File -> New -> Project...在随后的"New Project"对话框中选择Android->Android project from existing code,如下所示:@H_502_0@ @H_502_0@ @H_502_0@ @H_502_0@ 随后出现导入工程对话框,类似(来自于另一个实例)下图所示:@H_502_0@ @H_502_0@ @H_502_0@ @H_502_0@ 导入(浏览文件夹时选择 到proj.android这一层)成功,然后就是编译执行了。@H_502_0@ @H_502_0@
cocos2d-x作者推荐用上面的.sh方式编译生成.so文件,然后再用eclipse编译成.apk文件
@H_502_0@ 注意:在导入成功后,我没有作任何修改先使用重新编译了一下工程(在工程上面单击右键-构建工程),然后按Ctrl+F11运行。@H_502_0@ @H_502_0@ 下图给出了在我的真机SamSung I9100上运行的结果快照:@H_502_0@ @H_502_0@ @H_502_0@ @H_502_0@ @H_502_0@ 补充1:开发环境@H_502_0@ @H_502_0@ 我的开发环境是:@H_502_0@ WINDOWS 7@H_502_0@ ECLIPSE Indigo Service Release 2@H_502_0@ CYGWIN@H_502_0@ NDK 8@H_502_0@ vs2010@H_502_0@ 最新版本的cocos2d-x 2.0.2(上述操作同样适用于到当前最新版本2.1Beta3)。@H_502_0@ @H_502_0@ @H_502_0@ 补充2:在2.1Beta3下导入到Eclipse的一个细节@H_502_0@ @H_502_0@ 我喜欢跟踪使用最新的COCOS2D-X的开发环境。可是,在目前最新的2.1Beta3 SDK对应的WIN32工程导入到Eclipse中时,在导入结束,工程左边显示一个大大的红色的感叹号。进入到工程属性窗口中发现,工程引入了另外一个工程Java,如下图所示:@H_502_0@ @H_502_0@ @H_502_0@ @H_502_0@ 此时,一般需要重新把系统自动导入的java工程构建一下。然后,再把你的游戏工程再构建一下即可。@H_502_0@ 另外:在cocos2d-2.1beta3-x-2.1.1版本中也有与上面一样的规律,我现在(2013.2.6)刚刚使用过,OK!@H_502_0@ @H_502_0@ 补充3:在2.1Beta3下运行build_native.sh生成的src文件夹下的java文件@H_502_0@ @H_502_0@ 这个JAVA文件内容也简单多了,我在最近使用的小型试验型工程中相应的文件内容如下:@H_502_0@ /**************************************************************************** @H_502_0@ copyright (c) 2010-2012 cocos2d-x.org @H_502_0@ @H_502_0@ http://www.cocos2d-x.org @H_502_0@ @H_502_0@ Permission is hereby granted,free of charge,to any person obtaining a copy @H_502_0@ of this software and associated documentation files (the "Software"),to deal @H_502_0@ in the Software without restriction,including without limitation the rights @H_502_0@ to use,copy,modify,merge,publish,distribute,sublicense,and/or sell @H_502_0@ copies of the Software,and to permit persons to whom the Software is @H_502_0@ furnished to do so,subject to the following conditions: @H_502_0@ @H_502_0@ The above copyright notice and this permission notice shall be included in @H_502_0@ all copies or substantial portions of the Software. @H_502_0@ @H_502_0@ THE SOFTWARE IS PROVIDED "AS IS",WITHOUT WARRANTY OF ANY KIND,EXPRESS OR @H_502_0@ IMPLIED,INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,@H_502_0@ fitness FOR A PARTIculaR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @H_502_0@ AUTHORS OR copYRIGHT HOLDERS BE LIABLE FOR ANY CLaim,damAGES OR OTHER @H_502_0@ LIABILITY,WHETHER IN AN ACTION OF CONTRACT,TORT OR OTHERWISE,ARISING FROM,@H_502_0@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN @H_502_0@ THE SOFTWARE. @H_502_0@ ****************************************************************************/ @H_502_0@ package org.zxz.HellosqliteA; @H_502_0@ @H_502_0@ import org.cocos2dx.lib.Cocos2dxActivity; @H_502_0@ @H_502_0@ import android.os.Bundle; @H_502_0@ @H_502_0@ public class HellosqliteA extends Cocos2dxActivity{@H_502_0@ @H_502_0@ protected void onCreate(Bundle savedInstanceState){@H_502_0@ super.onCreate(savedInstanceState);@H_502_0@ }@H_502_0@ @H_502_0@ static {@H_502_0@ System.loadLibrary("game_shared");@H_502_0@ }@H_502_0@ } @H_502_0@ 不用作任何修改即可。@H_502_0@ 最后,文件夹proj.android\jni\hellocpp下系统自动生成的main.cpp头文件引用中的下面一行一般要去掉的(根据你的情况吧):@H_502_0@ #include "HelloworldScene.h"@H_502_0@ @H_502_0@ @H_502_0@

无标题.jpg

无标题.jpg

无标题.jpg

捕获.JPG

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...