TOP
0
0
【簡體曬書區】 單本79折,5本7折,活動好評延長至5/31,趕緊把握這一波!
Android進階指北(簡體書)
滿額折

Android進階指北(簡體書)

人民幣定價:109 元
定價
:NT$ 654 元
優惠價
87569
領券後再享88折
海外經銷商無庫存,到貨日平均30天至45天
可得紅利積點:17 點
相關商品
商品簡介
作者簡介
目次

商品簡介

本書是一本Android進階圖書,結合《Android進階之光》和《Android進階解密》兩本書介紹的知識,一同建立起Android應用開發進階知識體系。全書共分13章,主要從3個方面來組織內容:(1)Android應用開發所需要掌握的系統源碼知識,包括系統源碼的下載、編譯、調試,包管理機制,輸入系統,Native Binder,Java Binder;(2)應用開發必需的知識點,包括Groovy基礎、Gradle核心思想、Gradle的Android插件、Android Jetpack架構組件;(3)與跨平臺開發相關的知識點,包括跨平臺技術演進、Dart基礎、Flutter基礎。

作者簡介

劉望舒,Android技術專家,Android進階三部曲《Android進階之光》 《Android進階解密》 《Android進階指北》作者,電子工業出版社博文視點2017、2018、2019年度優秀作者。CSDN知名博主,榮獲CSDN 2018年度博客之星稱號。GDG Devfest、Droidcon、安卓巴士開發者大會、全球移動開發者大會的特邀演講嘉賓或出品人。曾在多個知名大廠任職,目前就職於某大型互聯網公司,擔任技術負責人,負責管理和架構相關工作。

目次

目錄


