以前就整理过,真的!对于软件开发来说,没有那么简单的,尤其是越是底层越是一个需要像样一点的产品,分析调试维护样样都不能少。
像我所在的这家公司开发的移动wifi产品,面向的是全球漫游市场。118个国家,就那么一个安卓手机一样的东西外加另外一个安卓模块。
我负责的是里面的OTA升级,虽然都是用别人现场的东西,但总体开发维护起来感觉就是闲的时候闲的要死而一旦事情来了又忙都忙不过来。
对于一个终端项目来说
第一:业务当然是要优先保证的,业务没有保证的话,公司也就没有盈利,没有盈利那还玩什么
第二:其次是安全,安全分为设备信息安全跟开发数据安全。设备信息安全就是不然别人可以随便破解设备,窃取里面的信息。OEM厂家是可以把设备端口禁止掉以防止别人刷机的,终端上公司IT部门有对应的代码保护,比如说本地不存代码,代码都放到服务器上。然后限制本地文件外泄,限制公司电脑使用U盘等措施
第三:日志抓取模块,对于那些已经卖出去了的设备。要分析定位问题的话有日志来分析是最好的,所以在软件开发时一点要做好日志的输出以及保存。像安卓的话,kmsg日志,logcat日志,还有自己添加的日志打印程序。在日志可以稳定抓取后,如果设备是联网的,最好还要设计远程抓取日志功能,这个功能是我做的哈,具体实现就是使用ftpget
第四:远程调试接口,当然这个一般不用的。但对于某些环境来说还是很有必要的。比如终端就写一个system("cmd") 来处理服务器下发的S2C命令,可以解决很多情况下的问题分析。
第五:升级,升级模块作用1.可以让产品提前3个月上市。2.可以提供后续的功能维护和bug更新,因为回收设备更新这样的事情在现在基本上是不可能了的
最近有看编程珠玑,里面写的东西真的挺好的。很多时候,如果你只可以想到一个方法时,还应该想想怎么更加优化,怎么做到资源利用最高最好。
像这几天客户返回了一台设备,严重问题,设备不断开机后自动关机。拿回来后又要保存现场又要分析问题,好累!好无聊!好烦!各种不想做了
分析模拟环境的构建,这次有客退设备,也有工厂分析不了给我们分析的设备。但大概是年后吧,公司部门里有人离职,人心涣散!对于这些繁琐的事情都没有人整,我也很烦。
而且公司装沙盒,同时电脑里跑两个加密软件我也是醉了。重装系统什么的就不说了很久以前保存的东西统统不见,还要维护两年前的项目,没有人会情愿的吧。任何东西维护两年。文档备份什么的也垃圾成什么一样,都是一些没用的东西。牢骚到此!
由于存在软件分析的需求,所以保存分析环境是必须的,一个问题出现后要保存现场,还要分析
保存现场的话有两个,
1.系统镜像问题,可能是别人刷机了,或者是系统升级出了问题出了问题。这类问题通过高通的QMSCT,QSPR,或者dd 或者用磁盘工具(9006)等可以把问题设备里的镜像抓取出来备份。
QSPR需要配置好脚步,然后用QMSCT来抓取。环境配置好后一定要记得保存,这个功能只要项目还在维护都可能要用
2.内存日志信息dump,特定版本的boot.img,不然不会进dump,保存对应的vmlinux,进行coredump分析, 还有对应的elf文件,进行t32分析,这个需要保存工程。
3.实时日志导出,还要备份一个boot.img + lk 镜像串口信息输出,查看kmsg日志
一次编好长期受用!!
重点功能保证,然后快速迭代
看别人写的东西自然有很多的借鉴作用,但是成功不能复制。
像之前看的一篇关于产品的
在一款产品从研发到最后出货的商业计划, 从cpu选择,性能 成本 供应商 寿命 信用度 可靠性来分析
但都太全面了,照搬他人的自然不错,可是啊,完全没有自己想过的东西,你要怎么表达?
想要变成自己的还是要靠自己去思考的,这样对不对?