1. 程式人生 > >Android 學習指南(2017版)

Android 學習指南(2017版)

Android 學習指南

不斷有新人來詢問如何學習Android,很多都是無從下手,沒有任何概念。正好好久沒寫文章了,今天來整理一下Android學習大綱,同時也會附上部分學習資料,主要還是希望大家能夠根據我提供的關鍵詞和思路,自己逐個突破。

Java基礎

首先是學習Java語言基礎,很多人不明白,我不是學Android麼,怎麼又學Java了?你家的房子是用磚頭堆出來的,隔壁的小區也是磚頭堆出來的,就算是故宮,那還得用磚頭呀。當然了,還有很多建築物不是用磚頭的,有的是純木頭建造,有的是玻璃的、鋼材的、石頭的等等。Java不僅可以用於Android開發,還有其他的開發用途,反之,Android也不是隻能用Java開發,其他也行,這個我們下面再講。

Java的體系很大,但是我們並不需要全部學習,只需要學習Android開發中用到的內容,至於Java相關的其他內容比如Swing、JSP、SpringMVC框架等這些內容我們並不需要學習。

我們需要學習的Java知識有:

  • Java 基本資料型別
  • Java 變數型別
  • Java 修飾符
  • Java 運算子與表示式
  • Java 分支:if...else/switch
  • Java 迴圈語句:for/while/do...while
  • Java Array、List、Map、Set、Collection
  • Java 流(Stream)、檔案(File)和IO
  • Java 異常
  • Java 繼承、介面、抽象類
  • Java 重寫(Override)與過載(Overload)
  • Java 多型
  • Java 泛型
  • Java 執行緒
  • Java 面向物件思想

網上關於Java的學習視訊有很多,比如馬士兵、Mars的都可以,當然這些都是比較老的教程了,不過對於我們學習語言基礎並無大礙,反而經典。

當然學習Java之前你還要搭建好Java開發環境,啥,你以為隨便寫幾行程式碼就能執行嗎?不給你地皮,再多的磚頭也造不了房子。環境搭建很簡單,無非就是安裝JDK、配置環境變數,不同的系統略有差異。然後是開發工具,用什麼來開發呢?最簡單的可以用記事本,通過命令列編譯執行,也可以用其他整合開發工具,例如Eclipse。用什麼工具無所謂,不會加工資的,主要是學會Java語言基礎。

如果你喜歡用記事本的話,那麼給你推薦幾款編輯器

Android基礎

學完Java就可以步入Android的學習環節了,先講講Android開發用什麼開發工具呢?有人說Eclipse呀,沒錯,幾年前我們確實用Eclipse,通過配置ADT外掛,就可以進行Android開發,以後後來Google還出了整合ADT版的Eclipse,更省事,不過這都是幾年前了。現在Google已經不再支援Eclipse,推出了自己的開發工具Android Studio(Eclipse可不是Google的,Android是Google的),所以我們Android開發就是使用Android Studio,且Android Studio是最好用的Android開發工具,沒有之一。

我們需要學習的Android知識有:

  • Android UI元件
  • Android Dialog、PopupWindow
  • Android Activity和Fragment
  • Android 事件機制
  • Android 繪圖和動畫
  • Android 資料儲存
  • Android 廣播(Broadcast)和服務(Service)
  • Android 網路訪問
  • Android 藍芽及相關硬體開發、多媒體等等

以上Android內容只是粗略的章節,大家需要去細化學習,同樣,網上也有很多教學視訊,不過這裡必須推薦我自己錄製的Android教程不吹不黑,絕對是最實用、最新、最詳細的Android視訊教程,隨便看兩集便知。

視訊教程:

書籍參考:

  • 《第一行程式碼》,作者部落格:

至此,恭喜你,你可以去面試找一份Android開發崗位的工作了,在工作中再去慢慢打磨,一步一步踩坑,做個APP出來是沒啥問題的。那麼到這就結束了?當然不是,畢竟建個豬圈跟建個東方明珠塔還是有區別的,很多知識是別人教不了的,只有在不斷的實踐中才能悟出真道理,只需謹記:求知若渴,虛懷若愚。

Android進階

不能僅限於最基礎的開發、控制元件的基本使用、API的正常呼叫,很多內容我們只有深入理解之後才能發現新大陸。

  • 深入理解Android事件分發機制
  • 深入理解Android訊息機制
  • 擅長View的自定義繪製
  • 理解並能合理運用各類設計模式
  • 熟悉多執行緒機制
  • 快取設計
  • 效能優化
  • 閱讀和理解原始碼Android原始碼

