如何自學Android編程?
送給你們的壁紙
你們期待的終於來了,我可以算作是Android自學界的鼻祖了,之前自學的故事與分享的知識、經驗影響了無數人,如今幾年過去了,我經常收到不少人的感謝信,很多當初看我的教程的初學者如今已經在Android開發小有成就,而且讓我欣慰的是他們也依然延續我的分享精神,影響更多的人。
如果你現在依然是一個Android初學者,不妨到這裏看下我的自學故事:
如何自學Android編程
https://www.zhihu.com/question/26417244
今天廢話就不多說,就來給大家推薦一份詳細的自學教程,幫助你從入門到進階到精通。
準備
自學之路是一項很苦逼的差事,自學的人很多,但能真正堅持下去的很少,在準備自學Android之前你需要具備以下基本能力能幫助你堅持到最後。
1、對Android開發、對互聯網感興趣,興趣是最好的老師,只有發自內心的感興趣才能真正堅持下去;
2、強大的學習能力,既然自學那學習能力肯定是必備,要有很強的求知慾,持續不斷的學習能力纔有機會走的更遠,注意,是持續不斷的學習能力;
3、解決問題的能力,自學過程中肯定會遇到各種各樣的坑,這個時候不要急躁,不要氣餒,不要怕耗時間,一步一個腳印去解決問題,這會爲你今後走上工作崗位帶來極大的優勢;
4、設定一個目標,比如我當初測試轉行開發,自學Android的目標簡單直接,因爲開發比測試工資高,我轉行就是爲了多掙錢。我想大部分人的目標應該都跟我同感。
Java基礎
Android開發是基於Java語言的,所以毫無疑問的是必須要掌握Java基礎,如果你完全沒有任何Java基礎,這步是必須要好好學習的,如果已經有Java基礎的,這步可略過。
對於很多初學者來說入門往往是最難的,如果只看書完全看不下去,也很難理解,所以強烈推薦初學者以書籍結合視頻的方式學習Java基礎,所以給你推薦:
-
《Java語言程序設計》,優點是非常基礎,適合初學者,建議只要看到前十四章就ok了,第十二章也可以略過。
http://book.douban.com/subject/6529833/
-
Mars老師的Java4Android視頻課程結合學習,便於初學者很好的理解與入門。
http://pan.baidu.com/s/1c1beYo4
如果每天至少堅持學習3-4小時的話,這一階段差不多花費1--2個月之間都算正常,範圍因人以及花費的時間而異。
Android入門資料
經過上面的學習相信你已經掌握了Java基礎了,是時候開始正式進入Android學習的階段了。
-
Android學習之路
我自己整理的Android開發詳細資料,這篇博客影響了無數Android開發者,可謂Android開發必備,某種意義上來說,自學Android有這篇博客足夠了。
http://t.cn/Rz79nfR
-
《第一行代碼》
郭霖大神的最新力作,全書由淺入深、系統全面地講解了Android軟件開發的方方面面,而且是針對Android 4.0進行講解的,非常適合Android入門。
http://book.douban.com/subject/25942191/
-
Mars老師的Android開發視頻教程
http://marschen.com/portal.php
-
極客學院Android開發視頻教程
http://www.jikexueyuan.com/path/android/
-
慕課網的Android視頻教程
http://www.imooc.com/course/list?c=android
至於入門書籍我認爲推薦一本適合你的就夠了,而且大部分書籍內容大同小異,但是視頻教程就就不一定講解的內容都一樣了,大家可自行選擇視頻教程。
Android開發工具
-
科學上網
科學上網可以說是程序員必備技能,身爲Android開發者那更得會這項技能,不管你是使用Google也好,還是到Android官網查找資料,下載SDK都必須要翻牆。可以使用goagent也好,修改host,購買vps、vpn等等方式,這個技能不是本文重點,大家可自行搜索去配置。可以告訴大家的是對於新手來說最簡單有效的方式是購買VPN,可以節省不少精力,至於哪個vpn比較好用不敢保證,我使用了兩年的vpn個人感覺相對較穩定,感興趣的可以到我博客主頁去尋找。
-
Android Studio
雖然目前的很多學習資料與書籍都是Eclipse爲主,但是Google已經明確未來Android會拋棄Eclipse,所以強烈建議大家直接使用AS,學習的初期花點時間熟悉使用,上手很快就可以對照eclipse方面的教程轉到AS了。當讓我也在AS1.0剛發佈的時候就已經出了一個針對新手的Android Studio+Gradle詳細教程,是一個系列,幫助你們更快的入門。
http://t.cn/RbH8Q3V
-
AndroidDevTools
我是強烈建議Android開發者一定要學會科學上網的,但是如果你覺得暫時還不需要接觸外面的世界,那麼我的一個朋友搭建的網站,可以讓你們無須翻牆即可下載使用官方SDK。
http://www.androiddevtools.cn/
-
模擬器Genymotion
首先建議大家能不用模擬器都不要用,模擬器的啓動速度簡直是龜速,現在市面上安卓手機很便宜,打算做Android開發沒個安卓手機真是說不過去。如果你非要用模擬器那就推薦你用Genymotion,目前來說最快的模擬器。具體可以看我下面的博客,最後還是要建議大家不要使用模擬器!!
http://t.cn/R4RvAQd
-
Google
問任何問題之前都要先去搜索引擎查一下,這會訓練你的解決問題的能力,而等你以後工作,實際開發中可以知道,有一大半的時間你是在搜索度過的,很多問題都已經是前人遇到並總結的方案。對於新手來說可能百度勉強夠用,但是建議一開始就養成使用Google的習慣,百度在娛樂八卦方面確實靠譜,但是技術方面查出來的東西基本千篇一律,有些答案甚至還會起到誤導作用,直到有一天我的老大告訴我用Google,我才知道這個世界上原來還有另外一個搜索引擎,自此便成爲腦殘G粉,所以一定要用Google!一定要用Google!一定要用Google!!!(重要的事說三遍)
-
StackOverFlow
用Google之後搜索出來的東西還是習慣性的點擊中文結果,直到有一天我發現基本每次搜索排名第一的都是這個網站,於是嘗試着點進去用我蹩腳的英語閱讀,之後真是相見恨晚的感覺啊,上面幾乎能搜到你遇到的絕大部分問題,某種程度上來說推薦用Google搜索的原因之一是因爲排名靠前的答案基本都在StackOverFlow上。
-
GitHub
現在是全球最知名的程序員開源社區,程序員幾乎人手一個GitHub賬號,在上面你可以找到各種各樣牛人分享的開源項目,包括Google、Facebook、Twitter等開源的代碼,簡直是號稱進階必備,某種意義上看大牛的代碼是最好的學習進階方式。
Android開發資源
瞭解這些資源你絕對會接觸另一個世界,這些資源大部分都是我圈中好友總結分享的項目,絕對乾貨!
-
Google Android官方教程中文版
http://t.cn/RvHtswy
-
Android 開發最佳實踐
一些優秀Android開發者總結留下來的經驗,瞭解這些能讓你的學習之路事半功倍。
http://t.cn/RwgJoHm
-
Android開源彙總
GitHub上總結的最全的Android各大開源項目,讓你大開眼界!
http://t.cn/R2LTQkN
-
Android Weekly
瞭解最新的Android相關的技術有哪些,時刻了解緊跟技術趨勢,建議加入郵箱訂閱。
http://androidweekly.net/
-
Android Weekly Cn
我一個朋友做的國內版的Android Weekly,更符合國情。
http://www.androidweekly.cn/
-
Android源碼解析
我的朋友Trinea發起的一個專注於開源項目源碼解析及優秀開源項目的分享的網站
http://p.codekk.com/
-
AndroidDeveloper
我自己的公衆號,算是打個廣告吧,作爲國內Android界的精神領袖,我經常也會在我的微信公衆號上分享一些乾貨,大多爲個人原創,時刻緊跟趨勢,並且只分享對你們有用的乾貨,可以微信公衆號搜索googdev關注。
國內優秀Android開發者的博客
這裏篩選一些有質量的博客給大家,大都是你們的前輩,絕對一線的博客。
-
stormzhang的博客
http://stormzhang.com/
-
郭霖的博客
http://blog.csdn.net/guolin_blog
-
Trinea的博客
http://www.trinea.cn/
-
魏祝林的博客
http://blog.csdn.net/android_tutor
-
愷風(Wei)之Android專欄
http://blog.csdn.net/column/details/flowingflying02.html
-
張鴻洋的博客
http://blog.csdn.net/lmj623565791
-
張興業的博客
http://blog.csdn.net/xyz_lmn
-
更多國內優秀開發者的博客
http://t.cn/RPniqXI
-
國外著名優秀開發者博客
http://t.cn/RPni7a0
國內外優秀Andorid團體博客
-
Android Developers Blog (Android開發者官方博客,須翻牆)
http://android-developers.blogspot.tw/
-
美團點評技術團隊
http://tech.meituan.com/
-
騰訊全端 AlloyTeam 團隊 Blog
http://www.alloyteam.com/
Android進階書籍
當你Android開發已經上手之後,突然發現一直進步很慢,處於一個瓶頸了,這個時候你需要這些書籍。
-
Thinking In Java
Java經典書籍,有中文版的,可能爲了學習Android,你只掌握了Java基礎,但是遠遠不夠,你需要再重新系統的學習一下Java,這是一本值得反覆看的書籍,針對有一定Java基礎的人,會讓你重新認識下Java。
http://book.douban.com/subject/1474824/
-
Effective Java
這是一本實用至上的書,78條建議,滿滿的乾貨。每一條都說明了爲什麼最好這樣,Java進階必備,目前爲止看過這本書評價最好的一本。
http://book.douban.com/subject/3360807/
-
App研發錄
從App架構的角度,重點總結了Android應用開發中常見的實用技巧和疑難問題解決方法,爲打造高質量App提供有價值的實踐指導,避免你在實際項目中踩坑,讀完絕對有收穫。
http://book.douban.com/subject/26649050/
-
Android開發藝術探索
這是一本Android進階類書籍,採用理論、源碼和實踐相結合的方式來闡述高水準的Android應用開發要點,Android開發進階值得擁有。
http://book.douban.com/subject/26599538/
AndroidUI設計
-
Material Design
在開發一款Android App之前,你需要了解下Android平臺的設計規範,這裏有Google最新推出的Material Design中文翻譯版。
http://t.cn/RLrJg33
而且 Google 官方出了一個支持庫 Android Design Support Library,具體用法見鏈接。
http://t.cn/R2orZH9
-
Sketch 3
這個工具只推薦給對UI感興趣的開發者,這是一個專爲設計移動端 UI 的設計工具,作爲開發者,不用懂那麼複雜的 PS 使用,也可以做非常專業設計。
https://designcode.io/sketch
AndroidApp源碼推薦
當你已經做Android開發一段時間,並苦於進入瓶頸,這個時候閱讀一些優秀App的源碼是最好的學習進階方式,借鑑一些優秀App源碼的設計能獲益很大。
-
iosched
iosched項目是Google I/O的官方app,絕佳的學習項目。
https://github.com/google/iosched
-
android-UniversalMusicPlayer
也是Google官方作品,代碼量不大、註釋清晰,簡單但全功能的音樂播放器。
https://github.com/googlesamples/android-UniversalMusicPlayer
-
android-topeka
這個項目是Google前段時間剛發出來,通過這個app,你還可以學到如何設計你app的交互和視覺以更好的和MaterialDesign搭配。
https://github.com/googlesamples/android-topeka
Google的項目有些時候對於初學者有點困難,下面就推薦兩個完整的輕量的學習項目。
-
9GAG
9GAG是我個人的開源練習項目,教你使用Studio、Gradle以及一些流行的開源庫快速開發一個不錯的Android客戶端。
https://github.com/stormzhang/9GAG
-
AnimeTaste
代碼家開源的一個線上關注動畫的一個App,同樣適合初學者學習。
https://github.com/daimajia/AnimeTaste
Android新技術
你需要了解Android有以下新興的技術與框架,有些也許還不成熟,但是你應該去了解下,也許就是未來的方向。
-
Kotlin
作爲 Android 領域的 Swift,絕對讓你如沐新風。拋棄沉重的 Java 語法,Kotlin 融入了很多現代編程語言的思想,作爲開發者,接受新的語言,瞭解新語言的發展趨勢,更有利於開闊你的思路和加深對語言的理解。
http://t.cn/R2DK0SL
-
React Native
Facebook推出的針對移動應用的跨平臺解決方案,目前還不成熟,但是由於Facebook推出,光環效應引起不少目光,這是不是未來暫且還沒結論,但是有必要了解學習下。
http://t.cn/RbHmtOk
-
MVP
MVP越來越多的被Android社區所討論,有點是能夠讓代碼更清晰,但同時也會增加很多類,寫起來更麻煩,不過對於一些不是很龐大的項目卻是非常適合的。這裏提供一個最先採用MVP模式的開源項目:
https://github.com/pedrovgs/EffectiveAndroidUI
-
MVVM
因爲官方支持 DataBinding,把 MVVM 直接帶到 Android 中。它非常高效的開發效率,讓你只關心你的數據和業務,從此數據綁定會更加常見。
http://t.cn/RbHmnhE
-
插件化
一般App上線之後出現bug需要重新提交新版本才能解決,這個就太慢了,由於iOS的審覈原因,插件化在iOS開發常見,阿里業務方面這個特別需要,比如雙十一出了bug,不能眼睜睜的看着bug出現不管吧,所以阿里系衍生出了一系列熱修復的框架,dexposed、AndFix,具體可以見這裏詳解。
http://lirenlong.github.io/hotfix/
-
RxJava
最近響應式編程框架RxJava越來越受大家待見,RxJava讓你異步任務更簡潔方便,以我對技術的敏感性認爲RxJava可能會越來越普遍,推薦大家學習。這裏有一系列詳細的資料教你學習。
https://github.com/lzyzsd/Awesome-RxJava
當你下定決心,準備前行的時候,剩下的只有堅持了!
最後,不少人給我留言說希望我加打賞功能,打賞功能是微信內測功能,目前還沒有被邀請。尾部加入了打賞二維碼,我覺得我的這篇分享值得讓你們打賞。
我自學一路走來收藏的不少有用的電子書、視頻、資料什麼的,如果你們需要的話我考慮整理下發給你們,但是需要花點時間,想要的請打賞支持下我。