IOS篇
C++与Objective C混编
Objective C的头文件是.h,源文件是.m,可与C++进行混编,但源文件的后缀要改为.mm。
所以,任何加了C++的Objective C源代码,只需要把后缀名改一下,就可以通过编译。
CCEGLView与View
使用IOS原生控件代替cocos2d-x的CCSprite控件
下面EAGLView是cocos2d-x封装的一个类,实际上是封装了OpenGL的一个显示对象
window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen]
bounds];
EAGLView *__glView = [EAGLView viewWithFram : [window bounds]
pixelFormat:kEAGLColorFormatRGBA8
depthFormat:GL_DEPTH_COMPONENT16
preserveBackBuffer:NO
sharegroup:nil
multiSampling:NO
numberOfSamples:0
];
用视图控制器控制EAGLView——把OpenGL封装类加入到里面
viewController = [[RootViewController alloc]initWithNibName:nil
bundle:nil];
viewController.wantFullScreenLayout = YES;
viewController.view = __glView;
把IOS视图控件加入OpenGL的封装类中
UIImageVIew *imageView = [[UIImageView alloc] InitWithImage : [UIImageNamed:@"icon.png"]]; //IOS中的view控件
[__glView addSubview:imageView];
同样,如果要弄网络控件,也可以
UIWebView *webView;
[__glView addSubview:webView]
如果要创造广告控件,也可以如此。
注意,要setRootViewController to window
if([UIDevice currentDevice].systemVersion floatValue < 6.0)
{
//warning : addSubview doesn't work on ios6.0
[window addSubview : viewCOntroller.view];
}
else
{
[window setRootViewController:viewController];
}
[window makeKeyAndVisible];
android篇
android NDK 开发(Native Development Kit)
重要插件——sequoyah
在Help->install new software中add http://download.eclipse.org/sequoyah/updates/2.0/ 。然后把红色的勾去掉。
HelloJNI 实例
1、新建HelloJNI SDK工程
2、右键HelloJNI项目,在Android tools中选Add Native support(sequoyah 插件提供的功能)
这一步只需要输入一个so文件名,很简单。
完成插件的配置后,Eclipse会增加C++的编辑器;项目中会增加jni,obj文件夹。
注意事项:
1、要视线给Eclipse配置好NDK路径
2、配置C语言include和lib路径
3、增加cygwin的bin到window 的 环境变量PATH中。
请参考下面的链接
在Eclipse中使用sequoyah插件配置Android NDK环境
3、如需要则配置"C/C++ Build"和"C/C++ General->Path and symbols"(有时候安装时候可能会出小问题,导致需要配置)
MakeFile解析
这部分网上资料多,就不详述了。
哪些需要编译
编译特性要求
JNI运用
cocos2d-x提供了JNIHelper,可以简化调用流程。这部分的详细内容网上资料多,就不详述了。
配置:
1.要修改create-android-project.bat/sh的SDK和NDK路径。
这部分主大概要学会的是JAVA中怎么调用C++,C++中怎么调用JAVA。学习步骤:
1、JNI会定义从JAVA和C++数据类型的映射,这个可以学习下。
2、然后分别学习JAVA和C++互调的方法。先学习下函数的调用,这里看起来有很多奇怪的函数表达式,其实就是因为JAVA和C++间的数据类型不能直接调用,而是通过映射调用的,所以会有很多转换代码。我们学习的时候,可以屏蔽这些转换代码,抄袭下,知道怎么用就行,然后就会熟悉了。