Cocos2d—X Version: cocos2d-2.1rc0-x-2.1.3
Mac,Windows移植android编译闪退原因总结:
1.父类强转
对于这个问题出现的种类很多(但是你如果书写代码规范基本没有任何问题)
在cocos2dx项目中Xcode书写代码有如下两个类,继承关系如下:
HClassA:public CCSprte
HClassB:public HClassA
如果你强制将HClassA类型强制转给HClassB对象会造成Android闪退的问题!!!!
虽然这种父类强转子类在Java中可以行得通,在iOS运行没有问题,但是!当编译到Android的时候就会出现100%闪退的现象。
CCFileUtils::sharedFileUtils()->getWritablePath()
这个方法封装成一个静态全局变量,以方便在curl的回调函数中使用。
这个写法在Xcode上面编译、运行OK,但是Android编译直接闪退。
看下这个方法的源码,大家就明白了。
std::string CCFileUtilsIOS::getWritablePath()
{
// save to document folder
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
std::string strRet = [documentsDirectory UTF8String];
strRet.append("/");
return strRet;
}