以Cocos官方提供 Android 示例程序 org.cocos2dx.Cocos2dxSimpleGame 研究了一下Cocos2d , 下面的我的心得
其结构从上到下共分为 4 层:
最上层是 UI Adaptive Layer 是对不同平台(Android, iOS, etc ) 用户输入和显示进行适配 ( 或者说 porting)
游戏逻辑层需要用户编写,看用户如何设计游戏,他使用了 cocos2d 抽象出的对象,比如 scene, sprite 等
通过下面的文件分析,你可以看到 Android 是如何载入游戏逻辑的
在:cocos2d-2.1rc0-x-2.1.2/samples/Cpp/SimpleGame/Classes/HelloWorldScene.cpp 编写游戏逻辑
此文件被 cocos2d-2.1rc0-x-2.1.2 / samples / Cpp / SimpleGame / proj.android / jni / Android.mk 编译得到 libgame
libgame 而后被 cocos2d-2.1rc0-x-2.1.2 / samples / Cpp / SimpleGame / proj.android / src / org / cocos2dx / simplegame / SimpleGame.java 载入
在 Eclipse 中, 可以看到已经被编译好的 .so 文件, 而几个 Java 文件实际上是 UI Adaptive Layer

Cocos2d core 中的个 lib 提供的2D游戏若干基本类
Cocos2d 当然依赖 OS 的基本库,还有就是 opengl, sound 这些native lib
结论:
由于cocos2d 没有提供 java层的游戏基本类(sprite...),因此 game逻辑还必须用 C++ 来编写。这就是为何 cocos2d 的 Android 开发需要安装 NDK, 这是为了编译 C++ 文件。
另外有一个项目就是用 Java 来编写所有 cocos2d 的类, 这个项目还在开发中
http://code.google.com/p/cocos2d-android/