Cocos2d-x 3(1)

前面几篇博客,如果有需要比较差别的话,童鞋们自行去查看:

Cocos2d-x 2.2.3 环境搭建

http://blog.csdn.net/wwj_748/article/details/23672799

cocos2d-x在win7下的android交叉编译环境

http://blog.csdn.net/wwj_748/article/details/23704141

Cocos2d-x 3.0 - Eclipse上构建一个Android项目

=========================================

http://blog.csdn.net/wwj_748/article/details/24812277

其实讲了那么多,很多童鞋还是不明白为什么要这样配置,Cocos2d-x 3.x以上已经省去了使用Cygwin来对Android项目进行交叉编译了,可以直接使用NDK,所以我们配置的时候一定要配置NDK的路径。这里所说的配置路径是需要我们在Windows下配置系统环境变量,起初我们的系统是没有NDK路径的。如果我们不设置名为NDK_ROOT的环境变量是无法对项目进行交叉编译。

我们先来创建一个Cocos2d-x 3.x的项目,使用命令:

cocos new HelloCC -p com.wwj.hellocc -l cpp -d D:/Cocos2d-x/projects

这是大致的命令。意思是,在D盘的Cocossd-x目录下的projects目录下创建了一个名为HelloCC的项目,语言是C++

创建完之后,会有如下目录结构:

proj.android就是我们要导入到Eclipse中的项目,打开Eclipse,Import进来,有如下项目结构:

大家可以看到项目中有jni文件夹、build_native.py脚本,我们的Android项目就是通过执行build_native.py这个脚本来对我们的Android项目进行交叉编译的,我们需要编译的文件在jni里面:

笔者写了篇博客专门介绍这两个文件的作用,可以去看看:

http://blog.csdn.net/wwj_748/article/details/30055915

我们直接Build project

在控制台会出现以下提示:

这里说的意思是,NDK_ROOT没有定义,请在你的环境下定义NDK_ROOT

那么我就在我们所在的环境下配置如下的环境变量:

配置好之后,重启Eclipse,让我们刚配置的环境变量生效。

我们再次编译项目,会出现如下的编译过程:

**** Build of configuration Default for project HelloCC ****

python D:/Cocos2d-x/projects/HelloCC/proj.android/build_native.py all

Android NDK: WARNING: APP_PLATFORM android-19 is larger than android:minSdkVersion 9 in ./AndroidManifest.xml

Android NDK: WARNING:D:\Cocos2d-x\projects\HelloCC\proj.android\…/cocos2d/cocos/./Android.mk:cocos2dx_static: LOCAL_LDLIBS is always ignored for static libraries

Android NDK: WARNING:D:\Cocos2d-x\projects\HelloCC\proj.android\…/cocos2d/cocos/platform/android/Android.mk:cocos2dxandroid_static: LOCAL_LDLIBS is always ignored for static libraries

