前言
在日新月異的技術世界里,Android 作為移動端份額最大的操作系統(tǒng)當然是緊緊的占據(jù)著第一線,也為 Java 這門語言注入著新活力
身為幾百萬的 Android 開發(fā)之一棵磷,有必要了解掌握 Android 的最新技術胚鸯。(新技術包括近兩年來非常受歡迎的技術及在未來極具潛力的技術,當前時間2016年9月15日熔任,后續(xù)也會繼續(xù)更新)
Android 版本
2008年9月谷歌正式發(fā)布了 Android 1.0 系統(tǒng)
中間版本略去不提及(Android L 發(fā)布尤其重要褒链,可以說其帶來的新特性尤其是新的設計規(guī)范帶給 Android 新的活力)
2016年 Android 7.0 (Nougat)
雖然飽受碎片化的困擾,但新版本的更新率也在不斷提高
Android N
Android迭代至今已經非常成熟疑苔,是移動端最成功的操作系統(tǒng)之一甫匹,而且保持著一年一次的大版本更新。2016年,Android迎來了以牛軋?zhí)?Nougat 命名的 Android N(7.0) 操作系統(tǒng)兵迅,帶來了數(shù)十項的更新優(yōu)化
包括多窗口支持抢韭、通知功能增強、配置文件指導的 JIT/AOT 編譯恍箭、快速的應用安裝路徑刻恭、瞌睡模式的增強等方面。
Google I/O 2016 上發(fā)布的 Android N 有哪些新特性扯夭?
Android Studio 編譯器
I/O 2013 鳍贾,谷歌推出新的 Android 開發(fā)環(huán)境,基于 IntelliJ IDEA 的 Android Studio交洗,以此來取代 Eclipse骑科,并且不斷更新至今。
在 IDEA 的基礎上构拳,Android Studio 提供了以下一些功能:
- 基于 Gradle 的構建支持
- Android 專屬的重構和快速修復
- 提示工具以捕獲性能咆爽、可用性、版本兼容性等問題
- 支持 ProGuard 和應用簽名
- 基于模板的向導來生成常用的 Android 應用設計和組件
- 功能強大的布局編輯器置森,可以讓你拖拉 UI 控件并進行效果預覽
Android Studio 2.2
I/O 2016 斗埂,谷歌推出了 Android Studio 2.2 預覽版,按照谷歌的說法凫海,本次更新包含了三個方面: speed, smarts, and Android platform support呛凶,言外之意就是更快、更智能盐碱,而且增加了很多有用的功能
-
Layout Editor
全新的布局編輯器 -
Constraint Layout
約束布局 -
Samples Browser
谷歌示例代碼 -
Instant Run Improvements
改進的Instant Run -
Build Cache
編輯緩存 -
APK Analyzer
APK分析 -
Virtual Sensors in the Android Emulator
支持虛擬傳感器的模擬器 - 除以上之外把兔,此次更新還包括對 Java 8 的支持,Jack 編譯器的改進瓮顽,可以調試 GPU县好,改進了對 C++ 的支持等,推出了不少提升 Android 開發(fā)效率的工具暖混,性能上也做了優(yōu)化缕贡。
在2016年9月19日,谷歌推出了 Android Studio 2.2 正式版拣播。Android Studio 2.2 來啦
Android Studio 3.0
Android Support Library
Android Support LIbrary 庫是谷歌為提供不同版本的兼容包和兼容不同形態(tài)設備提出的解決方案晾咪,通過jar包引入,這是安卓開發(fā)者必須了解的內容贮配。比如 v4 Support Libraries 被設計在 Android 2.3 (API level 9) 及其以上系統(tǒng)中使用谍倦,v7 Support Libraries 支持Android 2.1 (API level 7)及其以上版本,Design Support Library 配合 material design 設計等泪勒,最近的兩次大更新:
Support Library 23.2
更新內容包括:提供對 Vector Drawables 和 Animated Vector Drawables 的支持昼蛀,官方的夜間模式宴猾,Design Support Library 中 新增的 Bottom Sheets,RecyclerView的優(yōu)化等
Android Support Library 23.2:特性介紹
Support Library 24.2
更新內容包括:對 v4, v7 Support Libraries 支持范圍?提升至 Android 2.3 (API level 9) 及其以上版本叼旋,并對他們進行了拆分仇哆,使得項目依賴減少
Android Support Library的前世今生
Material Design
質感設計,是由?谷歌推出的全新設計語言夫植,這種設計語言旨在為手機讹剔、平板電腦、臺式機和“其他平臺”提供更一致详民、更廣泛的“外觀和感覺”延欠。雖然距離 Material Design 設計規(guī)范的推出已有兩年多之久,但它的提出足以讓人興奮不已沈跨,這是谷歌拿出的媲美蘋果的扁平化設計衫冻。標志著不欣賞設計,對設計毫無感覺的?谷歌已是昨日
Material Design中文wiki
Materialup-MD設計靈感
語言
React-native 中文網(wǎng)
隨著移動互聯(lián)網(wǎng)的崛起谒出,實現(xiàn)跨平臺開發(fā)一直都是程序員的夢想。目前移動應用的跨平臺解決方案也很多邻奠,而由 Facebook 主導的 React Native 是?最成熟笤喳,最優(yōu)秀的方案之一。
React Native 是一個跨平臺移動 APP 開發(fā)框架碌宴,基于 JavaScript 和 React 之上可以在多平臺上獲得完全一致的開發(fā)體驗杀狡,提高開發(fā)效率。
Kotlin 中文網(wǎng)
Kotlin 是由 JetBrain 在2011年推出的一個運行在JVM上的語言贰镣, 看上去有點類似C#和Scala的結合呜象,并且同為靜態(tài)類型。作為一門JVM上的語言碑隆,可以輕松兼容Java恭陡,并且整個語言設計的非常輕量。
專注于互通上煤,安全休玩,簡潔,工具健全...可以實現(xiàn) Java + Kotlin 的無縫開發(fā)劫狠。
因為是同為 JetBrain 推出拴疤,所以Android Studio對其有非常良好的支持性。
作為 Android 領域的 Swift独泞,絕對讓你如沐新風呐矾。拋棄沉重的 Java 語法,Kotlin 融入了很多現(xiàn)代編程語言的思想懦砂。如果你受夠了 Java 的繁瑣還有時不時出現(xiàn)的空指針錯誤蜒犯,并且對高級函數(shù)式語言心生向往组橄,kotlin絕對值得一試
開發(fā)模式
MVP
普通的 Android 開發(fā)模式可以定義為 MVC 模式,由 Activity 和 Fragment 充當著 Controller 的角色愧薛。
由于 MVC 中 View 和 Model 之間的依賴太強晨炕,導致 Activity 中的代碼過于臃腫。為了他們可以絕對獨立的存在毫炉,慢慢演化出了 MVP瓮栗。在 MVP 中 View 并不直接使用 Model,它們之間的通信是通過 Presenter (MVC 中的 Controller) 來進行的瞄勾。
安卓設計模式示例
MVVM
數(shù)據(jù)綁定在 Windows WPF 和 Web 已經非常常見费奸,它非常高效的開發(fā)效率,讓你只關心你的數(shù)據(jù)和業(yè)務进陡。對于龐大的項目而言有時 MVP 模式也無法滿足簡化系統(tǒng)開發(fā)的復雜度愿阐,MVVM 就顯的更為重要了。
MVVM 可以算是 MVP 的升級版趾疚,將 Presenter 改名為 ViewModel缨历。關鍵在于 View 和 Model 的雙向綁定,當 View 有用戶輸入后糙麦,ViewModel 通知 Model 更新數(shù)據(jù)辛孵,同理 Model 數(shù)據(jù)更新后,ViewModel 通知 View 更新赡磅。
I/O 2015 魄缚,谷歌推出了 Data Binding 庫作為 MVVM 的框架,Model 將會自動更新 View 而無需經過 ViewModel 焚廊,可以最大限度的實現(xiàn) ViewModel(Activity等) 和 View 的解偶冶匹。經過一年的發(fā)展,從Beta到如今比較完善的版本咆瘟,從Android Studio 1.3到如今2.2的支持嚼隘,可以說Data Binding已經是一個可用度較高,也能帶來實際生產力提升的技術了
Data Binding入門篇
Data Binding高級篇
FLUX
Flux模式最大的特點是單向的數(shù)據(jù)流 unidirectional data flow 袒餐,它的 UI 狀態(tài)更新模式繼承了 MVC 模式的設計思想嗓蘑。 Facebook 開源的 React 系列(React.js / React Native)都是基于此模型。
Android Flux中文說明
Retrofit+RxJava
如果說讓我選 2015 年最令人興奮的 Android 技術的話匿乃,我一定會選 Retrofit + RxJava 這對黃金組合桩皿。Retrofit 是一個應用于 Android 的第三方網(wǎng)絡請求庫,擁有方便獨特的接口定義幢炸,網(wǎng)絡工具的高度集成泄隔,豐富完善的接口回調的特點,更重要的一點宛徊,它可以提供 RxJava 的回調接口佛嬉。而 RxJava 是利用可觀察序列和操作符來編寫異步和基于事件的程序逻澳,十分適用于 Android 的線程機制。兩者的結合是一份非常完美的網(wǎng)絡異步請求框架暖呕。當然 RxJava 還有更廣泛的使用場景斜做。
RxJava的使用總結
Dagger2
依賴注入并不是什么新技術,但是使用在 Android 確實一個新的嘗試湾揽。Android App 越來越被當成嚴肅的大型項目來構建瓤逼,很多在以前大型服務器開發(fā)上使用的技術都被應用到了移動開發(fā)。Android 開發(fā)分模塊開發(fā)库物,使用 Dagger 來松耦合模塊霸旗。特別值得一體的是,Dagger 2 現(xiàn)在由 Google 親自接管戚揭。
dagger2
Android熱更新技術
發(fā)布版本的長周期高代價使得Android的熱更新技術處于炙手可熱的狀態(tài)诱告,雖然方案并沒有完全成熟,或多或少都存在些問題民晒,但各大公司都在積極摸索中精居。
QQ空間超級補丁基于DEX分包方案,使用了多DEX加載的原理潜必,微信Tinker基于前者箱蟆,差距在于提出了一個提供DEX差量包,整體替換DEX的方案刮便,阿里百川HotFix基于Andfix,美團Robust原理類似于Instant Run绽慈。
Android熱修復技術選型——三大流派解析
Android熱更新方案Robust