Android高級進階 ( 簡體 字) |
作者:顧浩鑫 | 類別:1. -> 程式設計 -> 手機程式 -> Android |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 45437 詢問書籍請說出此書號!【缺書】 NT售價: 445 元 |
出版日:9/1/2016 |
頁數:536 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121298455 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:Android應用開發發展到今天,已經成為一個非常成熟的技術方向,市面上涌現了大量關于Android開發的圖書,總的來說可以分為以下幾類。 ? 入門實戰類:這類圖書是市面上占比最多的,也是初中級開發者比較青睞的一類圖書,基本上介紹的都是Android的基礎知識,例如界面開發、數據存儲、網絡通信、數據庫操作、傳感器使用等,最后附上一兩個簡單實戰項目的介紹。建議讀者在入門的時候買一本評價還不錯的這類圖書學習一遍,然后結合實際項目進行知識鞏固即可,之后這類書基本上扮演的是工具書的角色,就是在忘記某個知識點的時候到書中查一查重新溫習一遍。 ? 源碼分析類:這類圖書又可以分為Framework層源碼分析類和Native層源碼分析類兩種,這類圖書主要針對從事Android系統開發的讀者。當然,從事應用開發的讀者如果對Android Framework等底層的實現原理有所了解的話那也是大有裨益的,而且相對而言更有優勢。 ? 安全和逆向分析類:這類圖書主要介紹的是Android平臺的軟件安全、逆向分析及加解密技術等,主要涉及Android軟件的靜態分析、動態調試、破解及反破解等技術。這個方向的知識既有Android應用開發者所需要的,也有Android系統開發者所需要的,市場上也有專門的Android系統安全相關的職位。 ? 系統移植和驅動類:這類圖書主要介紹的是Android內核、移植和驅動開發的整個底層嵌入式開發知識,這一類知識點其實并不能算作移動端開發,本質上屬于傳統的嵌入式開發領域,畢竟Android底層就是一個Linux系統。 以上便是目前筆者所看到的Android圖書市場所覆蓋的內容,可以說是大而全。但事實上在筆者看來,還有一類圖書是目前沒有出現的,那就是體現一線互聯網公司工程實踐中涉及的重要知識點,筆者將之歸類為第5類:工程實踐類。希望本書能夠彌補這個空白,并期待能夠看到更多此類圖書的出現。
本書內容 本書從結構上分為8篇,共50個知識點。 ? 基礎篇:這是占比最大的一個篇章,雖然名為基礎篇,但你應該理解為是高級進階里面的基礎知識,而不是Android開發入門的基礎知識。本篇主要包含Android View、動畫、Support Library、Gradle、NDK、ANR、異步技術、注解、數據序列化和Hybrid等知識點。 ? 系統架構篇:本篇側重介紹架構和項目整體的相關知識,主要包括UI架構、事件總線、編碼規范和技術堆棧等知識點。 ? 經驗總結篇:本篇側重介紹Android工程實踐中得出的經驗,主要包括64K方法數限制、插件框架、推送原理、APP瘦身、Crash統計等知識點。 ? 新技術篇:本篇側重介紹新近出現的技術點,當然可能本書出版時已經沒那么新了,但并不妨礙其重要性,主要包括函數式編程思想簡介、依賴注入、Kotlin、React Native、在線熱修復、AOP和Facebook Buck等知識點。 ? 性能優化篇:本篇側重介紹目前Android平臺常見的性能優化相關知識,主要包括代碼優化、圖片優化、電量優化、布局優化和網絡優化等知識點。 ? 移動安全篇:本篇側重介紹很多應用中經常會忽略的安全知識,主要包括混淆、反編譯、密鑰隱藏、加固和如何編寫安全的代碼等知識點。 ? 工具篇:本篇介紹了Android開發中會用到的幾個工具,主要包括Android Studio、Stetho、LeakCanary和Redex等知識點。 ? 測試篇:本篇介紹了測試相關的知識,這部分是很多開發人員經常容易忽略的內容,本質上屬于測試領域,但開發人員需要有所了解,主要包括Android單元測試、UI自動化測試、靜態代碼分析和自動化構建等工具。 讀者對象
本書的讀者對象如下。 Android應用研發工程師 計算機相關專業的學生
致謝 感謝董英編輯找到我并建議我出一本關于Android開發相關的圖書,不然也不會有這本書的存在;感謝妻子戀戀對我的寫作和生活的鼓勵和陪伴;感謝父母和老師對我的培養;感謝我曾經就職的公司:華為、百度、平安科技,以及現在所在的平安金融科技;感謝華為PTN、華為推送、百度文庫、百度導航、百度打車、Hyperion、任意門、銀行一賬通等項目的兄弟姐妹們,是過往的這些公司和團隊磨礪了我。 勘誤與互動
讀者如果發現本書文字、代碼和圖片等信息存在錯誤或者紕漏,歡迎反饋給我。對書中內容或者Android應用開發中有什么疑問,也可以與我互動,屆時將在微信公眾號定期發布本書的勘誤信息,并解答大家的疑問。我的相關信息如下。 |
內容簡介:本書是Android的進階學習指南,主要為Android初中級開發者進階所需的知識,高級開發者也可以從本書中發現很多共鳴點。本書從8個方面對50個知識點進行分類講解,包括基礎篇、系統架構篇、經驗總結篇、新技術篇、性能優化篇、移動安全篇、工具篇、測試篇。熟練掌握這些知識點后,應該就能夠應付實際項目開發中的絕大部分問題了。 本書的主要目的在于給讀者一個完整的Android中高級開發者知識圖譜。筆者希望通過本書的系統講解,能夠幫助讀者在面試和工作中收獲自己滿意的成績。 |
目錄:第1篇 基礎篇 第1章 Android觸摸事件傳遞機制 1.1 觸摸事件的類型 1.2 事件傳遞的三個階段 1.3 View的事件傳遞機制 1.4 ViewGroup的事件傳遞機制 第2章 Android View的繪制流程 2.1 繪制的整體流程 2.2 MeasureSpec 2.3 Measure 2.4 Layout 2.5 Draw 第3章 Android 動畫機制 3.1 逐幀動畫(Frame Animation) 3.1.1 XML 資源文件方式 3.1.2 代碼方式 3.2 補間動畫(Tween Animation) 3.2.1 插值器 Interpolator 3.2.2 AlphaAnimation 3.2.3 ScaleAnimation 3.2.4 TranslateAnimation 3.2.5 RotateAnimation 3.2.6 自定義補間動畫 3.3 屬性動畫(Property Animation) 3.3.1 Evaluator 3.3.2 AnimatorSet 3.3.3 ValueAnimator 3.3.4 ObjectAnimator 3.4 過渡動畫(Transition Animation) 第4章 Support Annotation Library 使用詳解 4.1 Nullness 注解 4.2 資源類型注解 4.3 類型定義注解 4.4 線程注解 4.5 RGB 顏色值注解 4.6 值范圍注解 4.7 權限注解 4.8 重寫函數注解 4.9 返回值注解 4.10 @VisibleForTesting 4.11 @Keep 第5章 Percent Support Library使用詳解 第6章 Design Support Library使用詳解 6.1 Snackbar 6.2 TextInputLayout 6.3 TabLayout 6.4 NavigationView 6.4.1 導航菜單 6.4.2 導航頭部 6.5 FloatingActionButton 6.5.1 使用浮動操作按鈕 6.5.2 其他選項 6.5.3 點擊事件 6.6 CoordinatorLayout 6.7 CollapsingToolbarLayout 6.8 BottomSheetBehavior 第7章 Android Studio中的NDK開發 7.1 ABI的基本概念 7.2 引入預編譯的二進制 C/C++ 函數庫 7.3 直接從 C/C++ 源碼編譯 7.3.1 配置 ndk.dir 變量 7.3.2 在 Gradle 中配置 NDK 模塊 7.3.3 添加 C/C++ 文件到指定的目錄 7.4 使用 .so 文件的注意事項 7.4.1 使用高平臺版本編譯的 .so 文件運行在低版本的設備上 7.4.2 混合使用不同的C++ 運行時編譯的 .so 文件 7.4.3 沒有為每個支持的 CPU 架構提供對應的 .so 文件 7.4.4 將 .so 文件放在錯誤的地方 7.4.5 只提供 armeabi 架構的 .so 文件而忽略其他 ABIs 的 第8章 Gradle 必知必會 8.1 共享變量的定義 8.2 通用配置 8.3 aar 函數庫的引用 8.4 簽名和混淆的配置 第9章 通過Gradle打包發布函數庫到JCenter和Maven Central 9.1 Maven Central 和 JCenter 9.1.1 Maven Central 9.1.2 JCenter 9.2 Android Studio 獲取函數庫的原理 9.3 上傳函數庫到 JCenter 9.3.1 步驟一:在 Bintray 網站上注冊一個賬號 9.3.2 步驟二:創建一個 Sonatype 賬號 9.3.3 步驟三:在 Bintray 網站使能自動簽名 9.3.4 步驟四:生成 POM 相關的信息 9.3.5 步驟五:上傳函數庫到 Bintray 9.3.6 步驟六:發布 Bintray 用戶倉庫到 JCenter 9.3.7 步驟七:同步函數庫到 Maven Central 第10章 Builder模式詳解 10.1 經典的 Builder 模式 10.2 Builder 模式的變種 10.3 變種 Builder 模式的自動化生成 10.4 開源函數庫的例子 第11章 注解在 Android 中的應用 11.1 注解的定義 11.2 標準注解 11.2.1 編譯相關注解 11.2.2 資源相關注解 11.2.3 元注解 11.3 運行時注解 11.4 編譯時注解 11.4.1 定義注解處理器 11.4.2 注冊注解處理器 11.4.3 android-apt插件 第12章 ANR產生的原因及其定位分析 12.1 ANR 產生的原因 12.2 典型的 ANR 問題場景 12.3 ANR 的定位和分析 12.3.1 Logcat 日志信息 12.3.2 traces.txt 日志信息 12.4 ANR的避免和檢測 12.4.1 StrictMode 12.4.2 BlockCanary 第13章 Android異步處理技術 13.1 Thread 13.2 HandlerThread 13.3 AsyncQueryHandler 13.4 IntentService 13.5 Executor Framework 13.6 AsyncTask 13.7 Loader 13.8 總結 第14章 Android數據序列化方案研究 14.1 Serializable 14.2 Parcelable 14.3 SQLiteDatabase 14.4 SharedPreferences 14.5 JSON 14.6 Protocol Buffers及Nano-Proto-Buffers 14.7 FlatBuffers 第15章 Android WebView Java 和 JavaScript 交互詳解 15.1 Java 調用 JavaScript 15.2 JavaScript 調用 Java 第2篇 系統架構篇 第16章 MVP模式及其在Android中的實踐 16.1 MVP 的基本概念 16.2 MVP 與 MVC 的區別 16.3 MVP 的開源實現 16.3.1 Android-Architecture 16.3.2 TODO-MVP 16.3.3 TODO-MVP-Loaders 16.3.4 TODO-MVP-Clean 16.3.5 TODO-Databinding 16.3.6 其他開源參考實現 16.4 MVP 的好處 16.5 MVP 存在的問題 第17章 MVVM模式及Android DataBinding實戰 17.1 Data Binding 表達式 17.2 數據對象 17.3 數據綁定 17.4 事件綁定 第18章 觀察者模式的拓展:事件總線 18.1 為何要使用 18.2 原理 18.3 開源實現 18.3.1 EventBus 18.3.2 otto 18.4 與觀察者模式及 Android 廣播的區別 第19章 書寫簡潔規范的代碼 19.1 Java 編碼規范 19.1.1 源代碼文件的定義 19.1.2 源代碼文件的結構 19.1.3 遵循的格式 19.1.4 命名約定 19.1.5 Javadoc 19.2 Android 命名規范 19.2.1 布局文件的命名 19.2.2 資源文件的命名 19.2.3 類的命名 19.3 CheckStyle 的使用 第20章 基于開源項目搭建屬于自己的技術堆棧 20.1 APP 的整體架構 20.2 技術選型的考量點 20.3 日志記錄能力 20.4 JSON 解析能力 20.4.1 gson 20.4.2 jackson 20.4.3 Fastjson 20.4.4 LoganSquare 20.5 數據庫操作能力 20.5.1 ActiveAndroid 20.5.2 ormlite 20.5.3 greenDAO 20.5.4 Realm 20.6 網絡通信能力 20.6.1 android-async-http 20.6.2 OkHttp 20.6.3 Volley 20.6.4 Retrofit 20.7 圖片緩存和顯示能力 20.7.1 BitmapFun 20.7.2 Picasso 20.7.3 Glide 20.7.4 Fresco 20.7.5 Android-Universal-Image-Loader 第3篇 經驗總結篇 第21章 64K方法數限制原理與解決方案 21.1 64K 限制的原因 21.2 使用 MultiDex 解決 64K 限制的問題 21.2.1 Android 5.0 之前的版本 21.2.2 Android 5.0 及之后的版本 21.3 如何避免出現 64K 限制 21.4 配置 MultiDex 21.5 MultiDex Support Library 的局限性 21.6 在開發階段優化 MultiDex 的構建 第22章 Android 插件框架機制研究與實踐 22.1 基本概念 22.1.1 宿主和插件 22.1.2 ClassLoader 機制 22.2 開源框架 22.2.1 android-pluginmgr 22.2.2 dynamic-load-apk 22.2.3 DynamicAPK 22.2.4 DroidPlugin 22.2.5 Small
第23章 推送機制實現原理詳解 23.1 推送的開源實現方案 23.1.1 基于 XMPP 協議 23.1.2 基于 MQTT 協議 23.2 推送的第三方平臺 23.3 自己實現推送功能 23.3.1 長連接的建立(TCPConnectThread) 23.3.2 數據的發送(TCPSendThread) 23.3.3 數據的接收(TCPReceiveThread) 23.3.4 心跳包的實現(TCPHeartBeatThread) 第24章 APP 瘦身經驗總結 24.1 APP 為什么變胖了 24.2 從 APK 文件的結構說起 24.3 優化圖片資源占用的空間 24.3.1 無損壓縮 [ImageOptim] 24.3.2 有損壓縮 [ImageAlpha] 24.3.3 有損壓縮 [TinyPNG] 24.3.4 PNG/JPEG 轉換為 WebP 24.3.5 盡量使用 NinePatch 格式的 PNG 圖 24.4 使用 Lint 刪除無用資源 24.5 利用 Android Gradle 配置 24.5.1 minifyEnable 24.5.2 shrinkResources 24.5.3 resConfigs 24.5.4 ndk.abiFilters 24.6 重構和優化代碼 24.7 資源混淆 24.8 插件化 第25章 Android Crash 日志收集原理與實踐 25.1 Java 層 Crash 捕獲機制 25.1.1 基本原理 25.1.2 線程信息 25.1.3 SharedPreference 信息 25.1.4 系統設置 21.1.5 Logcat 中的日志記錄 25.1.6 自定義 Log 文件中的內容 25.1.7 MemInfo 信息
25.2 Native 層 Crash 捕獲機制 25.3 Crash 的上報 第4篇 新技術篇 第26章 函數式編程思想及其在Android中的應用 26.1 代碼的簡化 26.2 Operators 簡介 第27章 依賴注入及其在Android中的應用 27.1 基本概念 27.1.1 構造函數注入 27.1.2 Setter 函數注入 27.1.3 接口注入 27.2 為何需要框架 27.3 開源框架的選擇 27.3.1 ButterKnife 27.3.2 RoboGuice 27.3.3 Dagger 27.3.4 Dagger2 27.3.5 框架的對比 第28章 Android世界的Swift:Kotlin在Android中的應用 28.1 選擇 Kotlin 的原因 28.2 Kotlin 的安裝和配置 28.3 Kotlin 語言的特性 28.3.1 可表達性 28.3.2 空類型安全 28.3.3 擴展函數 28.4 Kotlin 的 Gradle 配置 28.5 將 Java 類轉換成 Kotlin 類 28.6 相關資料 第29章 React Native For Android入門指南 29.1 環境配置 29.1.1 Homebrew 29.1.2 nvm 29.1.3 Node.js 29.1.4 watchman 29.1.5 flow 29.2 Android 開發環境的要求 29.3 React Native 工程配置 29.3.1 安裝react-native 29.3.2 生成工程 29.4 Android Studio 工程概覽 29.5 React Native 依賴庫修改為本地 29.5.1 下載 react-native.aar 29.5.2 react-native.aar 的文件內容 29.5.3 Gradle 本地依賴 29.5.4 將 node_modules 上傳到 svn/git 29.6 React Native 學習建議 第30章 Android在線熱修復方案研究 30.1 在線熱修復的基本流程 30.2 Dexposed 30.2.1 如何集成 30.2.2 基本用法 30.2.3 在線熱修復 30.2.4 平臺的限制 30.3 AndFix 30.3.1 如何集成 30.3.2 補丁包生成工具 30.3.3 平臺的限制 30.4 Nuwa 30.4.1 基本原理 30.4.2 如何集成 30.4.3 補丁生成工具 30.4.4 平臺的限制 30.5 總結 第31章 面向切面編程及其在Android中的應用 31.1 AOP 的基本概念 31.2 代碼織入的時機 31.3 基于 AspectJ 實現 Android 平臺的 AOP 31.3.1 Hugo 的用法簡介 31.3.2 Hugo 的實現原理 31.4 其他 AOP 開源框架 第32章 基于Facebook Buck改造Android構建系統 32.1 Buck環境配置 32.1.1 Homebrew 方式 32.1.2 手動構建方式 32.1.3 安裝 Watchman 32.1.4 安裝 Android SDK 和 Android NDK 32.2 快速創建基于 Buck 構建的 Android 工程 32.3 Buck 的基本概念 32.3.1 構建規則(Build Rule) 32.3.2 構建目標(Build Target) 32.3.3 構建文件(Build File) 32.3.4 構建目標模式(Build Target Pattern) 32.4 項目改造實戰 32.4.1 步驟一:手動下載工程依賴的第三方 Jar包或者aar包 32.4.2 步驟二:將 R.* 常量修改為非 final 的 32.4.3 步驟三:創建 BUCK 文件 32.4.4 步驟四:編譯 Buck 的 buck-android-support 32.4.5 步驟五:Exopackage 的使用 32.5 Buck 的自動化改造 第5篇 性能優化篇 第33章 代碼優化 33.1 數據結構的選擇 33.2 Handler 和內部類的正確用法 33.3 正確地使用 Context 33.3.1 Context 的種類 33.3.2 錯誤使用 Context 導致的內存泄漏 33.3.3 不同 Context 的對比 33.4 掌握 Java 的四種引用方式 33.5 其他代碼微優化 33.5.1 避免創建非必要的對象 33.5.2 對常量使用 static final 修飾 33.5.3 避免內部的 Getters/Setters 33.5.4 代碼的重構 第34章 圖片優化 34.1 圖片的格式 34.1.1 JPEG 34.1.2 PNG 34.1.3 GIF 34.1.4 WebP 34.2 圖片的壓縮 34.2.1 無損壓縮 ImageOptim 34.2.2 有損壓縮 ImageAlpha 34.2.3 有損壓縮 TinyPNG 34.2.4 PNG/JPEG 轉換為 WebP 34.2.5 盡量使用 NinePatch 格式的 PNG 圖 34.3 圖片的緩存 第35章 電量優化 35.1 BroadcastReceiver 35.2 數據傳輸 35.3 位置服務 35.4 AlarmManager 35.5 WakeLock 第36章 布局優化 36.1 include 標簽共享布局 36.2 ViewStub 標簽實現延遲加載 36.3 merge 標簽減少布局層次 36.4 盡量使用 CompoundDrawable 36.5 使用 Lint 第37章 網絡優化 37.1 避免 DNS 解析 37.2 合并網絡請求 37.3 預先獲取數據 37.4 避免輪詢 37.5 優化重連機制 37.6 離線緩存 37.7 壓縮數據大小 37.8 不同的網絡環境使用不同的超時策略 37.9 CDN 的使用 第6篇 移動安全篇 第38章 Android混淆機制詳解 38.1 Java 代碼的混淆 38.1.1 Proguard 的特性 38.1.2 Proguard 的使能和配置 38.1.3 proguard-rules.pro 文件的編寫 38.1.4 Proguard 生成的文件 38.1.5 Proguard 混淆規則匯總 38.2 Native(C/C++) 代碼的混淆 38.3 資源文件的混淆 第39章 Android 反編譯機制詳解 39.1 資源文件的反編譯 39.1.1 ApkTool 的安裝 39.1.2 ApkTool 的使用 39.2 Java 代碼的反編譯 第40章 客戶端敏感信息隱藏技術研究 40.1 敏感信息嵌套在 strings.xml 中 40.2 敏感信息隱藏在 Java 源代碼中 40.3 敏感信息隱藏在 BuildConfig 中 40.4 使用 DexGuard 40.5 對敏感信息進行偽裝或者加密 40.6 敏感信息隱藏在原生函數庫中(.so文件) 40.7 對APK進行加固處理 第41章 Android 加固技術研究 41.1 愛加密的主要功能 41.1.1 漏洞分析 41.1.2 加密服務 41.1.3 渠道監測 41.2 常見 APP 漏洞及風險 41.2.1 靜態破解 41.2.2 二次打包 41.2.3 本地儲存數據竊取 41.2.4 界面截取 41.2.5 輸入法攻擊 41.2.6 協議抓取 41.3 Android 程序反破解技術 41.3.1 對抗反編譯 41.3.2 對抗靜態分析 41.3.3 對抗動態調試 41.3.4 防止重編譯 41.4 加固技術研究知識儲備 41.4.1 掌握常見的破解分析工具 41.4.2 掌握 Dalvik 指令集代碼 41.4.3 掌握 Dex 和 Odex 文件格式 41.4.4 掌握 Smali 文件格式 41.4.5 掌握基于 Android 的 ARM 匯編語言基礎 第42章 Android安全編碼 42.1 WebView 遠程代碼執行 42.2 WebView 密碼明文保存 42.3 Android 本地拒絕服務 42.3.1 非法序列化對象導致的 ClassNotFoundException 42.3.2 空 Action 導致的 NullPointerException 42.3.3 強制類型轉換導致的 ClassCastException 42.3.4 數組越界導致的 IndexOutOfBoundsException 42.4 SharedPreference 全局任意讀寫 42.5 密鑰硬編碼 42.6 AES/DES/RSA 弱加密 42.7 隨機函數使用錯誤 42.8 WebView 忽略 SSL 證書 42.9 HTTPS 證書弱校驗 42.9.1 自定義 X509TrustManager 未實現安全校驗 42.9.2 自定義 HostnameVerifier 默認接受所有域名 42.9.3 SSLSocketFactory 信任所有證書 42.10 PendingIntent 使用不當 第7篇 工具篇 第43章 Android調試工具Facebook Stetho 43.1 視圖布局監視 43.2 數據庫監視 43.3 網絡監視 43.3.1 網絡模塊使用的是 HTTPUrlConnection 43.3.2 網絡模塊使用的是 OkHttp 43.4 dumpapp 43.4.1 插件的編寫 43.4.2 插件的集成 43.4.3 插件的使用 43.5 Javascript 控制臺 43.6 最佳實踐 第44章 內存泄漏檢測函數庫 LeakCanary 44.1 基本概念 44.2 LeakCanary 的集成 44.3 LeakCanary 的原理 44.4 LeakCanary 的定制 44.4.1 RefWatcher 的自定義 44.4.2 通知頁面樣式的自定義 44.4.3 內存泄漏堆棧信息保存個數的自定義 44.4.4 Watcher 的延時 44.4.5 自定義內存泄漏堆棧信息和 heap dump 的處理方式 44.4.6 忽略特定的弱引用 44.4.7 不監視特定的 Activity 類 第45章 基于Facebook Redex實現Android APK的壓縮和優化 45.1 轉換的時機 45.2 管道的思想 45.3 減少字節碼的意義 45.4 混淆和壓縮 45.5 使用內聯函數 45.6 無用代碼的消除 45.7 Redex 的集成和使用 45.7.1 依賴的安裝 45.7.2 下載,構建和安裝 45.7.3 使用 第46章 Android Studio你所需要知道的功能 46.1 Annotate 46.2 .ignore 插件 46.3 Live Templates 46.4 集成 Bug 管理系統 第8篇 測試篇 第47章 Android單元測試框架簡介 47.1 Java 單元測試框架 JUnit 47.2 Android 單元測試框架 Robolectric 3.0 47.3 Java 模擬測試框架 Mockito 47.3.1 行為的驗證 47.3.2 Stub(樁函數)的使用 第48章 Android UI自動化測試框架簡介 48.1 Monkey 48.2 MonkeyRunner 48.3 UIAutomator 48.4 Robotium 48.5 Espresso 48.6 Appium 第49章 Android靜態代碼分析實戰 49.1 Java代碼規范檢查工具CheckStyle 49.1.1 Gradle方式 49.1.2 Android Studio插件方式 49.2 Java靜態代碼分析工具FindBugs 49.2.1 Gradle方式 49.2.2 Android Studio插件方式 49.3 Java靜態代碼分析工具PMD 49.3.1 Gradle方式 49.3.2 Android Studio插件方式 49.4 Android代碼優化工具Lint 49.4.1 Gradle方式 49.4.2 Android Studio插件方式 第50章 基于Jenkins+Gradle搭建Android持續集成編譯環境 50.1 Tomcat的下載和啟動 50.2 Jenkins的下載和運行 50.3 Jenkins插件的安裝 50.4 Jenkins全局配置 50.4.1 配置 JDK 環境 50.4.2 配置 Android SDK 環境 50.4.3 配置 Git 環境 50.4.4 配置 SVN 環境 50.4.5 配置 Gradle 環境 50.5 JOB相關的操作 50.5.1 JOB 的創建 50.5.2 JOB 的配置 50.5.3 Gradle 的配置 50.5.4 構建觸發器的配置 50.5.5 參數化構建 50.6 Jenkins預定義的環境變量 |
序: |