Android高效進階:從數據到AI ( 簡體 字) |
作者:胡強 | 類別:1. -> 程式設計 -> 手機程式 -> Android 2. -> 程式設計 -> 人工智慧 |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 51733 詢問書籍請說出此書號!【有庫存】 NT售價: 395 元 |
出版日:9/1/2019 |
頁數:292 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121372063 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:推薦序一
胡強是我的好友,我們相識于5年前的一次業務合作,短暫的接觸后我就深深地感受到了胡強的不簡單:深厚的技術功底、極致的業務思維和謙遜的工作態度。當時我就認定這個小伙子一定會有所成就、大放異彩。
胡強當前所在的業務領域是App發行,隨著硬核手機廠商的日益崛起,以及各大超級App的流量壟斷,第三方應用商店可謂勉強在夾縫中求生存。在巨大的競爭壓力下,胡強帶領的Android研發團隊沒有輕言放棄,反倒韌性十足,積極探索,通過對各種渠道技術的創新為業務賦能,成功走出了一條技術驅動業務增長的實踐之路,其中有不少核心技術也被阿里集團內多個業務單元廣為采用并深受好評。
聽聞胡強想要把他這幾年在Android領域的技術沉淀和業務實踐經驗整理成書時,我內心的敬佩和欣喜之情油然而生,敬佩于胡強的分享精神,欣喜于好友的心愿得償。同時,我也為廣大Android研發人員感到開心。Android發展至今已非常成熟,相關書籍可謂琳瑯滿目,但講解技術創新和應用實踐的好書卻鳳毛麟角,這本書就是這樣的一本好書,它將注定如胡強一般與眾不同。本書內容圍繞技術進階和業務實踐展開,涵蓋了移動數據技術、基礎工具的建設、移動混合前端、效能開發、安全攻防和移動AI的落地等多個實用的進階主題,干貨滿滿,是作者厚積薄發的心血之作。這本書不是Android入門書籍,需要讀者具備一定的Android開發基礎和工程經驗,否則讀起來會比較吃力,且難以體會本書的妙處所在。但對于想成長為高級或資深Android工程師的朋友來說,書中的知識都是非常有用、值得深究的。
最后,希望各位讀者能夠從此書獲益,接觸到一些工作中未曾了解或思考過的知識點,為各位的技術進階帶來助益和啟發。更進一步,希望讀者能夠舉一反三,學習作者的鉆研精神和創新思維,并在工作中積極實踐。
阿里游戲大數據部門前技術負責人,高級技術專家(P8)
飛美網絡CTO
賀永明
推薦序二
與強哥在阿里巴巴共事多年,他是一個讓我敬佩的朋友。在技術上,他不僅進步神速,精于鉆研,對Android底層實現及背后理念理解得很透徹,而且善于思考,能從大量的實戰經驗中總結、提煉出最本質、最核心的知識和技能。另外,他作為團隊的負責人,在阿里巴巴的工作相當繁重,但還能利用有限的業余時間使本書成型,其背后的付出令人欽佩。
本書內容全面,偏實戰經驗和進階技能,其中不僅包含了Android開發工程構建體系的知識、數據驅動理念和效能進階,還包含了工具類應用的基礎技術和設施打造等內容。更進一步地,本書還對移動端開發目前特別火熱的技術方向進行了探索,比如,書中對容器技術、大前端技術、AI技術等都有深入闡述。此外,在安全攻防技術和設計模式方面,作者也積累了非常豐富的經驗,這些內容也在本書中有所呈現。
本書凝聚了作者大量實戰經驗的結晶,書中不僅有非常多深入且接地氣的技術內容,而且有作者多年在“大廠”帶團隊摸爬滾打、千錘百煉出來的對于移動端技術走向的深入思考和展望。無論對初入職場的新人,還是對有較多行業經驗但遇到發展瓶頸及困惑,期望進一步突破的開發者來說,本書都值得一讀。通過本書讀者不僅可以學習一些新的知識和技能,更重要的是還能領悟到作者對技術的極致追求精神和思維方式。
阿里巴巴資深無線技術專家(P9)
阿里巴巴自研內核負責人
李英各
前言
2008年,Google在I/O大會上發布了Android 1.0版本,到現在已經過去了十多個年頭,當前市面上Android的主流版本是Android P(9.0),而Android Q(10.0)很快也將全面鋪開。目前,無論在國際市場還是國內市場上,Android都是移動端操作系統的絕對霸主。據統計,目前Android手機的市場份額已經超過了手機整體市場份額的90%。Android能夠迅猛發展,除了得益于其成熟的生態,更是因為其具有能夠吸引用戶的優良性能表現。Android的發展也大大帶動了國內移動互聯網行業的發展,每天都有新的App產生,國內的IT行業發展也走在了時代前列。
當前市面上講解Android技術的書籍特別多,從基本的語法應用到深層的內核原理都有,其中不乏經典圖書,但介紹Android進階技術(尤其是結合應用實踐)的圖書并不是很多。而本書重點講解了Android平臺下的各項進階技術及其應用實踐,希望本書能讓具備一定基礎的讀者更深入地了解Android的進階技術,同時通過實際案例進行理解。在移動場景下,未來的技術必然是朝精細化、無界化和智能化方向發展的,因此我決定以Android為引,將自己多年的無線端從業技術經驗進行總結,編寫為本書。
內容導讀
本書主要以移動數據技術、工具效能技術、混合前端技術、AI技術、移動安全攻防技術和設計模式為主來講解Android平臺下的高效移動技術進階。
第1章 Android數據技術:任何App的開發一定是數據先行,數據指導工作的,本章主要從數據采集、數據綁定、數據存儲和前端埋點等方面來講解Android平臺下的數據技術。
第2章 Android下的工具基建進階:主要從下載技術、沉浸式交互、圖片加載框架、進程、文件系統掃描和前置通道等方面詳解Android下的工具基建進階技術。這些工具技術雖然看似普通,但真正用好它們卻需要對Android有很深入的了解。
第3章 Android下的效能進階:主要從App的自動化性能監測、真機檢測系統和APK信息一站式修改等方面來講解Android平臺下的效能進階。在App發展到一定階段后,必然需要進行效能進階,本章詳細說明了我們常見的性能監測、真機檢測技術以及App修改。
第4章 Android工具應用進階:主要從Android工具應用層面,以游戲加速器、近場傳輸、微信清理和Google安裝器為例來說明與工具應用進階相關的技術。要開發這些應用,開發者不僅需要有過硬的Android技術,還需要有對相關業務的深入理解。
第5章 Android工程構建進階:主要從工程構建方面來講解與Android工程相關的構建技術,如我們常見的多渠道自動打包和自動定制化構建等。
第6章 移動場景下的容器技術:主要從幾種不同的業界方案(如MoveToDex、MultiDex等)來講解Android平臺容器化技術的發展,以及Android原生容器化技術的發展。
第7章 移動混合前端技術:主要講解大前端技術,分別從H5、React Native/Weex和Flutter等方面來展開講解。大前端技術發展至今,國內、國外都有不同的解決方案,但本質上都是圍繞效率和體驗發展的。
第8章 移動場景下的AI技術:主要講解移動場景下的AI技術發展,對業界常用的移動AI框架(如Caffe2和TensorFlow Lite)進行了比較說明,同時還對其具體應用實踐進行了講解。
第9章 移動場景下的安全攻防技術:主要講解移動場景下的安全攻防技術,分別從靜態分析和動態分析兩個角度來講解如何進行安全攻防。
第10章 Android平臺下的設計模式進階:主要從SOLID設計原則、并行程序設計模式,以及設計模式在Android源碼中的應用等方面來講解設計模式在移動場景下的進階與應用實踐。
要想對書中所述的內容有深刻的認識,讀者需要具備一定的Android技術基礎和應用層業務經驗。本書主要針對Android進階技術與應用實踐,不會對相關技術原理做過多的解讀,因此若讀者還不具備這些知識的話,建議先打好基礎后再閱讀本書。
目標讀者
移動應用開發者、Android系統開發人員、Android系統安全工程師,以及Android領域的移動技術負責人。
本書約定
為了使書中講述的內容更容易理解,本書做了如下約定。
?本書在講解部分內容時,可能會對Android系統源碼加以引用。
?本書不提供Android系統源碼的下載方法,并假定讀者已經自行下載了。
?本書在引用Android系統源碼時,為了避免占用過多篇幅,在不影響理解的情況下,對部分源碼進行了刪減。
致謝
首先,要感謝本書的編輯付睿女士。在我編寫本書時,付睿女士提供了很多意見和建議,并多次耐心指導我寫作技巧,她還對書稿質量進行了嚴格把關。
然后,感謝我的媽媽黃繼蘭女士,感謝我的老婆曠凌云女士,以及我的兩個寶貝(Mary和鈞寶),他們給了我很多鼓勵,因為有他們,我才能克服困難,堅持下來。
第一次寫作,其間遇到了很多困難,工作本來已經很辛苦,工作外基本沒多少時間用來寫作,在這個過程中,感謝支持與關心我的各位朋友,他們給了我很多啟發,謝謝他們!
另外,感謝那些Android大牛,因為他們的前期分享與奉獻,我才能站在巨人的肩膀上分享和總結我的經驗。
最后,感謝那些關注本書,為本書提過意見的朋友們,他們的支持是我寫作本書最大的動力。
此外,雖然我對書中所述內容進行了多次校對,但因時間有限和水平所限,書中難免存在疏漏和錯誤,敬請廣大讀者批評指正,可以發郵件聯系我。
胡強(得塔)
2019年6月12日 |
內容簡介:本書是一本Android進階技術與實踐應用相結合的書籍,主要從3個方面來組織內容。第一個方面,Android工程構建體系實踐與進階,其中不僅包含了移動數據技術、工具基建進階、效能進階,還包含了工具應用進階、工程構建進階等內容;第二個方面,對當前移動端前沿技術的探索,包含容器技術、大前端技術和AI技術;第三個方面,移動應用的安全攻防技術和設計模式進階實踐。本書內容全面,側重實戰經驗和進階技能,通過本書不僅能學到最新的移動端技術,以及進階技術與實踐應用相結合的知識,更重要的是能領悟到作者對技術的鉆研精神和思維方式,從而幫助Android開發者高效進階。本書適合移動應用開發者、Android系統開發人員、Android系統安全工程師,以及Android領域的移動技術負責人閱讀。 |
目錄:第1章 Android數據技術 1
1.1 數據采集 1
1.1.1 數據格式 1
1.1.2 多端協同技巧 3
1.1.3 數據分級方案 5
1.1.4 多進程解決方案 7
1.2 數據綁定 8
1.2.1 控件數據綁定 8
1.2.2 內容曝光框架 9
1.3 數據存儲和上報 10
1.3.1 數據加密方案 11
1.3.2 數據存儲策略 11
1.3.3 數據上報策略 14
1.4 前端埋點 15
1.4.1 代碼埋點 16
1.4.2 聲明式埋點 17
1.4.3 無痕埋點 18
第2章 Android下的工具基建進階 30
2.1 帶有反劫持功能的下載SDK 30
2.1.1 分段式多線程網絡通信 30
2.1.2 常見的下載劫持 32
2.1.3 下載劫持監控 32
2.1.4 在下載中實現反劫持 33
2.1.5 下載SDK的應用 34
2.2 沉浸式交互組件 34
2.2.1 碎片化導致沉浸式適配困難 34
2.2.2 Android官方沉浸式狀態欄方式 35
2.2.3 主流廠商的沉浸式方式簡介 36
2.3 基于信息流的圖片加載框架 38
2.3.1 圖片加載 38
2.3.2 圖片緩存機制 39
2.3.3 圖片加載過程中遇到的問題 40
2.3.4 基于信息流的圖片加載設計 47
2.3.5 基于信息流的圖片加載實現 48
2.4 進程保活 49
2.4.1 常規的保活技術 49
2.4.2 保活的悖論 52
2.4.3 系統發展對保活的影響 53
2.5 Android文件系統掃描 53
2.5.1 什么是文件系統 54
2.5.2 文件系統掛載 54
2.5.3 虛擬文件系統層 56
2.5.4 超級塊 57
2.5.5 文件掃描算法 58
2.5.6 結合系統機制進行進階掃描設計 61
2.5.7 掃描實現設計 62
2.5.8 C語言實現的掃描邏輯 63
2.6 高可用前置通道 64
2.6.1 前置通道簡介 64
2.6.2 常駐通知欄 64
2.6.3 Android推送能力介紹 65
2.6.4 主流廠商推送SDK適配 65
2.6.5 Android統一推送聯盟 67
2.6.6 桌面懸浮窗 67
第3章 Android下的效能進階 68
3.1 App性能監測實現 68
3.1.1 App性能監測背景 68
3.1.2 App性能監測總體設計 68
3.1.3 啟動速度框架 69
3.1.4 內存監測系統 69
3.1.5 頁面卡頓解決方案 70
3.1.6 處理App性能問題的經驗 72
3.2 App真機檢測系統 75
3.2.1 為什么需要真機檢測 75
3.2.2 真機檢測整體設計 75
3.2.3 Monkey穩定性檢測 76
3.2.4 自動化敏感權限檢測 77
3.2.5 面向游戲的真機檢測 77
3.3 APK信息一站式修改 79
3.3.1 APK文件構成 79
3.3.2 APK簽名校驗流程 80
3.3.3 V1與V2簽名 82
3.3.4 如何打造渠道包 82
第4章 Android工具應用進階 86
4.1 游戲加速器 86
4.1.1 游戲加速器的使用場景 86
4.1.2 基于性能的加速實現 86
4.1.3 基于流量劫持(VPN)的加速實現 91
4.1.4 基于VPN加速器的整體設計 93
4.2 近場傳輸 94
4.2.1 近場傳輸場景 95
4.2.2 近場傳輸設計 95
4.2.3 Wi-Fi創建 97
4.2.4 Wi-Fi掃描 99
4.2.5 Wi-Fi連接 100
4.2.6 數據傳輸邏輯處理 102
4.3 微信清理 103
4.3.1 微信清理背景 103
4.3.2 微信清理設計 103
4.3.3 微信清理實現 103
4.4 Google安裝器 105
4.4.1 Google安裝器背景 105
4.4.2 Google服務框架 106
4.4.3 Google服務框架安裝器GSI實現 108
第5章 Android工程構建進階 111
5.1 工程構建基礎 111
5.1.1 應用基本信息 111
5.1.2 編譯過程 112
5.2 工程構建進階 115
5.2.1 多渠道打包 115
5.2.2 渠道信息批量寫入 116
5.2.3 資源混淆 116
5.2.4 發布到Maven倉庫 118
5.2.5 搭建私有Maven倉庫 120
5.3 工程構建定制 123
5.3.1 認識Gradle DSL 123
5.3.2 自定義打包邏輯 125
5.3.3 Freeline秒級編譯淺析及接入 129
第6章 移動場景下的容器技術 133
6.1 MoveToDex方案 134
6.1.1 Dalvik虛擬機dex加載機制 134
6.1.2 方法數超過65 536B問題 136
6.1.3 DexOpt LinearAlloc大小限制問題 139
6.1.4 MoveToDex按需加載方案 140
6.2 MultiDex方案優化 141
6.2.1 如何使用MultiDex 141
6.2.2 MultiDex痛點剖析 142
6.2.3 MultiDex方案回歸 143
6.2.4 如何優化MultiDex 144
6.3 插件化與組件化 145
6.3.1 插件化與組件化的區別 145
6.3.2 為什么要做容器化 147
6.3.3 容器化技術演進 147
6.3.4 容器化框架的弊端 150
6.3.5 Android P下的容器化技術前進方向 150
6.3.6 App Bundle解析 151
第7章 移動混合前端技術 153
7.1 H5方案 153
7.1.1 輕量化方案——H5應用 153
7.1.2 H5交互與接口實現 154
7.1.3 H5的缺點 155
7.2 Weex和React Native 155
7.2.1 Weex和React Native簡介 156
7.2.2 Weex和React Native的對比 156
7.2.3 如何使用 159
7.3 Flutter 164
7.3.1 Flutter簡介 165
7.3.2 Dark語言簡介 165
7.3.3 Flutter原理淺析 167
第8章 移動場景下的AI技術 170
8.1 移動AI現狀 170
8.1.1 背景 170
8.1.2 移動AI落地方案 172
8.2 AI的應用場景 173
8.2.1 圖像處理 173
8.2.2 語音處理 175
8.2.3 模式識別 177
8.3 移動AI框架 177
8.3.1 Caffe2 178
8.3.2 TensorFlow Lite 180
8.3.3 Caffe2與TensorFlow Lite的對比 191
8.4 移動AI業務實踐 192
8.4.1 接入成本 192
8.4.2 模型的動態更新 192
8.4.3 兼容性與局限性 194
第9章 移動場景下的安全攻防技術 195
9.1 靜態分析Android應用 195
9.1.1 使用ShakaApktool反編譯APK 196
9.1.2 使用JEB分析Java代碼 197
9.1.3 使用IDA Pro靜態分析so文件 203
9.2 動態分析Android應用 207
9.2.1 使用IDA Pro動態調試APK 207
9.2.2 使用Xposed Hook Java代碼 211
9.2.3 使用Cydia Substrate Hook Java和Native 219
9.2.4 使用Frida Hook Java和Native代碼 228
第10章 Android平臺下的設計模式進階 237
10.1 SOLID設計原則 237
10.1.1 單一職責原則 237
10.1.2 開閉原則 239
10.1.3 里氏替換原則 244
10.1.4 接口隔離原則 246
10.1.5 依賴倒置原則 248
10.2 并行程序設計模式 253
10.2.1 Amdahl定律 253
10.2.2 Future模式 255
10.2.3 Master-Worker模式 256
10.2.4 Guarded Suspension模式 259
10.2.5 不變模式 260
10.3 設計模式在Android源碼中的應用 261
10.3.1 策略模式 262
10.3.2 適配器模式 262
10.3.3 命令模式 263
10.3.4 建造者模式 263
10.3.5 享元模式 264
10.3.6 備忘錄模式 267
10.3.7 觀察者模式 269
10.3.8 原型模式 270
10.3.9 代理模式 271
10.3.10??狀態模式 274 |
序: |