一个多星期没有写新的东西了。下面内容是最近修复的一个bug的过程记录。
问题描述:
1. 产品需要进行修改密码的动作。点击提交后,界面死去响应。
解决问题过程纪录:
1. 修改密码没有收到回复,同时正在加载窗口没有销掉;
2. 抓包查看是否有包发出去;或者跟服务器端确认;
http://www.tastycocoabytes.com/cpa/
cocoa packet analyzer
这个工具没有深入使用。貌似pc也有类似的比较不错的产品叫debugview. 我的同事使用比较多。可以比较方便的查找tcp数据包的通信;对于未加密数据的跟踪一个很好的选择。
3. 尝试错误重现:点击后,界面仍然失去响应,但是重新登陆时提示密码错误。看来密码已经被修改;
4. 使用filediffer比较文件差异。这是mac环境不错的工具,方便比较代码的差异,不错的工具。但是没有发现有用的信息。几个有怀疑的地方,和旧版本是代码一致的。奇怪的事情就是旧版本功能测试正常。
5. 继续跟踪,打开产品的log开关,发现一个意义的信息。就是发送消息后,服务器端的回包成功返回,并且加入到消息队列等待使用。
相关代码没有能够将message pop出来,导致界面上没有任何提示。
void BaseLayer::dohandle(float dt)
{
//此处出错, mController空指针,无法继续执行。
if (mController == NULL) {
return;
}
while(MyQueue::sharedInstance()->count() >0 && MyQueue::sharedInstance()->isPopUnlock()==false)
{
Message *message = (Message*)MyQueue::sharedInstance()->pop();
if(message)
{
m_currentMillisecondTime = TimeUtil::millisecondNow();
retryTimes = 0;
mController->handleLogic(message);
MyQueue::sharedInstance()->removeObject(message);
}else
{
//CCLog("BaseLayer::dohandle message or controller is null");
LoggerUtil::getLogger()->logInfo("BaseLayer::dohandle message or controller is null");
}
}
}
6. 解决办法,按照现有的客户端框架,增加专门layer来包装一个view,controllor
bool ProfileLayer::init()
{
LoggerUtil::getLogger()->logInfo(__FUNCTION__);
bool bRet = false;
do {
CC_BREAK_IF(! BaseLayer::init() );
ModuleTabView* node = ModuleTabView::create();
mController = new ProfileController();
node->setTouchDelegate(mController);
mController->setNode(node);
this->addChild(mController->getNode());
bRet = true;
} while (0);
return bRet;
}
7. 继续解决,增加ProfileController, 负责处理两个界面的网络回包和touch事件
提前释放
解决办法:
mController = ProfileController:new();
修改为:
mController = new ProfileController();
profileLayer.cpp
9. 将原先的handleLogic(inputMessage)相关代码复制
ios运行正常
10. 修改jni/Android.mk
将新增的cpp文件添加到脚本
./build_native.sh
编译通过,测试通过
终于解决上述问题。修改别人的代码,确实感觉象捅马蜂窝,但是我们没的选择。无法改变的,就要去接受。
分享到:
相关推荐
这个“Cocos2d-X斗地主游戏完整源码”是一个利用Cocos2d-X框架构建的斗地主游戏项目,包含了从新手到大师五个级别的游戏体验,旨在提供给开发者一个学习和参考的实例。 1. **Cocos2d-X框架**:Cocos2d-X是跨平台的...
《开心斗地主》是一款基于Cocos2d-x框架开发的经典棋牌类游戏,适用于移动平台。Cocos2d-x是一个跨平台的2D游戏开发框架,由C++编写,支持iOS、Android、Windows等多个操作系统。它以其高效、易用的特点,深受游戏...
Cocos2d-X斗地主游戏完整源码,游戏分有新手场,初级场,中级场,高级场和大师场5个级别,画面非常精美。。
《斗地主游戏开发:Cocos2d前端与Node.js后端详解》 在游戏开发领域,斗地主是一款广受欢迎的扑克牌游戏,而利用现代技术栈进行开发可以极大地提升用户体验。本项目以“斗地主代码研究,前端cocos2d,后端nodejs”...
JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台发布、程序代码管理、两大应用商店发布产品。...
这个压缩包“cocos2d-x-cocos2d-x-2.2.2.zip”包含了cocos2d-x 的2.2.2版本,该版本是cocos2d-x发展中的一个重要里程碑,它提供了许多改进和优化,使得开发者能够更加高效地创建2D游戏和应用。 在cocos2d-x 2.2.2中...
【基于cocos2d-x的斗地主游戏开发】 cocos2d-x是一个强大的开源游戏开发框架,支持跨平台开发,适用于iOS、Android、Windows等多个操作系统。它采用C++作为主要编程语言,允许开发者创建2D游戏、UI和其他互动内容。...
《斗地主游戏开发实战——基于cocos2d-x 3框架在iOS系统中的实现》 在游戏开发领域,斗地主是一款深受广大玩家喜爱的扑克游戏,它以丰富的策略性和娱乐性吸引了无数用户。本篇文章将深入探讨如何使用cocos2d-x 3...
cocos2d-android游戏引擎是著名游戏引擎cocos2d游戏引擎的Android版。cocos2d-android游戏引擎性能优越、易学、可以进行纯java编程、具有极高的研 究价值、大大的降低了开发者的学习成本。您只需要一台普通配置的...
《cocos2d-x 3.0:游戏开发中的角色移动技术详解》 在游戏开发领域,cocos2d-x是一款广泛使用的开源2D游戏引擎,尤其在移动平台上的应用非常广泛。cocos2d-x 3.0版本带来了许多性能优化和新特性,使得开发者能够更...
《Cocos2d-x实战 JS卷 Cocos2d-JS开发》是一本深入探讨Cocos2d-x游戏引擎JavaScript版本使用的专业书籍。Cocos2d-x是全球范围内广泛采用的游戏开发框架,尤其适用于2D游戏的制作,而Cocos2d-JS则是其JavaScript接口...
在学习Cocos2d-JS的过程中,阅读《Cocos2d-JS游戏开发》这本书会非常有帮助。作者作为《保卫萝卜》的核心开发人员,将实战经验融入理论讲解,使读者能更直观地理解游戏开发流程。王哲,Cocos2d创始人,亲自为本书...
### cocos2d-iphone至cocos2d-html5移植之旅:深入解析与实践指南 #### 引言 在数字化时代,跨平台游戏开发成为了一种趋势,尤其在移动设备和网页端之间的转换变得日益频繁。《cocos2d-iphone至cocos2d-html5移植...
cocos2d-x 是一个开源的游戏开发框架,使用 C++ 语言编写,支持多平台发布,包括 iOS、Android、Windows、macOS、Linux 和 Web。cocos2d-x v3.16 是该框架的一个版本号,本文档主要介绍了该版本的安装流程以及环境...
该资源主要用于cocos2d-x中Value与json字符串的相互转换,提供从json文件读取为cocos2d::Value,cocos2d::Value写入到文件,cocos2d::Value转换为json字符串,json字符串转换为cocos2d::Value。json字符串转换成cocos...
"cocos2d-x windows vs2010 配置详解" 本文将详细介绍如何在 Windows 环境下使用 Visual Studio 2010 配置 Cocos2d-x 游戏引擎。Cocos2d-x 是一个跨平台的游戏引擎,可以在多种平台上运行,包括 Windows、Mac OS X...
在开发过程中,你可以利用Cocos2d提供的各种组件,如`CCScene`(场景)、`CCSprite`(精灵)、`CCLabel`(文本标签)等,创建游戏对象和交互逻辑。同时,别忘了Cocos2d支持事件处理,如触摸事件和键盘事件,这使得...
读者将学习如何在不同平台上配置Cocos2d-x开发环境,了解项目的目录结构和构建过程,掌握Scene、Layer、Node等核心概念。 接着,书中会详细讲解Cocos2d-x 3.x的图形绘制,包括精灵(Sprite)、批处理(Batch Node)...
《Cocos2d-x实战 JS卷》是一本深入探讨Cocos2d-x游戏开发的专著,主要聚焦于使用JavaScript语言进行游戏编程。Cocos2d-x是一个开源的游戏开发框架,广泛应用于移动设备和桌面平台,支持iOS、Android、Windows等多...
首先,我们需要了解Cocos2d-x与Spine的集成过程。在Cocos2d-x项目中,你需要将Spine的库文件导入,并按照官方文档的指引配置相应的环境。这个过程可能涉及到设置头文件路径、链接库和编译选项。对于Android平台,你...