摘要:當然,目前看來,的勢頭是蓋過的。平臺的插件化框架也是存在多種方案,各有優劣。常見的攜程的,的,的以及等。另外,插件化也是解決問題的一大利器。
在 2016 年學 Android 是一種什么樣的體驗?
@author ASCE1885的 Github 簡書 微博 CSDN 知乎
本文由于潛在的商業目的,不開放全文轉載許可,謝謝!
廣而告之時間:我的新書《Android 高級進階》(https://item.jd.com/108219759... )在京東開始預售了,歡迎訂購!
轉眼間 2016 年的電量已不足 20%,不禁感慨 How Time Flies!不知不覺 Android 移動開發已經走過了八年的光陰,在這八年的時間中,Android 開發從最初的簡單調用系統 API,到各類框架的不斷涌現,再到如今的成熟階段,那么作為一個想在 2016 年開始學習 Android 或者重新開始學習 Android 的開發者來說,你將看到一幅什么樣的光景呢?
首先你會發現最新的 Android 系統版本已經是 7.0,作為大版本肯定存在很多變化和改進,開發者需要持續跟進這些變化,例如 Android 7.0 刪除了三個隱式廣播,優化內存使用和優化電量消耗。再往前一個版本,Android 6.0 重新設計了權限系統,一系列的權限不再簡單的在 AndroidManifest.xml 文件中聲明就可以使用,而是要動態申請。再往前一個版本,Android 5.0 引入了 Material Design,從此 Android 有了自己特有的設計語言和規范。
從集成開發環境和構建工具上面看,一兩年前還在茍延殘喘的 eclipse+ant 基本絕跡了,取而代之的是流行的 Android Studio +Gradle,截至本文發稿前,Android Studio 剛剛發布了 2.2.2 版本,對應的 Gradle 版本為 2.14.1 版本。談到 Android 的構建,除了 Gradle,你也可以嘗試 Facebook 的 Buck,雖然它的配置侵入性很強,但構建速度是比 Gradle 快很多的,當然,如果使用最新的 Android Studio+Gradle,我們可以開啟 Instant Run 模式,從而達到快速的重新構建。
著名的 Support Library 已經更新到 25.0.0,其中 support-v4 庫從 24.2.0 版本開始就拆分成 5 個子庫,開發者可以更靈活的引用它。
什么?你還在使用 ListView,GridView?是時候使用 RecyclerView 進行替換了,同時別忘了使用 Support Library 24.2.0 開始引入的 DiffUtil 來高效更新 RecyclerView。
從搭建應用的UI架構開始,我們不再考慮 MVC 模式,取而代之以 MVP 或者 MVVM 模式,Android 官方雖然對于 MVP 模式沒有統一的標準,但還是提供了一系列使用例子 供開發者作為實現參考。
至于 MVVM 模式,Android 官方提供了一個名為 DataBinding 函數庫作為標準實現,相信后面會越來越多開發者在項目中引入。
如果你已經厭倦了使用 Java 來編寫 Android 應用,沒有關系,你可以嘗試下 Kotlin,它可以比作 Android 世界的 Swift,目前已經發布了 1.0.4 版本,支持多種現代的編程特性,例如函數式編程。同時 100% 支持和 Java 的混合編程,具有 Java 編程基礎的開發者很容易上手。
如果你也不喜歡 Kotlin,但熟悉 Javascript 語言,那么推薦你試用下今年非常火爆的 React Native,它不僅可以使用 Javascript 語言編寫 Android 應用,而且可以編寫 iOS 應用,而且代碼復用高達 80% 左右,同時,新功能的上線不再需要往應用市場提交新的 APK 包,而是支持在線熱更新。當然,React Native 寫出來的界面是 Native 的體驗,不是 H5 的體驗。
提起 React Native,我們不得不提到它的競爭者 Weex,Weex 的基本原理和 React Native 一致,也是使用 Javascript 語言編寫 Android 和 iOS 應用,不同的是,React Native 是基于 React 框架,Weex 是基于 Vue 框架。當然,目前看來,React Native 的勢頭是蓋過 Weex 的。
前面我們提到過 Kotlin 支持函數式編程,我的意思當然不是說使用 Java 語言就不能支持函數式的開發,但是就目前 Android 支持的 Java 版本,要支持函數式編程我們需要引入一個知名的函數庫 RxJava,這是一個函數響應式編程框架,采用觀察者設計模式,最直觀的,它能讓你的代碼避免回調地獄的出現,使得代碼數據流向非常清晰,在 Android 中使用 RxJava,還需要引入 RxAndroid 作為橋接,當然,還存在 RxBus,RxBinding 等等擴展函數庫。
說起這兩年 Android 開發的變化,你會發現熱修復框架的如春筍般涌現,你之前可能知道 Dexposed,AndFix,Nuwa 等,但最近幾個月出現的新美大 Robust,微信的 Tinker,手機 QQ 的 QFix 等方案你是否了解和對比過?
我們知道熱修復是用來在線修復嚴重性的 bug,那么 Android Native 代碼如何實現功能模塊的在線更新呢?這就需要涉及插件化框架的概念了。Android 平臺的插件化框架也是存在多種方案,各有優劣。常見的攜程的 DynamicAPK,360 的 DroidPlugin,iReader 的 ZeusPlugin 以及 Small 等。另外,插件化也是解決 64K 問題的一大利器。
另外一個和熱修復容易混淆的概念是應用的增量更新,增量更新的意思是應用在自動更新時下載的 APK 不是全量的,而是一個差分包,下載完成合并后再進行安裝,可以看到,熱修復和增量更新最大的區別是應用更新后是否需要重新安裝。
上面說到的熱修復,插件化更新,增量更新,都依賴于應用啟動后去服務端下載對應的更新包,那么如果應用啟動時去讀取本地緩存或者數據庫等數據,由于文件損壞或者數據格式不正確,可能會導致應用啟動必然閃退,因此,我們還需要引入啟動保護機制來清除緩存數據從而保證應用可以正常啟動。
對了,應用底層基礎函數庫也發生了很大變化,網絡通信庫 android-async-http 已不再是流行,OkHttp+Retrofit 是主流的選擇,圖片加載和緩存框架 Android-Universal-Image-Loader 也已經落伍了,Glide,Fresco 等是更優的選擇。其他流行的底層函數庫還有依賴注入框架 Dagger2,事件總線框架 EventBus,數據庫 ORM 框架 greenDAO,就連日志記錄函數庫也涌現了不少,其中以 Timber,Hugo,logger 最有代表性。
2017 年還將會有哪些新技術或者新的變化出現呢?讓我們拭目以待吧!
歡迎關注我的微信公眾號 ASCE1885,專注與原創或者分享 Android,iOS,ReactNative,Web 前端移動開發領域高質量文章,主要包括業界最新動態,前沿技術趨勢,開源函數庫與工具等。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65199.html
平日學習接觸過的網站積累,以每月的形式發布。2017年以前看這個網址:http://www.kancloud.cn/jsfron... 03月份前端資源分享 1. Javascript 175453545 Redux compose and middleware 源碼分析 深入 Promise(二)——進擊的 Promise Effective JavaScript leeheys blog -...
平日學習接觸過的網站積累,以每月的形式發布。2017年以前看這個網址:http://www.kancloud.cn/jsfron... 03月份前端資源分享 1. Javascript 175453545 Redux compose and middleware 源碼分析 深入 Promise(二)——進擊的 Promise Effective JavaScript leeheys blog -...
平日學習接觸過的網站積累,以每月的形式發布。2017年以前看這個網址:http://www.kancloud.cn/jsfron... 03月份前端資源分享 1. Javascript 175453545 Redux compose and middleware 源碼分析 深入 Promise(二)——進擊的 Promise Effective JavaScript leeheys blog -...
閱讀 2542·2021-11-24 10:20
閱讀 2391·2021-09-10 10:51
閱讀 3376·2021-09-06 15:02
閱讀 3112·2019-08-30 15:55
閱讀 2840·2019-08-29 18:34
閱讀 3078·2019-08-29 12:14
閱讀 1213·2019-08-26 13:53
閱讀 2924·2019-08-26 13:43