win32到android,missingfile导致的闪退

如有错误,请联系我更正,以免误导他人!)
   今天,break把一个使用cocos2dx在win32下开发的项目编译成android进行调试时碰到闪退的问题。在win32下运行没有问题,在android上运行却出现闪退的情况。通过把项目导入eclipse进行debug,看到错误如下:
win32到android,missingfile导致的闪退_第1张图片
    机智的小伙伴肯定跟break一样,第一时间关注最下面的红色文字提示的错误信息。红色的文字显示的意思是出现的“内存泄漏”。看到这,break马上回去检查C++代码中所有的内存操作。但是看了又看查了又查,发现并没有问题。break就开始怀疑人生怀疑理想了(PS:尼玛!写了这么久C++,内存泄漏还看不出来)。
    再看上面图片中用红色圈圈圈出来的“missing file”。这就是break后来发现的问题所在了。在android上运行时找不到break的项目中的纹理图片和字体文件,进而导致内存泄漏。
    利用cocos2dx进行开发时,我们的资源文件一般都会放在Resource文件夹下,有时我们会在Resource文件夹下创建子目录(break在Resource下创建了两个子目录,分别存放字体和纹理)。当我们用绝对路径的方式去访问资源时不会出现上面这种问题。但是,为求简单,我们可能会用"Resource子目录/文件名"的方式代替绝对路径去访问资源文件,利用这种方式访问的话涉及到coco2dx的搜索路径的问题。
    在win32下(ios和win32下情况相同),利用上面的方式去访问资源会自动搜索Resource下的子目录。在android上则不会,我们要在适当的地方添加访问问件时的搜索路径(添加方法: FileUtils::getInstance()->addSearchPath("目录名/");

你可能感兴趣的:(win32到android,missingfile导致的闪退)