make.exe: Entering directory `D:/Cocos2d-x/projects/HelloCC/proj.android’

[armeabi] Compile++ thumb: cocos2dcpp_shared <= main.cpp

[armeabi] Compile++ thumb: cocos2dcpp_shared <= AppDelegate.cpp

[armeabi] Compile++ thumb: cocos2dcpp_shared <= HelloWorldScene.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= cocos2d.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCAction.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCActionCamera.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCActionCatmullRom.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCActionEase.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCActionGrid.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCActionGrid3D.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCActionInstant.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCActionInterval.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCActionManager.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCActionPageTurn3D.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCActionProgressTimer.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCActionTiledGrid.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCActionTween.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCAnimation.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCAnimationCache.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCAtlasNode.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCClippingNode.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCComponent.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCComponentContainer.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCDrawNode.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCDrawingPrimitives.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCFont.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCFontAtlas.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCFontAtlasCache.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCFontCharMap.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCFontFNT.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCFontFreeType.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCGLBufferedNode.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCGrabber.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCGrid.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCLabel.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCLabelAtlas.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCLabelBMFont.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCLabelTTF.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCLabelTextFormatter.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCLayer.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCMenu.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCMenuItem.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCMotionStreak.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCNode.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCNodeGrid.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCParallaxNode.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCParticleBatchNode.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCParticleExamples.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCParticleSystem.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCParticleSystemQuad.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCProgressTimer.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCRenderTexture.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCScene.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCSprite.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCSpriteBatchNode.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCSpriteFrame.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCSpriteFrameCache.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCTMXLayer.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCTMXObjectGroup.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCTMXTiledMap.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCTMXXMLParser.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCTextFieldTTF.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCTileMapAtlas.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCTransition.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCTransitionPageTurn.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCTransitionProgress.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCTweenFunction.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCMesh.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCSprite3DDataCache.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCObjLoader.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCSprite3D.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCGLViewProtocol.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCFileUtils.cpp

In file included from D:\Cocos2d-x\projects\HelloCC\proj.android\…/cocos2d/cocos/./math/CCGeometry.h:32:0,

from D:\Cocos2d-x\projects\HelloCC\proj.android\…/cocos2d/cocos/./base/ccTypes.h:33,

from D:\Cocos2d-x\projects\HelloCC\proj.android\…/cocos2d/cocos/./platform/CCGLViewProtocol.h:29,

from D:\Cocos2d-x\projects\HelloCC\proj.android\…/cocos2d/cocos/./platform/CCGLViewProtocol.cpp:26:

D:\Cocos2d-x\projects\HelloCC\proj.android\…/cocos2d/cocos/./platform/CCGLViewProtocol.cpp: In member function ‘virtual void cocos2d::GLViewProtocol::handleTouchesMove(int, intptr_t*, float*, float*)’:

D:\Cocos2d-x\projects\HelloCC\proj.android\…/cocos2d/cocos/./base/CCPlatformMacros.h:219:67: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 2 has type ‘intptr_t {aka int}’ [-Wformat=]

#define CCLOG(format, …)      cocos2d::log(format, ##__VA_ARGS__)

^

D:\Cocos2d-x\projects\HelloCC\proj.android\…/cocos2d/cocos/./platform/CCGLViewProtocol.cpp:318:13: note: in expansion of macro ‘CCLOG’

CCLOG(“Moving touches with id: %ld error”, id);

^

[armeabi] Compile++ thumb: cocos2dx_static <= CCSAXParser.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCThread.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCImage.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCAffineTransform.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCGeometry.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCVertex.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= Mat4.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= MathUtil.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= Quaternion.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= TransformUtils.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= Vec2.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= Vec3.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= Vec4.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCAutoreleasePool.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCConfiguration.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCConsole.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCData.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCDataVisitor.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCDirector.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCEvent.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCEventAcceleration.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCEventCustom.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCEventDispatcher.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCEventFocus.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCEventKeyboard.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCEventListener.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCEventListenerAcceleration.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCEventListenerCustom.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCEventListenerFocus.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCEventListenerKeyboard.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCEventListenerMouse.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCEventListenerTouch.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCEventMouse.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCEventTouch.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCIMEDispatcher.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCNS.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCProfiling.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCRef.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCScheduler.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCScriptSupport.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCTouch.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCUserDefault.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCUserDefaultAndroid.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCValue.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= TGAlib.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= ZipUtils.cpp

In file included from D:\Cocos2d-x\projects\HelloCC\proj.android\…/cocos2d/cocos/./base/CCUserDefault.h:28:0,

from D:\Cocos2d-x\projects\HelloCC\proj.android\…/cocos2d/cocos/./base/CCUserDefaultAndroid.cpp:25:

D:\Cocos2d-x\projects\HelloCC\proj.android\…/cocos2d/cocos/./base/CCUserDefaultAndroid.cpp: In member function ‘void cocos2d::UserDefault::setDataForKey(const char*, const cocos2d::Data&)’:

D:\Cocos2d-x\projects\HelloCC\proj.android\…/cocos2d/cocos/./base/CCPlatformMacros.h:219:67: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘ssize_t {aka long int}’ [-Wformat=]

#define CCLOG(format, …)      cocos2d::log(format, ##__VA_ARGS__)

^

D:\Cocos2d-x\projects\HelloCC\proj.android\…/cocos2d/cocos/./base/CCUserDefaultAndroid.cpp:458:5: note: in expansion of macro ‘CCLOG’

CCLOG(“SET DATA FOR KEY: --%s–%d”, value.getBytes(), value.getSize());

^

[armeabi] Compile++ thumb: cocos2dx_static <= atitc.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= base64.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= ccCArray.cpp

[armeabi] Compile thumb  : cocos2dx_static <= ccFPSImages.c

[armeabi] Compile++ thumb: cocos2dx_static <= ccTypes.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= ccUTF8.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= ccUtils.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= etc1.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= s3tc.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCBatchCommand.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCCustomCommand.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCGLProgram.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCGLProgramCache.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCGLProgramState.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCGLProgramStateCache.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCGroupCommand.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCQuadCommand.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCMeshCommand.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCRenderCommand.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCRenderer.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCTexture2D.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCTextureAtlas.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCTextureCache.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= ccGLStateCache.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= ccShaders.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCArray.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCSet.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCString.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCDictionary.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCDeprecated.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCNotificationCenter.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCPhysicsBody.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCPhysicsContact.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCPhysicsJoint.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCPhysicsShape.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCPhysicsWorld.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCPhysicsBodyInfo_chipmunk.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCPhysicsContactInfo_chipmunk.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCPhysicsJointInfo_chipmunk.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCPhysicsShapeInfo_chipmunk.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= CCPhysicsWorldInfo_chipmunk.cpp

[armeabi] Compile++ thumb: cocos2dx_static <= ConvertUTFWrapper.cpp

文末

今天关于面试的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。

最后在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

【Android核心高级技术PDF文档,BAT大厂面试真题解析】

【算法合集】

【延伸Android必备知识点】

【Android部分高级架构视频学习资源】

Android精讲视频领取学习后更加是如虎添翼!进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》
点击传送门,即可获取!

【Android核心高级技术PDF文档,BAT大厂面试真题解析】

[外链图片转存中…(img-5phGVEb6-1714936557811)]

【算法合集】

[外链图片转存中…(img-aCpmQCok-1714936557812)]

【延伸Android必备知识点】

[外链图片转存中…(img-ERh1opJI-1714936557813)]

【Android部分高级架构视频学习资源】

Android精讲视频领取学习后更加是如虎添翼!进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》
点击传送门,即可获取!

  • 10
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值