问题描述:

1.运行游戏,无问题

2.游戏点击网站链接,或进入后台,回来黑屏

3.eclipse控制台报错:

03-01 17:51:55.347: W/Adreno-ES20(8664): <1091>: GL_INVALID_OPERATION1091>

03-01 17:51:55.347: D/cocos2d-x debug info(8664): OpenGL error 0x0502 in /Applications/android/cocos2dx/cocos2dx_v2/cocos2dx/sprite_nodes/CCSprite.cpp draw 584

4.可以操作,可以进行触碰操作,反馈声音也存在,只是不显示画面,十分诡异

解决方案

本人并不能代表解决安卓下所有黑屏问题, 但是本人已查询大量的资料, 以及富有经验的 lcg_ryan 同事的帮助, 协力解决了黑屏问题

网上各种搜集关键字: GL_INVALID_OPERATION, OpenGL error 0x0502, 以及 cocos2dx 错误

解决方案1: 游戏源码

c++代码问题, 从c++端代码处修复

下列代码的使用与否,反复测试和黑屏无关, 从c++端代码入手失败

void AppDelegate::applicationDidEnterBackground(){ CCDirector::sharedDirector()->stopAnimation(); SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic(); SimpleAudioEngine::sharedEngine()->pauseAllEffects(); }

void AppDelegate::applicationWillEnterForeground(){ CCDirector::sharedDirector()->startAnimation(); SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic(); SimpleAudioEngine::sharedEngine()->resumeAllEffects(); }

解决方案2:引擎源码

同样为c++方案解决方式,通过修改cocos2dx引擎来解决问题, 来自 zu12jing 的解决方案,结果同样无法解决问题

1.cocos2dx/platform/CCPlatformMacros.h

将#define CC_ENABLE_CACHE_TEXTURE_DATA 1 修改为0

2.cocos2dx/platform/android/java/src/org/cocos2dx/lib/Cocos2dxGLSurfaceView.java

注释掉super.onPause() //2.2.6已注释掉

3.android工程目录下jin/hellocpp/main.cpp

注释掉else后面的所有代码//2.2.6已注释掉

解决方案3:修改AndroidManifest.xml配置文件

修改android下的manifest配置文件, 来自 lcg_ryan 的解决方案, 在屏幕变化时会导致cocos2dx重绘,但本人的黑屏无法用此方案解决

给activity增加

android:configChanges="orientation|keyboardHidden|screenSize|smallestScreenSize|navigation|screenLayout"

解决方案4:更改适配版本

修改android下的manifest配置文件,更改适配版本, 无效

从 14 改为 8

android:minSdkVersion="14"

解决方案5: 清理缓存

清空缓存,三清下面的目录,重新生成cocos2dx缓存还是不行

\proj.android\assets

\proj.android\libs

\proj.android\obj

解决方案6:更改另一些配置

更改manifest一些其他配置

1.删掉 (完全没有这个项目)

android:noHistory="true"

2.添加singleInstance属性 (无效)

android:launchMode="singleInstance"

解决方案7:修改安卓开发者配置

在 black screen when returning from background 这个帖子下找到了最后的老外回答

1. Go to ‘Settings’

2. Select ‘Developer Options’

3. Uncheck ‘Do not keep activities’

死马当活马医,试一试的态度我打开了开发者选项,拉到最底,发现“不保留活动”处于开启状态,关闭后游戏运行正常,调试正常

我想当初开启它是为了用的时候节能省电,不过从这个方面考虑,我并没有从根本上解决程序在此模式下完美运行的方式,所以,如果你解决了这个世纪难题,请在下方留言给出答复,谢谢各位朋友

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