android 下 cocos2dx 后台黑屏的解决办法

39 篇文章 0 订阅
35 篇文章 0 订阅

问题描述:

1.运行游戏,无问题
2.游戏点击网站链接,或进入后台,回来黑屏
3.eclipse控制台报错:
  03-01 17:51:55.347: W/Adreno-ES20(8664): <__load_uniform_matrix:1091>: GL_INVALID_OPERATION
  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’

死马当活马医,试一试的态度我打开了开发者选项,拉到最底,发现“不保留活动”处于开启状态,关闭后游戏运行正常,调试正常
我想当初开启它是为了用的时候节能省电,不过从这个方面考虑,我并没有从根本上解决程序在此模式下完美运行的方式,所以,如果你解决了这个世纪难题,请在下方留言给出答复,谢谢各位朋友
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值