發表於2024-11-05
《App研發錄:架構設計、Crash分析和競品技術分析》由業界多位移動團隊技術負責人聯袂推薦,為打造高質量App提供瞭有價值的實踐指導。
《App研發錄:架構設計、Crash分析和競品技術分析》中總結瞭80多個Crash的分析與處理,是迄今為止完整的Android異常分析資料。
剖析瞭國內上百款知名App的前沿技術實現,競品技術分析白皮書。
《App研發錄:架構設計、Crash分析和競品技術分析》是作者多年App開發的經驗總結,重點介紹Android應用開發中常見的實用技巧和疑難問題解決方法,為打造高質量App提供瞭有價值的實踐指導,可幫助讀者迅速提升應用開發能力和解決疑難問題的能力。本書涉及的主題有:Android項目的重構、網絡底層框架設計、經典場景設計、命名規範和編程規範、Crash的捕獲與分析、持續集成、代碼混淆、App競品技術分析、移動項目管理和團隊建設等。本書內容豐富,文風幽默,不僅給齣疑難問題的解決方案,而且結閤示例代碼深入剖析這些問題的實質和編程技巧,旨在幫助移動開發人員和管理人員提高編程效率,改進代碼質量,打造高質量的App。
包建強,畢業於復旦大學數學係。先後在多傢互聯網公司擔任無綫部門技術總監,在Android、iOS、WP等多門無綫技術中跋涉過 ,在App的項目管理上也有多年的實踐經驗。他是微軟2008年MVP,並有一個堅持寫瞭6年的技術博客。
★為瞭寫這本書,作者分析瞭市場上有名的上百款App,能夠費這麼多心血去研究技術實現的人,在我看來至少是一個充滿好奇心的人。正是這種擁有好奇心並執著探索的人,纔推動瞭近百年來的科學發展。
—— 奇虎360董事長 周鴻禕
★本書與其他書籍完全不同,純從實戰齣發,在官方文檔之上,闡述實際開發中應該掌握的那些來之不易的經驗,其中多是過來人踩過坑、吃過虧纔能總結齣來的東西。不少章節類似於Effective係列名著的風格,有很高的價值。
—— 美團技術學院院長,CSDN和《程序員》雜誌前總編 劉江
★整本書並不是從枯燥的文檔中提煉而來,而是真切地從一個互聯網從業者的親身經曆和交流中得來。作為需要時刻緊跟移動浪潮的App開發人員,這本書是值得一讀的好書。
—— 大眾點評首席架構師 屠毅敏
★這本書針對有經驗的Android開發者,你會發現很多場景都是曾經或即將帶給你疑問的,作者針對Android開發過程中一個個具體問題給齣瞭解決方案,非常實用。特彆是異常處理的部分,這是我首次發現有這麼完整地介紹Android異常的書籍,非常有學習價值。
—— 騰訊無綫研發工具總監 歐陽駿
★這本書在老包的詼諧筆法之下凝聚瞭他多年來奮戰在一綫的研發和管理經驗,具備很強的實戰參考意義,並非一般的App開發入門或者泛泛之談。從菜鳥成長為大拿如果有捷徑的話,莫過於經常與高手過招。在開發HTML的Web時代,前端開發人員很喜歡用右鍵點擊網頁查看源代碼的方式來學習網站的開發思路,後來從中提煉成瞭很多瀏覽器的插件,比如Firefox的Firebug等。進入App開發時代後,如何從高手的作品中進行類似的學習呢?老包在第9章App競品技術分析裏給齣瞭相當精彩的解決方案。整本書的結構清晰,從為痛苦的考古重構講起,到Crash異常等的分析處理,再到持續集成與團隊協作的App開發項目管理,包含每個小工在成長之路上都可能碰到的問題。相信您閱讀之後必定會有所收獲。
—— 途牛旅遊網無綫中心總經理 陳世宏
序一
序二
序三
前言
第一部分 高效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.5 Adapter模闆 14
1.6 類型安全轉換函數 16
1.7 本章小結 17
第2章 Android網絡底層框架設計 19
2.1 網絡低層封裝 19
2.1.1 網絡請求的格式 19
2.1.2 AsyncTask的使用和缺點 21
2.1.3 使用原生的ThreadPoolExecutor + Runnable + Handler 24
2.1.4 網絡底層的一些優化工作 28
2.2 App數據緩存設計 32
2.2.1 數據緩存策略 32
2.2.2 強製更新 35
2.3 MockService 36
2.4 用戶登錄 38
2.4.1 登錄成功後的各種場景 39
2.4.2 自動登錄 41
2.4.3 Cookie過期的統一處理 44
2.4.4 防止黑客刷庫 45
2.5 HTTP頭中的奧妙 46
2.5.1 HTTP請求 46
2.5.2 時間校準 48
2.5.3 開啓gzip壓縮 51
2.6 本章小結 52
第3章 Android經典場景設計 53
3.1 App圖片緩存設計 53
3.1.1 ImageLoader設計原理 53
3.1.2 ImageLoader的使用 54
3.1.3 ImageLoader優化 55
3.1.4 圖片加載利器Fresco 56
3.2 對網絡流量進行優化 58
3.2.1 通信層麵的優化 58
3.2.2 圖片策略優化 59
3.3 城市列錶的設計 61
3.3.1 城市列錶數據 61
3.3.2 城市列錶數據的增量更新機製 63
3.4 App與HTML5的交互 64
3.4.1 App操作HTML5頁麵的方法 64
3.4.2 HTML5頁麵操作App頁麵的方法 65
3.4.3 App和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 如何看待SharedPreferences 80
3.5.7 User是唯一例外的全局變量 80
3.6 本章小結 81
第4章 Android命名規範和編碼規範 83
4.1 Android命名規範 83
4.2 Android編碼規範 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.1 Java語法相關的異常 108
6.1.1 空指針 108
6.1.2 角標越界 109
6.1.3 試圖調用一個空對象的方法 110
6.1.4 類型轉換異常 110
6.1.5 數字轉換錯誤 111
6.1.6 聲明數組時長度為-1 111
6.1.7 遍曆集閤同時刪除其中元素 112
6.1.8 比較器使用不當 114
6.1.9 當除數為0 115
6.1.10 不能隨便使用的asList 116
6.1.11 又有類找不到瞭(一):ClassNotFoundException 116
6.1.12 又有類找不到瞭(二):NoClassDefFoundError 117
6.2 Activity相關的異常 117
6.2.1 找不到Activity 117
6.2.2 不能實例化Activity 118
6.2.3 找不到Service 118
6.2.4 不能啓動BroadcastReceiver 119
6.2.5 startActivityForResult不能迴傳 119
6.2.6 猴急的Fragment 120
6.3 序列化相關的異常 120
6.3.1 實體對象不支持序列化 121
6.3.2 序列化時未指定ClassLoader 121
6.3.3 反序列化時發現類找不到:被ProGuard混淆導緻的崩潰 122
6.3.4 反序列化時發現類找不到:傳入畸形數據 123
6.3.5 反序列化時齣錯 123
6.4 列錶相關的異常 123
6.4.1 Adapter數據源變化但是沒通知ListView 124
6.4.2 ListView滾動時點擊刷新按鈕後崩潰 125
6.4.3 AbsListView的obtainView返迴空指針 125
6.4.4 Adapter數據源變化但是沒調用notifyDataSetChanged 126
6.5 窗體相關的異常 126
6.5.1 窗口句柄泄露 126
6.5.2 View not attached to window manager 128
6.5.3 窗體在不恰當的時候獲取瞭焦點 129
6.5.4 token null is not for an application 130
6.5.5 permission denied for this window type 131
6.5.6 is your activity running 131
6.5.7 添加窗體失敗 133
6.5.8 AlertDialog.resolveDialogTheme 134
6.5.9 The specif?ied child already has a parent 136
6.5.10 子綫程不能修改UI 137
6.5.11 不能在子綫程操作AlertDialog和Toast 141
6.6 資源相關的異常 143
6.6.1 Resources$NotFoundException 143
6.6.2 StackOverf?iowError 144
6.6.3 Unsatisf?iedLinkError 144
6.6.4 Inf?iateException之FileNotFoundException 145
6.6.5 Inf?iateException之缺少構造器 145
6.6.6 Inf?iateException之style與android:textStyle的區彆 146
6.6.7 TransactionTooLargeException 147
6.7 係統碎片化相關的異常 147
6.7.1 NoSuchMethodError 147
6.7.2 RemoteViews 148
6.7.3 pointerIndex out of range 149
6.7.4 SecurityException之一:Intent中圖片太大 150
6.7.5 SecurityException之二:動態加載其他apk的activity 151
6.7.6 SecurityException之三:No permission to modify thread 151
6.7.7 view的getDrawingCache()返迴null 152
6.7.8 DeadObjectException 153
6.7.9 Android 2.1不支持SSL 153
6.7.10 ViewFlipper引發的血案 153
6.7.11 ActivityNotFoundException 154
6.7.12 Android 2.2不支持xlargeScreens 154
6.7.13 Package manager has died 155
6.7.14 SpannableString與富文本字符串 155
6.7.15 Can not perform this action after onSaveInstanceState 156
6.7.16 Service Intent must be explicit 157
6.8 SQLite相關的異常 157
6.8.1 No transaction is active 158
6.8.2 忘記關閉Cursor 158
6.8.3 數據庫被鎖定 159
6.8.4 試圖再打開已經關閉的對象 159
6.8.5 文件加密瞭或無數據庫 159
6.8.6 WebView中SQLLite緩存導緻的崩潰 160
6.8.7 磁盤讀寫錯誤 161
6.8.8 android_metadata錶不存在 161
6.8.9 android_metadata錶中的locale字段 162
6.8.10 數據庫或磁盤滿瞭 162
6.9 不明覺厲的異常 162
6.9.1 內存溢齣 163
6.9.2 Verify Failed 163
6.10 其他情況的異常 163
6.10.1 TimeoutException 164
6.10.2 JSON解析異常 164
6.10.3 JSONArray在初始化時為空 164
6.10.4 第三方SDK拋齣的Crash 165
6.10.5 兩個不同類型的View有相同的id 165
6.10.6 LayoutInf?iater.from().inf?iate()使用不當導緻的崩潰 166
6.10.7 ViewGroup中的玄機 166
6.10.8 Monkey點擊過快導緻的崩潰 167
6.10.9 圖片縮放很多倍 168
6.10.10 圖片寬高為0 168
6.10.11 不能重復添加組件 168
6.11 本章小結 169
第7章 ProGuard技術詳解 171
7.1 ProGuard簡介 171
7.2 ProGuard工作原理 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.1 Android打包流程 184
8.2.2 打包時的注意事項 189
8.3 Monkey包的生成 190
8.4 自動打包 191
8.4.1 安裝和配置各種軟件 192
8.4.2 準備Ant打包腳本 193
8.4.3 配置CCNET 193
8.4.4 搭建IIS站點下載apk包 193
8.4.5 自動打包流程小結 193
8.5 批量打渠道包 194
8.5.1 基於apk包批量生成渠道包 194
8.5.2 基於代碼批量生成渠道包 195
8.6 Android發版流程 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.1 App競品定義 205
9.1.2 競品分析要研究的幾個方嚮 206
9.1.3 競品分析與拿來主義 206
9.2 App安裝包的結構 207
9.2.1 Android安裝包的結構 207
9.2.2 iOS安裝包的結構 208
9.3 競品技術一瞥:開機速度 208
9.4 競品技術二瞥:HTML5頁麵的打開速度 209
9.4.1 把HTML5頁麵嵌入到Zip包中 209
9.4.2 Zip包的增量更新機製 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.3 png和jpg的區彆及使用場景 212
9.5.4 Splash、引導圖和背景圖 213
9.5.5 iOS的1倍圖、2倍圖和3倍圖 213
9.5.6 在iOS中進行圖片拉伸和鏇轉 214
9.5.7 使用XML配置動畫 214
9.5.8 iOS使用storyboard還是xib 215
9.5.9 字體文件的學問 215
9.5.10 錶情圖片打包下載 217
9.5.11 清除未使用圖片 218
9.5.12 Proguard不隻是用來混淆的 218
9.5.13 在iOS中使用pdf格式的圖片 218
9.5.14 iOS的包永遠比Android包體積大嗎 219
9.5.15 從代碼層麵減少iOS包的體積 220
9.6 競品技術四瞥:性能優化 220
App研發錄:架構設計、Crash分析和競品技術分析 下載 mobi epub pdf txt 電子書 格式
App研發錄:架構設計、Crash分析和競品技術分析 下載 mobi pdf epub txt 電子書 格式 2024
App研發錄:架構設計、Crash分析和競品技術分析 下載 mobi epub pdf 電子書這次活動這書還算值,就是那券為什麼這麼難搶,誰能告訴我
評分書很好,還沒看完
評分比較實用
評分不錯
評分值得一讀
評分非常好快遞太快瞭!!!!!!!!!!!?
評分ok需要瞭解更好
評分一搬
評分這本書給瞭我非常多的氣勢,我因此能完成瞭,對於app的開發。
App研發錄:架構設計、Crash分析和競品技術分析 mobi epub pdf txt 電子書 格式下載 2024