0 0 0

App研发录—架构设计,Crash分析和竞品技术分析.pdf

继续沦落
25天前 300
我用夸克网盘分享了「App研发录—架构设计,Crash分析和竞品技术分析.pdf」,点击链接即可保存。打开「夸克APP」在线查看,支持多种文档格式转换。
App研发录:架构设计、Crash分析和竞品技术分析 作者: 包建强 出版社: 机械工业出版社 出版年: 2015-10-21 页数: 303 定价: CNY 59.00 装帧: 平装 ISBN: 9787111516385

内容简介

本书是作者多年App开发的经验总结,从App架构的角度,重点总结了Android应用开发中常见的实用技巧和疑难问题解决方法,为打造高质量App提供有价值的实践指导,迅速提升应用开发能力和解决疑难问题的能力。本书涉及的问题有:Android基础建设、网络底层框架设计、缓存、网络流量优化、制定编程规范、模块化拆分、Crash异常的捕获与分析、持续集成、代码混淆、App竞品技术分析、项目管理和团队建设等。本书以“问题/解决方案”的形式给出疑难问题的解决方案,同时结合示例代码,深入剖析这些实用的编程技巧和模式,旨在帮助移动开发人员和管理人员提高编程效率,改进代码质量,打造高质量的App。

作者简介

包建强,毕业于复旦大学数学系。先后在多家互联网公司担任无线部门技术总监。在And roid、iOS、WP等多门无线技术中跋涉过,在App的项目管理上也有多年的实践经验。他是微软2008年MVP。曾经翻译出版《.NET探秘MSIL权威指南》,并有一个坚持写了6年的技术博客:http://jax.cnblOgs.com/。

网友热评

PC喵鹏桑: 一线技术人员的总结与分享, 可以学习与借鉴的很多. 特别是团队组织协调方面. Jhuster: 今年看过的最好的一本Android/移动开发相关的技术图书。 西山: 1. 本书可以让你少趟一些坑。 2. 然而书中的“我觉得”有点多啊,看着信心不足。 3. 可见写博客是多么重要,那么多面试者总是说自己记了多少笔记,鬼才信呢~

图书目录

