摘要:
如果你去4S店修车,给小工说你的车哪天怎么样怎么样了,小工有可能会立即搬出一台电脑,插上行车电脑把日志打出来,然后告诉你你的车发生过什么故障。汽车尚且如此,何况移动互联网应用呢。本文第一篇:经营你的iOS应用日志(一):开始编写日志组件言归正传。开发iOS应用,解决Crash问题始终是一个难题。Crash分为两种,一种是由EXC_BAD_ACCESS引起的,原因是访问了不属于本进程的内存地址,有可能是访问已被释放的内存;另一种是未被捕获的Objective-C异常(NSException),导致程序向自身发送了SIGABRT信号而崩溃。其实对于未捕获的Objective-C异常,我们是有办法将 阅读全文
摘要:
对于那些做后端开发的工程师来说,看LOG解Bug应该是理所当然的事,但我接触到的移动应用开发的工程师里面,很多人并没有这个意识,查Bug时总是一遍一遍的试图重现,试图调试,特别是对一些不太容易重现的Bug经常焦头烂额。而且iOS的异常机制比较复杂,Objective-C的语言驾驭也需要一定的功力,做出来的应用有时候挺容易产生崩溃闪退。一遍一遍的用XCode取应用崩溃记录、解析符号,通常不胜其烦,有时还对着解析出来的调用栈发呆,因为程序当时的内部状态常常难以看明白,只能去猜测。好了,先从一个自制的日志组件开始吧。我们需要一个专门的后台线程去输出日志,线程根函数如下:- ( void ) thre 阅读全文
摘要:
1、HTTP应答码一律设计为200 OK,不许用别的。(部分脑残的代理服务器会帮你改HTTP应答码。如遵守此规则,客户端对于非200 OK应答码可直接认定是网络异常,进行重试逻辑或放弃请求。真正的业务应答码在消息体中找)2、Content-Type永远只写plain/text、application... 阅读全文
摘要:
Android是一个相当开放的平台,允许我们开发常驻后台运行的应用程序,依靠TCP长连接接受服务器的消息推送,但也因此在电量消耗方面广遭诟病。如果开发者,特别是类IM应用的开发者自己还不去了解Android底层的机制,没准搞出来的应用就变成待机电池杀手了。Android手机有两个处理器,一个叫Application Processor(AP),一个叫Baseband Processor(BP)。AP是ARM架构的处理器,用于运行Linux+Android系统;BP用于运行实时操作系统(RTOS),通讯协议栈运行于BP的RTOS之上。非通话时间,BP的能耗基本上在5mA左右,而AP只要处于非休眠 阅读全文