這裡我就不推薦書籍了,推薦幾個部落格吧:

Kotlin

為什麼又要學習Kotlin呢,不是已經學了Java了嗎?在2017年 Google I/O 開發者大會上,Google宣佈將Kotlin作為Android官方開發語言。如同Apple推出Swift一樣,Kotlin是否會完全取代Java成為Android開發的主流語言,這將由市場一步步驗證。作為開發者,我們要做的就是不斷提升自己,豐富技能,以應對快速迭代的市場環境。

不建議大家直接學習Kotlin,畢竟目前還沒有整體過渡到Kotlin,一切以實際情況為主,還是先把Java學好,並且Java和Kotlin是可以混合使用的。本人後期也會考慮錄製Kotlin的視訊教程。

學習參考:

常用庫

在實際開發中,很多時候我們會在專案中使用目前比較成熟的開源庫,能夠節省大量的開發時間,且這些庫有專門的人或團隊在維護,比我們自己寫可能會更好,何必重複造輪子呢,而且別人的輪子說不定更好。這邊我整理了比較常用的開源庫供大家參考:

整合第三方SDK

你的專案還可能用到很多第三方SDK,那麼就需要熟悉第三方的SDK使用,還好,這不是什麼難點,遇到一個攻克一個即可。

  • 百度地圖、高德地圖
  • QQ登入、微信登入、微博登入
  • QQ分享、微信分享、微博分享
  • 微信支付、支付寶支付、銀聯支付
  • 極光推送、個推
  • 友盟統計

MVP模式

MVP是一種開發上的模式,它使得我們不再把所有的程式碼都寫在Activity或者Fragment中,實現了View和Model的解耦,通過Presenter來銜接。

M : Model
V : View
P : Presenter

各人各公司寫法多有不同,但是大同小異,Google也給出了相應的Demo供參考:

混合開發

在不斷的探索中,一種很常用的開發方式已經產生,就是混合開發。什麼是混合開發?就是在Android專案中插入H5頁面,通過Java和JavaScript之間的相互呼叫,實現頁面之間的無縫對接。這種方式有什麼好處呢?節省人力、降低維護成本、適配性好,更新方便。

  • 掌握WebView控制元件的使用
    • addJavascriptInterface
    • loadUrl
    • shouldOverrideUrlLoading
    • 其他
  • 熟悉H5開發的相關內容
    • Html5
    • CSS
    • Javascript

當然,輪子還是有的,可以參考或直接使用Github上的開源專案:

外掛化

外掛化開發主要利用 Java ClassLoader 的原理,對於 Android 來說是 DexClassLoader,目前也有很多開源框架。

參考部落格:

熱修復

熱修復和外掛化屬於一個知識體系,Github上也有很多開源專案,列舉幾個相對熱門的:

NDK

上面都是在說應用層開發,也是絕大多數人可能從事的內容。當然,大家也可以往底層發展,做NDK相關的開發內容,不好意思,本人沒有相關經驗。

跨平臺開發框架

這個其實不完全屬於Android開發內容了,應當屬於前端範疇,作為補充知識瞭解一下。所有WebApp框架(一套程式碼兩個包)基本都有以下特點:

  • 使用 Html5 + CSS + JavaScript 開發
  • 豐富的UI元件庫
  • 封裝大量JavaScript API
  • 提供原生API訪問介面
  • 提供硬體訪問介面
  • 提供除錯、打包等服務
  • 適配性好

介紹幾款還算常用的跨平臺框架:

  • React Native
    React Native 是 Facebook的開源框架。

  • MUI
    國產,DCloud出品,配合HBuilder使用,官網號稱最接近原生APP體驗的高效能前端框架
    MUI 網址
    之前也寫過一篇關於MUI的文章,大家可以參考

  • Ionic
    用Ionic必須會AngularJS

  • 其他

程式碼管理

協作開發以及多版本開發時,我們需要使用程式碼管理工具來幫助儲存合併程式碼,常用以下兩種:

網站推薦

如果看到這你還不知道還如何學習Android的話,那麼也沒關係,世界那麼大,為什麼非要搞Android呢。



作者:天哥在奔跑
連結:https://www.jianshu.com/p/f6681e417d40
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。