Contents?目录 序一 序二 序三 前言 第一部分高效App框架设计与重构 第1章重构,夜未眠3 1.1重新规划Android项目结构3 1.2为Activity定义新的生命周期5 1.3统一事件编程模型7 1.4实体化编程9 1.4.1在网络请求中使用实体9 1.4.2实体生成器11 1.4.3在页面跳转中使用实体12 1.5Adapter模板14 1.6类型安全转换函数16 1.7本章小结17 第2章Android网络底层框架设计19 2.1网络低层封装19 2.1.1网络请求的格式19 2.1.2AsyncTask的使用和缺点21 2.1.3使用原生的ThreadPoolExecutor+Runnable+Handler24 2.1.4网络底层的一些优化工作28 2.2App数据缓存设计32 2.2.1数据缓存策略32 2.2.2强制更新35 2.3MockService36 2.4用户登录38 2.4.1登录成功后的各种场景39 2.4.2自动登录41 2.4.3Cookie过期的统一处理44 2.4.4防止黑客刷库45 2.5HTTP头中的奥妙46 2.5.1HTTP请求46 2.5.2时间校准48 2.5.3开启gzip压缩51 2.6本章小结52 第3章Android经典场景设计53 3.1App图片缓存设计53 3.1.1ImageLoader设计原理53 3.1.2ImageLoader的使用54 3.1.3ImageLoader优化55 3.1.4图片加载利器Fresco56 3.2对网络流量进行优化58 3.2.1通信层面的优化58 3.2.2图片策略优化59 3.3城市列表的设计61 3.3.1城市列表数据61 3.3.2城市列表数据的增量更新机制63 3.4App与HTML5的交互64 3.4.1App操作HTML5页面的方法64 3.4.2HTML5页面操作App页面的方法65 3.4.3App和HTML5之间定义跳转协议66 3.4.4在App中内置HTML5页面67 3.4.5灵活切换Native和HTML5页面的策略68 3.4.6页面分发器68 3.5消灭全局变量70 3.5.1问题的发现70 3.5.2把数据作为Intent的参数传递71 3.5.3把全局变量序列化到本地71 3.5.4序列化的缺点75 3.5.5如果Activity也被销毁了呢79 3.5.6如何看待SharedPreferences80 3.5.7User是唯一例外的全局变量80 3.6本章小结81 第4章Android命名规范和编码规范83 4.1Android命名规范83 4.2Android编码规范86 4.3统一代码格式89 4.4本章小结90 第二部分App开发中的高级技巧 第5章Crash异常收集与统计93 5.1异常收集93 5.2异常收集与统计96 5.2.1人工统计线上Crash数据96 5.2.2第一个线上Crash报表:Crash分类97 5.2.3第二个线上Crash报表:Crash去重99 5.2.4线上Crash的其他分析工作104 5.3本章小结105 第6章Crash异常分析107 6.1Java语法相关的异常108 6.1.1空指针108 6.1.2角标越界109 6.1.3试图调用一个空对象的方法110 6.1.4类型转换异常110 6.1.5数字转换错误111 6.1.6声明数组时长度为-1111 6.1.7遍历集合同时删除其中元素112 6.1.8比较器使用不当114 6.1.9当除数为0115 6.1.10不能随便使用的asList116 6.1.11又有类找不到了(一):ClassNotFoundException116 6.1.12又有类找不到了(二):NoClassDefFoundError117 6.2Activity相关的异常117 6.2.1找不到Activity117 6.2.2不能实例化Activity118 6.2.3找不到Service118 6.2.4不能启动BroadcastReceiver119 6.2.5startActivityForResult不能回传119 6.2.6猴急的Fragment120 6.3序列化相关的异常120 6.3.1实体对象不支持序列化121 6.3.2序列化时未指定ClassLoader121 6.3.3反序列化时发现类找不到:被ProGuard混淆导致的崩溃122 6.3.4反序列化时发现类找不到:传入畸形数据123 6.3.5反序列化时出错123 6.4列表相关的异常123 6.4.1Adapter数据源变化但是没通知ListView124 6.4.2ListView滚动时点击刷新按钮后崩溃125 6.4.3AbsListView的obtainView返回空指针125 6.4.4Adapter数据源变化但是没调用notifyDataSetChanged126 6.5窗体相关的异常126 6.5.1窗口句柄泄露126 6.5.2Viewnotattachedtowindowmanager128 6.5.3窗体在不恰当的时候获取了焦点129 6.5.4tokennullisnotforanapplication130 6.5.5permissiondeniedforthiswindowtype131 6.5.6isyouractivityrunning131 6.5.7添加窗体失败133 6.5.8AlertDialog.resolveDialogTheme134 6.5.9Thespecif?iedchildalreadyhasaparent136 6.5.10子线程不能修改UI137 6.5.11不能在子线程操作AlertDialog和Toast141 6.6资源相关的异常143 6.6.1Resources$NotFoundException143 6.6.2StackOverf?iowError144 6.6.3Unsatisf?iedLinkError144 6.6.4Inf?iateException之FileNotFoundException145 6.6.5Inf?iateException之缺少构造器145 6.6.6Inf?iateException之style与android:textStyle的区别146 6.6.7TransactionTooLargeException147 6.7系统碎片化相关的异常147 6.7.1NoSuchMethodError147 6.7.2RemoteViews148 6.7.3pointerIndexoutofrange149 6.7.4SecurityException之一:Intent中图片太大150 6.7.5SecurityException之二:动态加载其他apk的activity151 6.7.6SecurityException之三:Nopermissiontomodifythread151 6.7.7view的getDrawingCache()返回null152 6.7.8DeadObjectException153 6.7.9Android2.1不支持SSL153 6.7.10ViewFlipper引发的血案153 6.7.11ActivityNotFoundException154 6.7.12Android2.2不支持xlargeScreens154 6.7.13Packagemanagerhasdied155 6.7.14SpannableString与富文本字符串155 6.7.15CannotperformthisactionafteronSaveInstanceState156 6.7.16ServiceIntentmustbeexplicit157 6.8SQLite相关的异常157 6.8.1Notransactionisactive158 6.8.2忘记关闭Cursor158 6.8.3数据库被锁定159 6.8.4试图再打开已经关闭的对象159 6.8.5文件加密了或无数据库159 6.8.6WebView中SQLLite缓存导致的崩溃160 6.8.7磁盘读写错误161 6.8.8android_metadata表不存在161 6.8.9android_metadata表中的locale字段162 6.8.10数据库或磁盘满了162 6.9不明觉厉的异常162 6.9.1内存溢出163 6.9.2VerifyFailed163 6.10其他情况的异常163 6.10.1TimeoutException164 6.10.2JSON解析异常164 6.10.3JSONArray在初始化时为空164 6.10.4第三方SDK抛出的Crash165 6.10.5两个不同类型的View有相同的id165 6.10.6LayoutInf?iater.from().inf?iate()使用不当导致的崩溃166 6.10.7ViewGroup中的玄机166 6.10.8Monkey点击过快导致的崩溃167 6.10.9图片缩放很多倍168 6.10.10图片宽高为0168 6.10.11不能重复添加组件168 6.11本章小结169 第7章ProGuard技术详解171 7.1ProGuard简介171 7.2ProGuard工作原理172 7.3如何写一个ProGuard文件172 7.3.1基本混淆172 7.3.2针对App的量身定制175 7.3.3针对第三方jar包的解决方案177 7.4其他注意事项178 7.5本章小结179 第8章持续集成181 8.1版本管理策略181 8.1.1三种版本管理策略181 8.1.2特殊情况的版本管理策略183 8.2使用Ant脚本打包184 8.2.1Android打包流程184 8.2.2打包时的注意事项189 8.3Monkey包的生成190 8.4自动打包191 8.4.1安装和配置各种软件192 8.4.2准备Ant打包脚本193 8.4.3配置CCNET193 8.4.4搭建IIS站点下载apk包193 8.4.5自动打包流程小结193 8.5批量打渠道包194 8.5.1基于apk包批量生成渠道包194 8.5.2基于代码批量生成渠道包195 8.6Android发版流程197 8.7分类打渠道包198 8.7.1分门别类生成渠道包198 8.7.2批量上传apk的两种方式199 8.8灵活切换服务器199 8.9单元测试201 8.10本章小结203 第9章App竞品技术分析205 9.1竞品分析概述205 9.1.1App竞品定义205 9.1.2竞品分析要研究的几个方向206 9.1.3竞品分析与拿来主义206 9.2App安装包的结构207 9.2.1Android安装包的结构207 9.2.2iOS安装包的结构208 9.3竞品技术一瞥:开机速度208 9.4竞品技术二瞥:HTML5页面的打开速度209 9.4.1把HTML5页面嵌入到Zip包中209 9.4.2Zip包的增量更新机制209 9.4.3制作Zip增量包210 9.4.4使用WebView预先加载HTML5并缓存到本地211 9.5竞品技术三瞥:安装包的大小211 9.5.1从几件小事说起211 9.5.2安装包为什么那么大212 9.5.3png和jpg的区别及使用场景212 9.5.4Splash、引导图和背景图213 9.5.5iOS的1倍图、2倍图和3倍图213 9.5.6在iOS中进行图片拉伸和旋转214 9.5.7使用XML配置动画214 9.5.8iOS使用storyboard还是xib215 9.5.9字体文件的学问215 9.5.10表情图片打包下载217 9.5.11清除未使用图片218 9.5.12Proguard不只是用来混淆的218 9.5.13在iOS中使用pdf格式的图片218 9.5.14iOS的包永远比Android包体积大吗219 9.5.15从代码层面减少iOS包的体积220 9.6竞品技术四瞥:性能优化220 9.6.1App自动选取最佳服务器的策略220 9.6.2使用TCP+Protobuf222 9.7竞品技术五瞥:数据采集工具223 9.7.1页面跳转器223 9.7.2打点统计226 9.7.3ABTest230 9.8竞品技术六瞥:热修补232 9.8.1Native页面和HTML5页面的相互切换232 9.8.2在iOS中使用脚本编程233 9.9竞品技术七瞥:曲径通幽237 9.9.1一切皆可配置237 9.9.2App后门238 9.9.3Android包中META-INF目录的妙用239 9.9.4classes.dex的拆与合241 9.10竞品技术八瞥:模块化拆分242 9.10.1iOS资源拆分与模块化242 9.10.2Android模块化拆分243 9.11竞品技术九瞥:第三方SDK244 9.11.1HTML5篇244 9.11.2iOS篇245 9.11.3Android篇245 9.11.4其他246 9.12竞品技术十瞥:版本策略与App彩蛋246 9.12.1版本策略246 9.12.2App彩蛋246 9.13本章小结247 第三部分项目管理和团队建设 第10章项目管理决定了开发速度251 10.1项目管理中的三驾马车251 10.1.1为什么不能没有测试团队252 10.1.2产品经理应做的事253 10.1.3开发人员的喜怒哀乐254 10.1.4项目经理的职责254 10.2优化团队结构,让敏捷流程跑得更快255 10.2.1平行模式还是垂直模式255 10.2.2让HTML5站点和MobileAPI的进度提前一个迭代256 10.2.3如何进行模块化分工256 10.3App敏捷开发流程257 10.3.1四周时间的开发流程257 10.3.2两周时间的开发流程261 10.3.3一周时间的开发流程262 10.3.4即时更新策略263 10.4项目经理的百宝箱263 10.4.1项目经理的任务评估表263 10.4.2贴小纸条的艺术264 10.4.3敏捷迭代中的会议纪要265 10.4.4开站例会的技巧266 10.4.5如何确保项目不延期268 10.4.6迭代风险管理268 10.5迭代中的测试工作269 10.5.1冒烟测试269 10.5.2探索性测试271 10.5.3Monkey测试271 10.6高层对敏捷流程的干预272 10.6.1重构与产品需求的平衡272 10.6.2提高效率,拒绝6×12273 10.6.3无线部门的座位安排274 10.6.4静时276 10.7本章小结277 第11章日常工作中的问题解决279 11.1使用二分法排查问题279 11.2找到能稳定重现问题的人281 11.3小流量包282 11.4建立全国范围的测试群283 11.5如何与用户沟通284 11.6日志与App性能286 11.7从新人入职作业入手286 11.8本章小结287 第12章无线团队的组建和管理289 12.1从面试谈起289 12.1.1如今是卖方市场289 12.1.2名校论不适用无线开发290 12.1.3如何搞到更多的简历290 12.1.4面试时需要考察的几个点291 12.2无线团队必备的10份文档292 12.2.1新员工入职文档292 12.2.2加强版新员工入职文档292 12.2.3测试机清单293 12.2.4模块分工表293 12.2.5页面逻辑流程文档293 12.2.6MobileAPI接口分布图295 12.2.7版本管理策略文档295 12.2.8框架设计文档295 12.2.9发版流程文档296 12.2.10App启动流程图296 12.3一对一沟通297 12.4每周技术分享298 12.5代码评审299 12.6对Android团队Leader的定位300 12.7Android应用开发所需技能自我评测301 12.8App开发人员的学习路线302 12.9本章小结303

App研发录—架构设计,Crash分析和竞品技术分析.pdf"网盘下载"

版权说明

1、本站不保存、不存储任何实质资源,以上二维码指向为网盘资源链接,其内容归对应版权方所有
2、如有侵犯版权的情况,请点击下面举报/反馈按钮反馈或发送邮件[email protected]投诉说明情况
3、我们核实后将第一时间删除相关页面内容,谢谢理解和配合

这些人下载过 (12)
  • 落影执迷离
  • 拉粑粑的小仙女
  • 烈酒乱人心
  • 重度偏执者
  • 那菇凉闷骚
  • 你笑起来真美
  • 折腾
  • 荆棘原野
  • 指尖划相思
  • 与我成陌路定让你万劫不复
  • 近情情怯
  • 是否拥有过
最新回复 (0)

    暂无评论

请先登录后发表评论!

返回
请先登录后发表评论!