Android進階三部曲知識體系1
第1章 系統源碼的下載、編譯、調試5
1.1 使用VirtualBox安裝Ubuntu5
1.1.1 安裝Ubuntu的步驟6
1.1.2 安裝增強工具12
1.2 AOSP源碼下載14
1.2.1 AOSP簡介14
1.2.2 下載repo15
1.2.3 下載源碼15
1.3 內核源碼下載16
1.4 系統源碼的整編和單編18
1.4.1 編譯系統概述18
1.4.2 編譯源碼的方式20
1.4.3 準備編譯環境20
1.4.4 源碼整編21
1.4.5 源碼單編24
1.5 Source Insight導入系統源碼25
1.5.1 新建源碼項目25
1.5.2 定位文件27
1.5.3 全域搜索28
1.6 Android Studio導入系統源碼29
1.7 Android Studio調試系統源碼33
1.7.1 AOSP源碼項目調試34
1.7.2 導入部分源碼調試38
1.7.3 新建Android項目調試39
1.8 本章小結40
第2章 理解包管理機制和PMS41
2.1 PackageInstaller的初始化41
2.1.1 PackageManager簡介42
2.1.2 APK的文件結構和安裝方式42
2.1.3 尋找PackageInstaller入口43
2.1.4 PackageInstallerActivity解析47
2.1.5 PackageInstaller初始化的過程51
2.2 PackageInstaller安裝APK過程52
2.2.1 PackageInstaller中的處理52
2.2.2 Java框架層的處理57
2.2.3 PackageInstaller安裝APK的過程59
2.3 PMS處理APK的安裝過程59
2.3.1 PackageHandler處理安裝消息60
2.3.2 複製APK的處理66
2.3.3 PMS處理APK安裝70
2.3.4 PMS處理APK安裝的步驟76
2.4 PMS的創建過程77
2.4.1 SystemServer處理部分77
2.4.2 PMS構造方法80
2.5 APK解析過程91
2.5.1 引入PackageParser91
2.5.2 PackageParser解析APK92
2.5.3 Package的數據結構99
2.6 本章小結100
第3章 理解輸入系統和IMS102
3.1 輸入事件傳遞流程的組成部分103
3.2 IMS的誕生105
3.2.1 SystemServer處理部分105
3.2.2 InputManagerService構造方法107
3.3 IMS的啟動過程110
3.4 InputDispatcher的啟動過程112
3.5 InputReader處理事件的過程113
3.6 輸入事件的處理總結119
3.7 InputReader的加工類型120
3.8 InputDispatcher的分發過程123
3.8.1 喚醒InputDispatcherThread123
3.8.2 InputDispatcher進行分發124
3.9 事件分發到目標窗口的過程128
3.9.1 為事件尋找合適的分發目標128
3.9.2 處理點擊形式的事件132
3.9.3 向目標窗口發送事件135
3.9.4 Motion事件分發過程總結136
3.10 本章小結138
第4章 IPC機制139
4.1 Linux和Android的IPC機制139
4.1.1 Linux中的IPC機制139
4.1.2 Android中的IPC機制141
4.2 開啟多進程142
4.2.1 開啟多進程舉例142
4.2.2 開啟多進程引出的問題144
4.3 用Messenger進行進程間通信146
4.4 使用AIDL實現跨進程方法調用150
4.4.1 創建AIDL文件150
4.4.2 創建服務端152
4.4.3 客戶端調用153
4.5 用ContentProvider進行進程間通信155
4.5.1 建立數據庫,方便ContentProvider使用155
4.5.2 使用ContentProvider對數據庫進行操作156
4.5.3 在Activity中調用另一個進程的GameProvider方法158
4.6 用Socket實現跨進程聊天程序160
4.7 本章小結167
第5章 Native Binder原理168
5.1 學習Binder的前置知識點168
5.1.1 Linux和Binder的IPC通信原理169
5.1.2 使用Binder的原因173
5.1.3 學習Binder的原因174
5.2 ServiceManager中的Binder機制175
5.2.1 基於Binder通信的C/S架構175
5.2.2 MediaServer的main函數176
5.2.3 每個進程唯一的ProcessState實例177
5.2.4 解析ServiceManager中的Binder機制180
5.2.5 小結187
5.3 系統服務的註冊過程187
5.3.1 從調用鏈角度說明MediaPlayerService的註冊過程187
5.3.2 從進程角度說明MediaPlayerService的註冊過程195
5.3.3 小結196
5.4 ServiceManager的啟動過程196
5.4.1 打開binder設備198
5.4.2 註冊成為Binder機制的上下文管理者201
5.4.3 循環等待和處理客戶端發來的請求203
5.5 系統服務的獲取過程206
5.5.1 客戶端MediaPlayerService請求獲取服務206
5.5.2 服務端ServiceManager處理請求212
5.6 本章小結218
第6章 Java Binder原理219
6.1 Java Binder的JNI註冊219
6.1.1 Binder類的註冊223
6.1.2 BinderInternal類的註冊224
6.2 Java Binder中系統服務的註冊過程225
6.2.1 將AMS註冊到ServiceManager226
6.2.2 引出JavaBBinder230
6.2.3 解析JavaBBinder232
6.2.4 Java Binder架構234
6.3 本章小結235
第7章 Groovy基礎236
7.1 Groovy概述236
7.2 Groovy編寫和調試237
7.3 變量237
7.4 方法237
7.5 類238
7.6 語句239
7.6.1 斷言239
7.6.2 for循環239
7.6.3 switch語句240
7.7 數據類型241
7.7.1 字符串241
7.7.2 List242
7.7.3 Map242
7.7.4 閉包(Closure)243
7.8 I/O操作244
7.8.1 文件讀取244
7.8.2 文件寫入244
7.9 其他245
7.9.1 asType245
7.9.2 判斷是否為真245
7.9.3 安全取值245
7.9.4 with操作符246
7.10 本章小結246
第8章 Gradle核心思想247
8.1 Gradle概述247
8.1.1 項目自動化248
8.1.2 構建工具248
8.1.3 Gradle的特性253
8.2 Gradle基礎知識255
8.2.1 配置Gradle環境255
8.2.2 實現Hello World257
8.2.3 Gradle的任務258
8.2.4 Gradle日誌級別260
8.2.5 Gradle 命令行261
8.3 被忽視的Gradle Wrapper263
8.3.1 為什麼需要Gradle Wrapper263
8.3.2 構建Gradle Wrapper264
8.3.3 配置Gradle Wrapper265
8.3.4 使用Gradle Wrapper266
8.3.5 升級Gradle Wrapper267
8.3.6 自定義Gradle Wrapper268
8.4 Gradle插件基礎268
8.4.1 Gradle插件概述268
8.4.2 應用Gradle插件270
8.4.3 插件DSL272
8.4.4 自定義對象插件273
8.4.5 Gradle插件的作用和優點274
8.5 自定義Gradle插件274
8.5.1 在build.gradle中編寫275
8.5.2 在buildSrc工程項目中編寫277
8.5.3 在獨立項目中編寫278
8.6 本章小結281
第9章 Gradle的Android插件282
9.1 什麼是Gradle的Android插件282
9.2 Android Studio的模塊類型和項目視圖283
9.3 項目build.gradle284
9.4 模塊build.gradle285
9.4.1 Gradle的Android插件類型286
9.4.2 Android塊286
9.4.3 dependencies塊291
9.5 Android簽名文件配置292
9.5.1 自定義簽名信息文件292
9.5.2 本地添加簽名信息文件293
9.6 Gradle的庫依賴294
9.7 Gradle的庫依賴管理295
9.7.1 Gradle的依賴傳遞296
9.7.2 Gradle的依賴檢查296
9.7.3 Gradle的依賴衝突299
9.8 本章小結301
第10章 Android Jetpack架構組件302
10.1 Android Jetpack簡介303
10.2 Android Jetpack分類303
10.2.1 Architecture304
10.2.2 Foundationy305
10.2.3 Behavior306
10.2.4 UI307
10.3 在應用中引入Jetpack相關組件307
10.4 使用Lifecycle307
10.4.1 為什麼需要Lifecycle307
10.4.2 如何使用Lifecycle309
10.4.3 Lifecycle應用舉例312
10.4.4 自定義LifecycleOwner315
10.5 Lifecycle的原理316
10.5.1 Lifecycle的生命週期狀態事件和狀態316
10.5.2 Lifecycle如何觀察Activity和Fragment的生命週期317
10.5.3 Lifecycle關聯類327
10.6 使用LiveData328
10.6.1 什麼是LiveData328
10.6.2 LiveData的基本用法329
10.6.3 更改LiveData中的數據330
10.6.4 合併多個LiveData數據源332
10.6.5 拓展LiveData對象333
10.7 LiveData的原理335
10.7.1 LiveData如何觀察組件生命週期變化335
10.7.2 LiveData的observe方法回調336
10.7.3 postValue/setValue方法分析339
10.7.4 Transformations.map方法分析341
10.7.5 LiveData關聯類343
10.8 使用ViewModel344
10.8.1 什麼是ViewModel345
10.8.2 ViewModel的基本使用方法345
10.8.3 ViewModel的生命週期347
10.9 ViewModel的原理348
10.10 本章小結351
第11章 跨平臺技術演進352
11.1 Web App353
11.2 Hybrid App353
11.2.1 Cordova354
11.2.2 Ionic355
11.2.3 VasSonic355
11.2.4 微信小程序356
11.3 語言編譯轉換357
11.4 原生渲染358
11.4.1 React Native358
11.4.2 Weex358
11.4.3 快應用359
11.5 自繪UI360
11.5.1 Qt360
11.5.2 Flutter361
11.6 本章小結362
第12章 Dart基礎363
12.1 Dart開發環境搭建363
12.2 Dart概述364
12.3 Dart的特性和重要概念365
12.4 Dart關鍵字366
12.5 變量367
12.6 基本數據類型367
12.6.1 Number367
12.6.2 String368
12.6.3 Boolean368
12.6.4 List368
12.6.5 Set369
12.6.6 Map369
12.7 函數369
12.7.1 可選參數370
12.7.2 默認參數值370
12.7.3 main函數371
12.7.4 匿名函數371
12.8 流程控制語句371
12.8.1 for循環372
12.8.2 switch和case372
12.9 捕獲異常373
12.10 為類添加新的功能373
12.11 庫的使用方法374
12.12 異步支持375
12.13 使類可調用376
12.14 創建實例376
12.15 本章小結376
第13章 Flutter基礎377
13.1 Flutter開發環境搭建和Hello World377
13.1.1 Flutter概述378
13.1.2 Flutter開發環境搭建378
13.1.3 運行一個Flutter Demo383
13.1.4 Hello World385
13.2 Widget基礎386
13.2.1 Widget概述387
13.2.2 Widget的分類387
13.2.3 Widget的狀態分類388
13.2.4 根Widget的種類388
13.3 Basic Widget389
13.3.1 代碼模板和主題389
13.3.2 文本390
13.3.3 圖片391
13.3.4 凸起按鈕394
13.3.5 其他Widget395
13.4 Material組件397
13.4.1 MaterialApp398
13.4.2 Scaffold401
13.4.3 AppBar403
13.4.4 BottomNavigationBar405
13.4.5 TabBar407
13.4.6 Drawer411
13.5 Scrolling Widget413
13.5.1 ListView413
13.5.2 GridView418
13.5.3 PageView419
13.6 手勢相關Widget421
13.6.1 指針事件421
13.6.2 手勢422
13.6.3 使用GestureDetector423
13.6.4 使用Dismissible424
13.7 資源和圖片426
13.7.1 指定asset426
13.7.2 加載文本427
13.7.3 加載圖片430
13.8 佈局Widget433
13.8.1 線性佈局Widget433
13.8.2 流式佈局Widget434
13.8.3 層式佈局Widget436
13.8.4 彈性佈局Widget438
13.9 網絡請求庫Dio440
13.9.1 Dio的使用入門440
13.9.2 Dio訪問網絡441
13.10 JSON數據解析443
13.10.1 使用json.decode方法443
13.10.2 手動編寫實體類444
13.10.3 自動生成實體類445
13.11 路由與數據傳遞447
13.11.1 新建路由447
13.11.2 使用註冊路由450
13.11.3 路由間數據傳遞451
13.12 Flutter與Android的相互通信456
13.12.1 PlatformChannel概述456
13.12.2 Flutter調用Android458
13.12.3 Android調用Flutter461
13.13 本章小結465

您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 569
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區