如何自學 Android 編程?

想自學android編程,從何入手。2000年本科入學,期間學過c c++ 數據結構,之後就再也沒有用過。本人數學專業出身。求大牛們指點迷津。


2017 年 6 月 8 日更新:

14 年的帖子沒想到已經成為「自學 Android」話題最火的帖子了,轉眼間我都已經自學Android 差不多 5 年多的時間了,評論里說文中很多博客鏈接打不開了,是因為我博客換了自己的域名,之前 GitHub 默認的域名訪問不了了,目前已更正。還有人比較關心我現在的發展情況,目前依然在薄荷工作,現在不在是一個 Android 程序員了,現在是薄荷的產品技術負責人,移動端主管,新的里程碑,也是新的挑戰。

另外評論里很多人問了不少問題,沒時間一一回答,建議大家關注我的微信公眾號:「googdev」,裡面有你們想要的內容,裡面記錄了我這一路走來的心路歷程,現在更多的分享一些編程、職場、思維相關的感悟,相信對很多 IT 行業從業者有幫助。。

http://weixin.qq.com/r/5kxWTj3EE2BsrXkt9xn0 (二維碼自動識別)

===============================
瀉藥。我想我是有資格來回答你的問題的,我算是徹底的從編程白痴一步步學習過來的。

之前寫了一篇博客 Android學習之路 被瘋狂轉發,帶起了一陣學習Android的大風,我不曉得具體影響了多少人,但是這篇博客已經成為Android新手學習必備的資料。很多人問我是怎麼一路過來的,姑且借這個機會說說我的故事吧。

===============================
內容有點長,大家姑且當做勵志小說來看吧,對這些經歷不感興趣的可以直接看最後「如何自學Android」部分
===============================

  • 大學

大學上的是全國二流本科,專業主要就是數學專業。大學的總結就是:逃課、掛科、籃球、泡妞、Dota。

目前為止可以說我的大學是我這輩子過的最爽的時期,大一開始就逃課,好點的理由是我對大學那些課程完全沒興趣,其實本質上是因為高考太壓抑了,大學之後沒人管了,開始無止境的放縱自己。毫不誇張的說大學四年上的課應該沒有逃的課多。逃課最直接的影響就是掛科,從大一掛到大三,專業課數學分析特么每年都掛,後來聽說補考考不過要重修,還得交錢,這特么讓家裡人知道還了得,於是發憤圖強,最終補考每門都以優秀的成績過了。

相信英語四級應該是大學必考吧,英語四級這輩子我都忘不了,我考了三次才過,每次考試說是裸考都褒獎了,大學英語全是吃高中的底子,第一次沒過,少了十幾分,第二次他媽睡覺睡過了,就沒有去考,現在想想當時的自己真是腦殘,終於在第三次勉強過了。現在想想幸虧當時過了,之後畢業找工作時英語四級是最低要求。做編程這行,英語真的挺重要的,大學的時候一定得想辦法把四級給過了。

現在想想大學和編程唯一相關的課程就是C語言了,但是對於我們專業是屬於全校公開課,最終這門課雖然考過了,但是連i++ 和++i我都弄不明白,可想而知你們應該能猜到我是怎麼過的。

由於高中就開始打籃球,大學時毫無疑問就入了學院籃球隊,而且擔任隊長,所以大一、大二過來基本就是一大半是在籃球場度過的,也是因為籃球征服了我現在的老婆。大二下學期周圍的人都在玩Dota,於是也開始了遊戲之路,籃球也基本放棄了,那時候玩的瘋狂,記得最長的一次和同學在網吧連續包夜兩星期,不過白天是回來睡覺的,不然估計早猝死在網吧了。

轉眼間大四了,這一年終於在我老婆的監督下不再掛科了,而且在畢業前的最後一次評比竟然拿到了三等獎學金,真是受寵若驚啊,後來錢也被狐朋狗友們拿去腐敗了。周圍的同學都在準備考研,我卻唯獨對考研沒興趣,自始至終都沒有為考研花過一分錢,買過一本書。後來證明我的決定是正確的,周圍的小夥伴放棄的放棄,考不上的考不上,考上的後面也沒見混的有多好,當然如果能考上好的學校還是很有幫助的。

  • 畢業

又一轉眼畢業了,去參加了學校幾個招聘會也是醉了,全是沒聽過的小企業,一去參觀都是各種廠房,根本不需要任何學歷,是個人出點力都可以乾的那種,要麼就是各種電話銷售。。。那時候真的有點急了,大學四年,畢業一份像樣的工作都找不到,回去怎麼面對鄉親父老。

三月份的時候一家IT測試培訓機構來做宣講會(具體什麼名字我就不說了,免得認為是廣告),聽完之後就說培訓之後包就業,培訓地點在大上海的最中心,當然是自費,但是可以工作之後分期付款。那時候哪知道測試是幹嘛的,更不懂IT是幹嘛的,回來就查了下這個機構確實存在,網站也有的,知道不是騙子遍決定來上海試一試。當時下定決定要來上海培訓之後,幾個狐朋狗友毫不猶豫的跟著我一起來了,總共應該是7個人,決定之後沒幾天便毅然而然的背著大包小包來到上海,我們之中一部分是一次性付費,另一部分是分期。後來證明我們當時來上海的決定是正確的。

  • 培訓之路

這裡並不是宣傳大家去培訓,只不過被工作所逼,學校不好,大學也沒學啥真本事,稍微有點出路都不會去培訓!

培訓的日子還是蠻輕鬆的,一周就上四天課,朝九晚五,畢竟大家家庭都不富裕,家裡辛苦攻讀了四年大學,畢業還要再交錢去培訓,打心裡大家都很愧疚。一開始卯足了勁要好好學習,但是堅持了沒多久就有點放鬆了,但是好歹也是都有學習的。

培訓的時候算是接觸了點編程吧,課程有C語言、Oracle、Linux,然後其他都是軟體測試的理論,其實都是非常基礎的東西,算是帶你入行吧,Orace就學習一些基本SQL語句,Linux就學了幾個命令,但是起碼知道原來電腦可以干這麼多事,之前還一直以為電腦就是用來看電影、聊天、打遊戲的呢。現在回頭看給我一周的時間我可以看完整個培訓課程,但是當時的培訓周期要四個月。

  • 第一份工作--SunNet

7月份拿到畢業證書就直接來了上海,四個月的時間對於我來說實在太漫長了,我等不及了,於是在課程還有最後一個月的時候我提前出來單獨找工作,當時培訓老師說工作後的工資大多是3500左右,我覺得我學的比別人好,所以必須要比別人高,做好了長期準備面試的過程。沒想到面試第一家就直接錄取了(後來才知道原來是公司的測試懷孕在家,急需測試),公司名叫SunNet,中文名山諾,工資4000。收到offer的時候欣喜若狂!

  • 真正接觸編程

之後便在SunNet正式入職,工作就是測試,但是就在SunNet我才真正的接觸了什麼是編程。SunNet是一家小型外企,總部在休斯頓,上海這邊主要是研發部。研發人員總共不到10人,主要業務是以web為主,使用語言是.NET。當然我的職責就是web測試了,工作倒是沒什麼難點,主要測試就我一個,一進來就有好幾個項目等著我測試,還好自己是數學專業,邏輯思維能力還不錯,加加班總算能按時完成任務。

三個月的時間順利轉正,之後的某一天偶然得知公司一開發人員工資比我高2000,其實也就比我早畢業一年而已,才知道原來開發和測試工資差距這麼大,於是當時就下定決心要轉行做開發,所以說起我從測試轉行開發的原因是因為錢,一開始說因為興趣堅持下來的都是扯淡。。。

  • 編程之路

由於在公司我的主要任務仍然是測試,任務也挺多,基本每天要9點能到家。下定決心之後只能利用業餘時間來學習,由於公司主要業務是.NET,很自然我一開始學習的方向便是.NET,後來才了解到.NET是基於C#的,學習.NET之前必須要先學習C#,於是像公司借了一本C#學習資料,就這樣學習了大概兩周吧,還仔仔細細做了一大堆筆記。之後覺得語法學的差不多了,便又借了本.NET的書開始學習web開發。

但是web開發遠沒有學習一門語言這麼簡單,後來才知道web開發涉及到html, css, javascript, ajax, database等,範圍太廣了,於是為了效率,我只能每一項掌握住基礎,於是網上搜索找到 w3school 在線教程 這個好東西,裡面的東西都是基礎的,我把教程整理到手機里,每天上下班的地鐵上,吃飯的時候,回家的時候等等利用一切時間來學習,也是差不多大概2周的時間掌握了html, css, js的一點基礎,接下來準備正式學習.NET的時候,被我們老大知道我正在學習開發,我們老大叫Aaron,是一位典型的程序員,比較胖,人品超好,知道後不建議我學習.NET,說.NET出來都十來年了,已經很成熟了,很多人在學校都有.NET教程,現在學習已經比別人晚了。現在移動開發剛嶄露頭角,也沒多少人會,建議我直接學習移動開發。真是一句點醒了我啊!!

  • 移動開發

聽了老大的建議,於是放棄了.NET,開始準備學習移動開發。那時候是12年初,整個移動互聯網也是剛起步階段,iPhone4還是非常火的時候,毫無疑問我把目標鎖定在了iPhone開發上。

這次有經驗了,知道了iPhone開發首先肯定得有一門編程語言的,了解到是Objective-C,於是又從公司借了一本OC的書(公司書很多,老大每月都會買來好多書,雖然看的人很少),又花了將近一周的時間來了解了基本語法,因為之前學了C#,這次沒完全看完的情況下想直接上手實踐。正打算學習的時候,才知道iOS開發必須得在mac上才可以,也就是說我得自己有台mac電腦,雖然當時公司是有的,但是回家的時候不能繼續學習練習,肯定影響效率的,一台mac對於當時的我簡直是奢侈品,雖然現在也依然是奢侈品,但當時根本不可能買得起。於是只有放棄iPhone開發轉向Android(後來才知道有虛擬機這東西。。。)

  • Android學習之路

幾經波折,終於才確定自己的方向,這期間已經耽誤了不少時間,走了不少彎路了,但是仍然阻擋不住我轉行開發的腳步。公司關於Android的書竟然沒有,於是我自己親自買了一本Android書籍,叫《瘋狂Android講義》,作者是李剛!!不說這本書有多好吧,這本書比較厚,非常厚,所以講的一些基礎比較細,新手按照上面的完全可以看懂,現在不知道這本書內容更新了沒,之前內容對於現在來說有點老。這個時候應該是12年的3月份,說起來也巧,這個月公司剛好接了個移動端項目,iOS有人來做,但是公司上下沒有會Android開發的,其他人都有自己的項目在忙,老大看出我的興趣,就問我想不想試一下,我當然欣然同意了,只此就開始正式的邊做邊學習Android。

那個時候的測試任務仍然很重,於是我只能擠出時間來做這個項目,基本是每晚以及周末都會自動加班來完成這個項目,現在看來那個項目真是太簡單不過了,快的話一周都不要就可以搞定了,但在當時我摸爬滾打了一個多月總算搞定了。

做完這個項目自己有了點信心,但當時自己的主要任務還是測試,自己開發的時間是少之又少,於是下定決心離職找一個專門做Android的工作。說明原因之後老大很理解,也是建議我想做開發的話就放手去找一個專門做開發的職位,這樣進步會比較快。

第一份工作能遇到我的老大Aaron,真是我的福分!

  • 薄荷

12年4月底離職之後,我便開始在家裡準備面試,投簡歷,由於自己的基礎很薄弱,之前的Android經驗也非常少,那時候說是招聘Android職位,但是很多公司面試基本全是Java內容,而且我能感受到工作內容和Android相關的也比較少。來薄荷面試的時候感覺很好,包括CTO、CEO的面試都感覺不錯,果然沒幾天就收到offer,來之不易的機會,非常珍惜。

12年5月中入職薄荷,你們以為我到了薄荷之後Android之路就一帆風順?錯了,路更艱難。我是薄荷入職的第一位Android工程師,薄荷在那時候只做iOS平台的App,事實證明這種做法不可取,包括BOSS後面也親自說投資人來投資的時候一看數據這麼少,後面做了Android平台之後用戶數據才慢慢上來,畢竟還是Android用戶基數大。

來薄荷的第一個任務是做聯想TV的一個視頻App,很蛋疼,折騰聯想的SDK,遙控器等,好歹App功能比較簡單,試用期間完成的還不錯,就這樣順利轉正了。轉正之後做了第一個Android App,叫減肥食物庫,功能與頁面全部Copy iOS版的App。這個時候一大堆沒做過的東西全部湧來了,網路庫、http、api對接、組件定製等等,那個時候沒有像現在各種資料、開源庫一大堆,公司也沒人能給指導,只有硬著頭皮慢慢來,為了能把進度趕上去,上線前夕曾經連續在公司通宵三天三夜,累了就在公司趴一會,這輩子就經歷過這一次,雖然項目最終也拖延,但總算在接受範圍之內上線,這在當時是第一個試水Android平台的App,可惜的是上線之後表現不好,沒有達到預期的效果。

  • Ruby、Rails

這個App試水表現不好之後,公司決定暫停Android業務,主攻iOS平台。我的位置就變得很尷尬,CTO找我談話希望我能轉做Ruby,Android業務會暫停,我們後端的api全部是基於Ruby語言的,雖然當時心裡有點不情願,但是沒辦法,為了不丟掉工作我只得硬著頭皮做下去,於是就開啟了我的Ruby之旅。

學習Ruby以及Rails是我目前為止遇到的最大的困難。Ruby是一種動態語言,Ruby On Rails是一種流行快速開發web的框架。學習ruby不同地方在於要學習Linux,代碼基本全是在終端進行,沒有IDE,沒有編譯檢查,習慣各種命令行。這對於一個剛開始進行開發的人來說真的是太困難了。那個時候從內心也有抵觸,學習領悟能力也超差,我能感覺到公司領導層對我已經不是很滿意了,現在想想那時候公司沒能開除我真是得感謝我們的CTO,一個很有耐心、敢於給新人機會的人。中間遇到非常大的困難,還好得到薄荷ruby工程師小夥伴們的幫助,一直鼓勵我,遇到問題總是不厭其煩,在基礎、經驗、能力不行的情況下,我總得克服這種困難,讓別人看出我的態度。於是學習Ruby、Rails的那段時間我每天都是做最後一班公交車回去,我記得好像是11:40. 這個狀態持續一個月,包括周末,從未間斷。

這一個月我在公司的主要任務就是學習,沒有給安排任何事情,偶爾幫同事修修電腦,調下電話線,為此我非常感謝薄荷,感謝我的CTO Vincent,恐怕這在任何一家公司都不能這樣給一個人單獨的學習時間吧。一個月之後,學習的終於有點起色,開始實際做Rails項目,做後台,寫api,雖然效率很低,代碼很爛,但是在做Ruby的過程跟著我們CTO學了不少設計上的東西,面向對象的思想,設計模式等都在這個階段接觸的,自此我已經習慣各種終端操作,熟悉一些Linux基本命令,喜愛Ubuntu,參加了Ruby Conf 2012大會,喜歡Sublime,接觸Git,GitHub,搭建了自己的Blog。我感謝做Ruby的這段時間,他讓我接觸了不一樣的世界,心態完全變了,變得更開放,更樂於分享。

  • 回歸Android

做ruby的這段時間很是快樂,付出了這輩子最艱辛的努力,換來了點小小成果,我喜歡ruby語言,到現在為止都認為ruby是最優雅的語言。但是Android在我心裡一直都有一個位置,從未放棄過。直到13年5月的時候,這個時候Android份額近乎瘋狂的增長,公司不得不開始注意Android市場,於是公司打算推出Android版app,於是作為公司唯一的Android程序員,CTO再次徵求我的意見,問我想繼續做ruby還是做Android,雖然我更喜歡ruby語言,但是從心底我更喜歡客戶端開發,和語言無關,客戶端是用戶最能感知的一部分,做出的東西更有成就感一點,我就在等待著這個機會,這一刻我毫不猶豫的選擇繼續做Android。

回歸Android開發的我一個人開發新的App,單槍匹馬,經過之前的一系列挫折,突然感覺再沒有更困難的了,一個人摸索架構、克服難題,App一推出便一直快速瘋狂的增長,目前薄荷App總用戶數已經破千萬,公司也順利融資,業務發展越來越好。

  • 後話

由於一個人一步步過來,我深知這其中的不易,之後自己一直堅持寫博客,除了自己的積累外,還希望幫助更多的人,所以現在你們可以看到不管是我的GitHub,博客,微博還是微信公眾賬號都很樂於分享,希望自己走過的這些彎路你們能少經歷,雖然最終我也到達了終點,但是如果能有直路可直達最好不過了。

  • 總結

上面啰啰嗦嗦的敘述我的這些陳年經歷,看似和題主的問題無關,其實有很大關係:

1. 如果你是非科班畢業想要轉行編程,看了我的經歷你一定很有信心與動力,我能,你一樣能,何況我中間走了這麼多彎路;

2. 如果你接觸過一些數據結構、編程語言之類的,想要學習編程,想題主這種,你更應該有信心,你比那些非科班的人已經多了一些基礎,你要做的只是堅定信念,堅持走下去;

3. 不要感慨上天的不公平,一路走來很悲催,走了太多的彎路,遇到了太多的困難,都是我這輩子難以忘記的坎坷,但同時我是幸運的,我的前任老大Aaron以及現任CTO都深深的影響著我後來的職業發現,我在薄荷的一些小夥伴們對我的幫助,我女朋友無數個日夜的理解與支持,上帝在給你製造坎坷的時候總會對你有些眷顧;

4. 如果你準備或已經在做開發的人員,沒有信心或動力,又或是對未來迷茫的時候,姑且當做一篇勵志小說來看,你要做的就是做好你當下在做的事,相信你的付出一定能有所收穫;

  • 建議

評論里有人說是在校生,想要給點建議,那就以一個反例的身份給出事後的一些建議吧:

1. 每天花1小時看書,難的不是1小時,難的在堅持;
2. 最好不要掛科,因為掛了你還是得花時間補回來;
3. 英語對編程來說很重要,試著習慣英語閱讀;
4. 數據結構和演算法要學好,這算是對編程來說最重要的課了,以後不見得能用得上,但用的時候起碼你有印象;
5. 大三或者大四一定要去實習,對於編程來說經驗還是比較重要的,實習經歷比你那些理論要有效的多;
6. 找個女朋友吧,不是說工作了你就找不到了,而是工作之後從事編程很少有時間和精力去接觸別的女孩,所以可以的話在畢業前找個可以同甘苦的女朋友吧;
7. 第一份工作很重要,因為你會受一些周圍同事、公司氛圍的影響,我為自己遇到Aaron、Vincent而感到幸運,他們倆是我目前為止最尊重的兩個人;

  • 如何自學android編程

最後才應該是題主最需要的:

1. Android學習之路 前面說過我的這篇博客是Android新手必備資料;

2. 書不在多,適合你就好,這裡推薦一本Android和兩本Java書籍吧;
《第一行代碼》:郭霖的著作,聲明下我沒有看過,但是郭神博客質量很高,書自然也不會差;
《Thinking In Java》:Java經典書籍,不必說;
《Effective Java》:Java進階必備書籍;

3. 有些人一開始看書也有困難,沒關係,那就去網上看視頻,結合視頻和書一起看,邊看邊敲,推薦下Mars老師視頻,包括java基礎以及Android篇都有:Java4Android.zip_免費高速下載
極客學院的視頻:零基礎Android學習路徑圖
口味不同的人可去各大網站自行搜索適合自己的教學視頻。

4. 多去混GitHub,目前最流行的開源社區,多參與開源項目,慢慢試著讀牛人們的代碼,時機到的時候自己也可以為開源社區貢獻力量,可以這樣說在GitHub上認真混一年,比你在大學四年學的東西要多的多;

5. 關注一些Android界不錯的博客:
我(stormzhang)的博客:http://stormzhang.com/

另外還可以關注我的微信公眾號 googdev,我會不定期分享一些過來人的經驗與感悟,相信會對部分同學有幫助。

Trinea的博客:Trinea
代碼家的博客: 代碼家

6. 善於利用搜索引擎,從用Google做起,學會英文關鍵字搜索,有問題第一時間想到去搜索而不是去請教別人;

大家都有了以上相同的教程,但是人和人之間的區別在於:別人有顆更強大的內心,可怕的是比你聰明的人比你還要更努力!!

當你下定決心,準備前行的時候,剩下的只有堅持了。。。

===============================
我是華麗的分割線
===============================
我是很少在知乎上正經回答問題的,沒想到這個回答引起這麼多人關注,引起了很多人的共鳴,收穫了這麼多點贊,這裡針對很多人的私心以及評論做點補充吧:

1. 回答中提到了培訓之路,很多人要推薦培訓機構,其實一方面當時沒有經驗,也比較迷茫,迫不得已才去培訓試一試的,後來過來後其實培訓學不了什麼東西,我後來轉行Android完全是自學,和培訓一點關係都沒,所以不推薦去培訓,最終得靠自己;

2. 有人問我單獨開發的app是什麼,我現在公司名是薄荷科技,app也叫薄荷,你可以去各大市場搜索「薄荷」,排名第一的應該就是,從架構到實現一直都是一個人在做,總用戶現在差不多過千萬了,當然現在已經不是一個人在開發了,現在帶領一個小團隊在做,你可以下載體驗下,不過現在依然有很多不足之處,我們一直在努力改進;

3. 文中提到我學習了很多語言,很多人比較疑問,是都需要學這些語言么?當然不是,我是因為走了不少彎路,有些語言為了工作不得不去學的,不過後來證明學的這些東西對自己是有很大幫助的,但是如果你確定了方向建議你直奔主題,現在社會需要一門精而不是門門通的人才,現在有很多「全棧工程師」的概念,其實都是在建立在一門精的基礎上才去別的領域發展的,所以不要妄想一開始就成為「全棧」,還有如果你對當前做的事很抵觸,覺得一直糾結在功能上,但是又沒法去改變的時候,不妨竭盡全力把當前做的事做好,後面你會發現有事情做自己不知不覺總是會進步的;

4. 很多人找到我博客,搜索到我被Facebook邀請,具體見這篇博客 被Facebook邀請的前因後果 , 雖然這算是對自己技術能力的一個認可吧,但是在技術上遠沒有大家想像的那麼牛逼,我一直在努力提升自己的技術,但是仍然有很多需要學習的,自己也一直在堅持學習,現在也一直想靠自己的技術來改變自己的生活,起碼不拼爹(主要是拼不了),但是後來才感覺到技術並不是一切,千萬別陷進無止境的技術坑裡,有很多事情比技術更重要,這個就等待大家自己慢慢發掘領悟吧。。。


作者:陳昱全
鏈接:如何通過自學成為一名安卓軟體開發工程師? - 陳昱全的回答 - 知乎
來源:知乎
著作權歸作者所有,轉載請聯繫作者獲得授權。

感覺這個問題我是挺有回答資格的。
我是12年金融學專業畢業的,Android都是大學的時候自學的,畢業的時候做百度雲的Android開發,現在的職位是騰訊的Android高級研發工程師。

所以我感覺我是可以分享一下我自己自學Android的一些經驗,而且這些經驗也是通用的,比如我還有自學PHP用來寫後台開發等等,希望對大家在開發道路上能有一些幫助。
我們做工程師的一般都有助理,普通,高級,專家等的區分,我把自己的自學之路抽象成初級之路,中級之路,以及還未達到的高級之路。依次來分析下,如何能夠通過自學的方式,在技術之路上一步步提升。

1、初級之路
1.1 項目引路
對於自學的人來說,在邊做邊學的過程中是最容易起步的了。我的技術之路也是這樣開始的,當年參加創業大賽的時候,我們想做一個類似於Admob的產品,拉上一堆好友開始做產品,由於我們缺乏技術,所以自己也上場了。從一個實際的項目開始,學習java學習android一步步的完成產品的開發,在後續的過程中,我們還做了一款抄襲Bump的軟體叫做:《分享樂》以及一款聚會O2O軟體我也忘記啥名字了,也許你現在還能在豌豆莢上搜索到。

1.2 學習
Java
JAVA核心技術(卷1) (豆瓣)
Effective java 中文版(第2版)
Android
Android開發入門教程 (豆瓣)
這個階段我的學習資料主要來自於書本,那個時候是10年的時候了,網上資料還並不是特別多(個人到現在也是習慣書本系統學習),我記得Java語言是學習的《Java核心技術》,這個系列有兩本書,這本書可以理解成一本工具書,對於Java的講解面面俱到,在你不記得相關的知識的時候需要拿出來,鞏固學習。而Effective Java的學習是進階學習,在了解Java的基礎的前提下,開始學習更多知識點。
學習完Java後,就按照入門教程上說的慢慢的做Android開發,這個時候API主要是在Android開發入門教程上做對照。但是這個時候大家都會遇到一個情況就是,實現之後會出現一些莫名其妙的問題,所以還必須要會利用一些平台去搜索。

1.3 解惑
現在Android的資料已經滿天飛了,最好的方式就是VPN+google的方式了,基本上大部分的問題都已經有了答案,因為行業已經很成熟了。我們那個時候相關資料比較少,都是去論壇提問的多,比如那個時候的eoeandroid以及csdn的移動論壇,在裡面搜索答案或者自己提問,這樣就能解決很多疑惑了。
現在大家最好的地方就是:
https://www.google.com
Stack Overflow

1.4 找工作
1.4.1 策略
學習+刷題
當你不斷的學習和做項目總結經驗,總結遇到的坑和解決方案後,這個時候我們要從草根發展走向專業之路了,所以我們需要一份工作。
面試的時候,大公司對於應屆生的要求主要還是集中在基礎,所以對於數據結構+演算法以及計算機基礎知識是非常重要的。

1.4.2 資料
這個時候我的學習資料主要是:
數據結構與演算法分析 (豆瓣)
編程珠璣 (豆瓣)
C程序設計語言 (豆瓣)
計算機網路 (豆瓣)
操作系統 (豆瓣)
不過很遺憾的是,後面2本看得比較少了,操作系統更是無法看懂,於是乎只能更多的去刷一些題目。

1.4.3 面試策略
內推+面試經驗
內推最好的就是聯繫上你心儀公司或者產品的直接負責人、面試官或者開發者,比如你可以聯繫我,QQ空間和騰訊微雲(我會直接面試你)都在招聘(強行做個廣告)。社交平台是聯繫他們最好的渠道了,我那個時候就是通過微博找到了百度雲的移動端負責人,然後獲取了面試的機會(那個時候我們還在做一個百度通訊錄的產品)。
面試的策略比較簡單,就是先去一些自己不太願意去的公司,多積累面試經驗,把那些不會的都去搜索答案,然後弄懂弄會,然後再去面試自己心儀的公司和產品。

1.4.4 系統學習
進了公司之後你會發現,以前你寫的都不是商業化軟體,只是實現了功能,完全沒法去保證質量和設計。所以工作後有很好的機會去學習商業軟體的開發,在這個過程中也是要多依靠自己不斷的學習提升,這就是我們的下一個話題了----中級工程師之路

update:2017年1月26日

2、中級之路
2.1 要求
中級開發者更多還是能夠比較好的完成一個大型商業軟體的核心功能模塊,或者中小型商業軟體的整體架構。

2.2 技能樹
很多人想要知道技能樹,比如通用的:
計算機網路、資料庫、存儲,數據結構、軟體架構和設計、編碼語言以及平台特性等技術點。
還有很多很多的技能樹,而這些其實都依賴於你的項目經驗和項目特性,為了點亮這些技能樹,我們抽象出來更抽象層級的技能樹。


2.2.1 解題思路

  • 為什麼解題思路很重要

很多人不解的是,為什麼很多大公司總喜歡問一些演算法題,而忽略自己的項目本身。其實很多時候當你的項目經歷不夠或者還不夠深的時候,面試官了解不了你得解題思路,不知道你遇到其他複雜問題的時候是否有好的方式去解決。
實踐出真知,我來考一個問題,這個是我們實際開發中就能遇到的,比如我們設計了一套數據通知機制,存儲結構是鏈表,這個鏈表的排序方式是ModifyTime,現在有通知過來要更新一個數據,這個更新的數據ModifyTime也已經變化了,怎麼能更高性能的去更新這個數據呢?(這個問題還可以深入下去,除開ModifyTime排序外還可以依賴更多排序規則,這樣你的數據結構又是如何),這個策略的優化足夠的讓我們在大量數據的時候量級的優化性能。

  • 如何提升解題思路

(一)基礎紮實
首先我們要有比較紮實的基礎技術能力,這個題目我們要的是紮實數據結構和演算法能力,如果我們要做上傳下載速度模塊,那我們就會需要很強的計算機網路和存儲這塊的基礎知識了,這些基礎是我們解題思路的保證。

(二)學習很重要
這個學習是學習前人的,學習別人的,其實做很多事情都是有套路的,多去看源碼和優秀的一些組件,多跟組內大牛交流,了解別人怎麼做的,往往能讓我們思路更加的開闊,從而讓我們也有更加多的解題思路。

2.2.2 軟體架構和設計
知道解題是第一步,思路有了,但是如何才能讓我們的代碼更加方便維護和擴展呢?
現在的大部分童鞋都是基於面向對象的開發方式了,大家知道為什麼你的項目開發不用面向過程的寫法呢?(雖然很多時候我們還是面向過程的開發)

  • 面向過程 VS 面向對象

以前我們總是吐槽,產品經理沒事就改需求,互聯網產品的開發更多的時候是面向變化的,而面向過程的開發是需要明確需求的情況下開發的,否則一旦需求變化你的流程可能就全不對了,整體都需要重寫。這也是為什麼,我們很多時候用面向對象的語言基於面向過程的開發,在需求變動後是那麼的難以維護,所以只有吐槽產品經理。

  • 如何提升

很多人對沒有設計經驗的同學推薦設計模式的書籍,這些我是不推薦的,那些設計模式是我們在建房子基礎上的裝飾,最關鍵我們要解決的問題是:

  • 如何從現實世界映射到對象世界
  • 如何通過對象世界去描述現實世界的方法
  • 如何驗證對象世界的行為是否正確反映了現實世界的方法。

這裡我推薦一本書:
大象:Thinking in UML(第2版)

高階提升
有了這個基礎之後,你可以看看設計模式,更為重要的是多看優秀組件或者系統源碼,這些源碼的設計和對設計模式的應用是非常多的,能幫助你在良好的建模之後還產生更多優雅的代碼。


2.2.3 經驗
(一)經驗的作用
好的工程師有豐富的開發經驗,一個業務在你做之前他就知道瓶頸在哪裡,需要注意哪些地方?
舉個例子:關於錯誤碼的設計,一個業務模塊錯誤碼的設計是否可以隨意設計呢,只要和後台不重複即可?
那麼問題來了,我們現在要針對一些錯誤進行重試,那麼遇到錯誤碼後我們怎麼區分應該重試還是不重試呢?如果寫死幾個錯誤碼,那以後擴展了怎麼辦,後台下發如果不及時或者錯誤碼越來越多了怎麼辦?
這個時候老司機會告訴你,老司機會告訴你HTTP的錯誤碼設計很好,因為他是依賴數欄位:
HTTP協議中的1xx,2xx,3xx,4xx,5xx狀態碼分別表示什麼,列舉常見錯誤碼及含義 - 上帝的寵兒 - 博客園

(二) 如何擁有豐富的經驗
項目經驗+總結+重複造輪子
項目經驗豐富你自然而然懂得就多,踩過的坑就越多,多總結你才能記憶更深刻,更加能夠系統性的去歸納這些經驗,重複早輪子你才能知道沒做過你總會錯過那麼多的坑。
多看優秀的源碼,有可能的話重複造一遍也挺好的。


2.3 開闊的視野
很多國內技術項目怎麼來的呢,因為國外有優秀的解決方案了,比如當年FB解決了2.3的LinearAlloc的問題,國內的解決方案開始爆棚了。比如FB的Buck構建,國內多少技術團隊基於此做了構建優化(也得到了晉陞)。這裡我就不多說了,有能力的同學多做做創新吧。
國內外互聯網公司有哪些比較優秀,經常更新的技術團隊博客? - 互聯網公司 - 知乎
這個問題值得大家收藏下

2.4 培養他人和帶領技術團隊的能力
這個領域我暫時就不展開了。

接下來就是高級之路的分享了
3、高級之路
未完待續

PS:知乎排版怎麼都給丟了,大家將就著看吧。。。


以下為本人收集整理的資料,僅供參考,不喜勿噴,歡迎交流。

一、 基礎篇 需要掌握的技能如下:
1、熟練掌握基本控制項以及容器控制項的使用 ;

常用的基本控制項有:Button 、TextView、EditText、ListView等

常用的容器控制項有:FrameLayout、LinearLayout、RelativeLayout等

2、熟練掌握相關監聽器的註冊和使用:

常用監聽器有: OnClickListener、OnLongClickListener、OnItemClickListener等

3、掌握Log的使用以及分析方法 ;

4、掌握Activity、Service的生命周期和使用方法 ;

5、掌握BroadcastReceiver(廣播)的接受和使用 ;

6、掌握Intent以及IntentFilter的使用 ;

7、基本掌握資料庫方面知識,包括SQLiteDatabase以及ContentProvider的使用方法
除此之外,我們必須得掌握adb shell 的使用方法,常用功能有:adb pull 、 adb push 、 adb remount 指令等
由於shell類同於Linux shell ,我們還得掌握基本的Linux指令等,例如cat、cd 等 。

知識獲取渠道主要為:

Android SDK以及網上大牛的博客。
附: 關於基礎知識的介紹,國內的一些書籍質量真是相當差勁,味同嚼蠟。強烈不建議在此階段買書籍,如果一定要購買的話建議郭霖老師的《第一行代碼》。
網上搜索Mars老師的視頻以及黑馬學院的就業班視頻也可以在淘寶網上購買。
實踐出真知。這個階段,你可以自己編寫一些小Demo了,幫助自己在更深層次發展了。

二、 提高篇 需要掌握的技能如下:
1、掌握Canvas類的使用-- 如何繪圖

2、掌握消息通信機制---Handler相關類的使用以及原理

3、掌握Context類以及實現原理

4、掌握View樹的繪製流程 。 View繪製流程很重要,掌握它就基本上掌握了Android核心之一了。

4.1、掌握觸摸事件的分發流程--- onInterceptTouchEvent以及onTouchEvent方法流程

4.2、掌握相關監聽器的調用機制。例如OnClickListener監聽時怎麼調用的?

4.3、能夠編寫自定義View以及ViewGroup

5、理解Binder機制----Binder機制很重要,Android的進程間通信都是靠它完成的。掌握它,才能夠好的完成接下來的學習。

6、基本掌握ActivityManagerService類的使用,主要掌握的知識點包括如下:

6.1、startActivity()流程,即啟動一個Activity的流程 ;

6.2、startService()流程,即啟動一個Service的流程 ;

7、基本掌握PackageManagerService類的使用,主要掌握的知識點包括如下:

7.1、開機時如何解析所有已安裝應用程序的Apk包的信息

7.2、Intent以及IntentFilter的匹配規則以及解析過程

8、基本掌握View添加至窗口的過程---即WindowManagerIml 、WindowManagerService類的用法

知識渠道:
必備書籍: & Android源代碼一份

三、 進階篇

1、基本理解SystemServer類載入流程以及WatchDog的功能

2、more......
前面說的博客,在此推薦兩個我常去的吧:
1、 應用方面,主要是魏祝林的csdn博客 :Android_Tutor的專欄 。 但他的博客主要是以代碼為主,需要自己結合源代碼揣摩 。

2、 框架方面,主要是老羅的csdn博客 : 老羅的Android之旅 。 但他的博客主要是以流程分析為主, 而對 流程 需要的前期準備知識介紹不足,初步看起來比較難以理解,因此,買本《Android內核剖析》是必須的,可以參考源代碼仔細領悟, 強烈推薦該書籍。
由於網路上Android源碼不太好找,特此共享下Android部分源碼,主要包括框架層、中間層、以及一些App等,對上層開發和中間層開發還是很有用的。

以下是一些源碼下載鏈接(部分鏈接可能已經失效):

├─地圖相關

Android bikeroute自行車導航源碼.rar: Android bikeroute自行車導航源碼.rar

Android Gps Test源碼.rar: 6bb4f0e826.rar

Android GpsTracker源碼.rar: 10045c6be0.rar

Android 百度地圖API-定位周邊搜索POI源碼.rar: e9a6811fe0.rar

Android 百度地圖API源碼.rar:
5c720d2c82.rar

北京公交線路查詢(離線).rar:
ff269959b6.rar

獲取Gps信息的程序源碼.rar: e976485be6.rar


├─安全保密

Android 人臉識別功能使用源碼.rar: c2dbdd714f.rar

Android 圖形解鎖源碼.rar: 1ade3da33c.rar

Android 圖案解鎖之九宮解鎖源碼.rar: 4aca0da508.rar

Android 安全衛士源碼.rar: Android 安全衛士源碼.rar

Android 安全衛士源碼.rar: Android 安全衛士源碼.rar

Android 屏幕鎖源碼.rar: 89c647f2ec.rar

Android 手機防火牆源碼(DroidWall).rar:
f3ee7131b4.rar

Android 網路監視器源碼.rar: 0d20a8b057.rar

Android 遠程視頻監控程序源碼.rar: 1faa744540.rar

├─攝影圖像

Android 3D相冊圖片滑動+傾斜+放大+倒影處理源碼.rar:

Android 3D相冊圖片滑動+傾斜+放大+倒影處理源碼.rar

Android Google官網的圖片緩存源碼.rar: 252fa06c76.rar

Android PhotoStore圖片瀏覽器源碼.rar: 7494975138.rar

Android 二維碼識別源碼.rar: Android 二維碼識別源碼.rar

Android 仿美圖秀秀和IOS系統的相機膠捲.rar:
http://www.t00y.com/file/64337351

Android 區域截圖源碼.rar: http://www.t00y.com/file/64337363

Android 圖片瀏覽功能源碼.rar: b1f9c395b2.rar

Android 圖片瀏覽源碼.rar: http://www.t00y.com/file/64337576

Android 多種統計圖表源碼.rar: http://www.t00y.com/file/64337346

Android 常用圖片特效處理源碼.rar: Android 常用圖片特效處理源碼.rar

Android 水果相冊瀏覽器源碼.rar: http://www.t00y.com/file/64337567

Android 炫酷相冊源碼.rar: Android 炫酷相冊源碼.rar

Android 畫圖工具源碼.rar: http://www.t00y.com/file/64337358

Android 畫圖程序源碼.rar: 1dafcacc60.rar

ImageView控制項縮放和旋轉圖片源碼.rar: http://www.t00y.com/file/64337628

PC機攝像頭攝像數據在Android手機上同步顯示的源.rar:

6181623581.rar

調用系統相冊和系統照相機功能雨實例源碼.rar:
http://www.t00y.com/file/64337632

├─生活相關

Andriod 日程管理軟體源碼.rar: f8ae95e8a2.rar

Android MyContacts通訊錄源碼.rar: http://www.t00y.com/file/64337612

Android UI界面漂亮的天氣預報源碼.rar: Android UI界面漂亮的天氣預報源碼.rar

Android 萬年曆源碼.rar: http://www.t00y.com/file/64337866

Android 個人記賬軟體.rar: b6658f6522.rar

Android 事務提醒工具源碼.rar: 1f94fbee5d.rar

Android 仿Siri的中文語音助理源碼.rar:
Android 仿Siri的中文語音助理源碼.rar

Android 體重計算源碼.rar: 072c155261.rar

Android 健康飲食搭配源碼.rar: http://www.t00y.com/file/64337669

android 公交查詢.rar: dcea5bdc01.rar

Android 北京地鐵導航源碼.rar: http://www.t00y.com/file/64337636

Android 醫藥助手源碼.rar: 2cc8fe8a08.rar

Android 名片識別源碼.rar: http://www.t00y.com/file/64337756

Android 城市天氣預報源碼.rar: http://www.t00y.com/file/64337643

Android 備忘錄源碼.rar: http://www.t00y.com/file/64337639

Android 天氣預報加widget源碼.rar:
c168e1e309.rar

Android 天氣預報源碼.rar: c8fd21444d.rar

Android 完整的通訊錄項目源碼.rar: Android 完整的通訊錄項目源碼.rar

Android 宿舍值日隨機生成器.rar: 9ef7868e71.rar

Android 小米系統之便簽源碼.rar: 32408a1cff.rar

Android 小鋼琴源碼.rar: Android 小鋼琴源碼.rar

Android 帶手勢划動功能的日曆源碼.rar: http://www.t00y.com/file/64337644

Android 影院選坐源碼.rar: f20c4fa235.rar

Android 快捷查詢源碼.rar: http://www.t00y.com/file/64337705

Android 手機小鬧鐘源碼.rar: http://www.t00y.com/file/64337779

Android 時光日誌個人日程管理源碼.rar: http://www.t00y.com/file/64337774

Android 瀋陽公交源碼.rar: Android 瀋陽公交源碼.rar

Android 生活手冊源碼.rar: http://www.t00y.com/file/64337773

Android 秒錶倒計時源碼.rar: 1e4895d9ee.rar

Android 簡單的機票預訂系統源碼.rar: a58c7a3ae2.rar

Android 簡單計步器源碼.rar: fa8287fa74.rar

Android 精美憤怒的小鬧鐘源碼.rar: http://www.t00y.com/file/64337676

Android 節日簡訊回復助手源碼.rar: 1aaef2fd1e.rar

Android 藍蟲火車票余票查詢源碼.rar: http://www.t00y.com/file/64337706

Android 記賬本源碼.rar: 50eb9e32ce.rar

Android 超簡單的電子購物程序.rar: http://www.t00y.com/file/64337640

Android 酒店預訂系統源碼.rar: Android 酒店預訂系統源碼.rar

Android 閃光燈手電筒軟體源碼.rar: 053493865d.rar

Android 隨手記記賬應用源碼.rar: http://www.t00y.com/file/64337791

android城市列表特效-觸摸查找源碼.rar:
http://www.t00y.com/file/64337887

android日記系統源碼(資料庫的基本操作).rar: android日記系統源碼(資料庫的基本操作).rar

android查詢軟體源代碼(身份證號,號碼歸屬等).rar:

6ac6fd2604.rar

ndroid 查詢工具源代碼.rar: 582788a67b.rar

ShareSDK超級強大的社會化分享(強大分享界面UI).rar:

ShareSDK超級強大的社會化分享(強大分享界面UI).rar

天氣提醒程序源碼.rar:
http://www.t00y.com/file/64337916

手機歸屬地查詢程序.rar:
http://www.t00y.com/file/64337915

├─聊天通訊

Android SipDroid客戶端源碼.rar: http://www.t00y.com/file/64337935

Android SMSPopup速讀簡訊源碼.rar: http://www.t00y.com/file/64337939

Android TorProxy和Shadow開源項目.rar:
http://www.t00y.com/file/64337949

Android ViewPager+Fragment實現QQ界面.rar:
http://www.t00y.com/file/64337952

Android 仿QQ客戶端及服務端源碼.rar:
http://www.t00y.com/file/64337955

Android 仿飛鴿傳書源碼.rar: Android 仿飛鴿傳書源碼.rar

Android 公司通訊錄(含來電號碼姓名查詢和搜索功能).rar:

1d82c28353.rar

Android 完美高仿的微信源碼.rar: Android 完美高仿的微信源碼.rar

Android 驢友社交系統源碼.rar: Android 驢友社交系統源碼.rar

Android簡單通訊源碼:手機控制PC的關機、重啟、.rar:

http://www.t00y.com/file/64337985

android藍牙聊天的應用源碼.rar: android藍牙聊天的應用源碼.rar

Imsdroid語音視頻通話源碼.rar: Imsdroid語音視頻通話源碼.rar

安卓程序源碼之完美高仿微信源碼.rar:
安卓程序源碼之完美高仿微信源碼.rar

└─輔助類庫

Android 3D倒影效果源碼.rar: http://www.t00y.com/file/64336548

Android Activity設置相同的action進行判斷源碼.rar:

http://www.t00y.com/file/64336550

Android afinal開源框架實例源碼.rar: http://www.t00y.com/file/64336551

Android Fireworks煙花效果源碼.rar: 1f71dbca60.rar

Android fleep滑動切換tab(切換帶動畫).rar:
Android fleep滑動切換tab(切換帶動畫).rar

Android GridView拖拽實例源碼.rar: http://www.t00y.com/file/64336572

Android ImageView圖片循環跑馬燈效果源碼.rar: 7ea561b6b3.rar

Android ListView下拉刷新 Demo.rar: http://www.t00y.com/file/64336576

Android ListView反彈效果源碼.rar: 5dce42b5e4.rar

Android OpenGL的一個簡單的例子.rar: 7cff75f0d1.rar

Android opengl繪製飄動的國旗效果源碼.rar: a57efc3b25.rar

Android PathEffect效果實例源碼.rar: http://www.t00y.com/file/64336579

Android ScrollableTabHost tab控制項.rar: 5d658f6d6e.rar

Android Spinner圖文混排源碼.rar: http://www.t00y.com/file/64336581

Android SwipeView類似桌面的滑動界面.rar: http://www.t00y.com/file/64336585

Android TabHost內嵌ActivityGroup界面管理源碼.rar:

30ffb01372.rar

Android Tools4U源碼.rar: Android Tools4U源碼.rar

Android ui開發類庫示例源碼.rar: http://www.t00y.com/file/64336592

Android WeatherForecast應用源碼.rar: http://www.t00y.com/file/64336594

Android WebViewJS應用源碼.rar: http://www.t00y.com/file/64336595

Android 三種圓形緩衝的進度條源碼.rar: 497c84b92d.rar

Android 下拉通知效果源碼.rar: 6849b3a980.rar

Android 不同形狀的進度條源碼.rar: 128ffc4842.rar

Android 與php伺服器交互實例源碼.rar:
9ac2e4bab1.rar

Android 仿360惡意廣告攔截掃描UI效果源碼.rar: Android 仿360惡意廣告攔截掃描UI效果源碼.rar

Android 仿微信二維碼名片源碼.rar: http://www.t00y.com/file/64336733

Android 仿快播搜索框上方懸浮的文字搜索源碼.rar:

b595e5bc6e.rar

Android 仿新版人人的效果源碼.rar: http://www.t00y.com/file/64336735

Android 仿谷歌側邊欄導航源碼.rar: http://www.t00y.com/file/64336713

Android 使用Gallery_tabhost實現標籤效果圖源碼.rar:

7c51ee5217.rar

Android 使用opengl寫動態壁紙的類庫.rar:
http://www.t00y.com/file/64336779

Android 倒計時實現源碼.rar: http://www.t00y.com/file/64336617

Android 吹一吹效果源碼.rar: 80ad843185.rar

Android 圖像冰凍特效源碼.rar: 2ebc727776.rar

Android 圖像柔化美白特效源碼.rar: http://www.t00y.com/file/64336819

Android 圖像連環畫特效源碼.rar: 6236481b95.rar

Android 圖表生成類庫.rar: http://www.t00y.com/file/64336809

Android 多種android控制項的Demo.rar:
http://www.t00y.com/file/64336660

Android 實現QQ好友列表源碼.rar:
http://www.t00y.com/file/64336772

Android 屏幕顏色的變換源碼.rar: 49d7604c3d.rar

Android 應用軟體自動更新源碼.rar: http://www.t00y.com/file/64336847

Android 拍照與錄像切換UI源碼.rar:
http://www.t00y.com/file/64336769

Android 控制項抖動效果源碼.rar: ec9d7b0116.rar

Android 搜索關鍵字飛入飛出效果源碼.rar: 3daceef049.rar

Android 支付寶控制項介面示例源碼.rar: 8d455b78e7.rar

Android 顯示GIF動畫源碼.rar:
a17a400db9.rar

Android 模仿iphone時間滾輪控制項源碼.rar:
http://www.t00y.com/file/64336768

Android 水波效果源碼.rar: Android 水波效果源碼.rar

Android 測試周圍環境分貝的功能源碼.rar: 2abfe87b33.rar

Android 滑動翻頁源碼.rar: http://www.t00y.com/file/64336756

Android 點擊屏幕更換圖片源碼.rar: http://www.t00y.com/file/64336651

Android 點按鈕添加TableRow源碼.rar:
http://www.t00y.com/file/64336622

Android 煙花效果源碼.rar: 9e3fe4cffa.rar

Android 焦點圖片滾動源碼.rar: 4071e081c2.rar

Android 用戶界面之重寫onKeyDown方法源碼.rar:
ee967cb36d.rar

Android 登錄界面記住密碼功能源碼.rar: 472f87bc31.rar

Android 百度地圖之自定義公交路線源碼.rar: http://www.t00y.com/file/64336601

Android 簡單2D動畫源碼.rar:
b6f37c3413.rar

Android 網易新聞橫嚮導航源碼.rar: faf51782ba.rar

Android 自定義泡泡效果源碼.rar: 124fac4a7e.rar

Android 視頻浮動窗口源碼.rar: http://www.t00y.com/file/64336780

Android 觸摸屏幕產生小氣泡的效果應用源碼.rar: http://www.t00y.com/file/64336613

Android 超炫的Path Button效果源碼.rar:
Android 超炫的Path Button效果源碼.rar

Android 逐幀動畫源碼.rar: http://www.t00y.com/file/64336855

Android 隨手勢進行3D旋轉的源碼.rar:
http://www.t00y.com/file/64336796

Android 非常漂亮的滾動選擇日期控制項.rar: http://www.t00y.com/file/64336746

Android 音樂播放器歌詞列表式同步顯示功能源碼.rar:

70f4b91450.rar

Android 頁面特效集合源碼.rar: http://www.t00y.com/file/64336842

Android 顏色選取控制項.rar: ef59f47f6a.rar

Android 風車效果源碼.rar: f901df65a1.rar

Android 高仿WIN8系統磁貼點擊下沉傾斜效果源碼.rar:

44510a4e15.rar

Android火焰效果程序源碼.rar: http://www.t00y.com/file/64336858

EditText插入QQ表情源碼.rar:
http://www.t00y.com/file/64336860

載入時閃爍點樣式的啟動畫面.rar:
a5a35ec689.rar

安卓遊戲打地鼠源碼.rar:
安卓遊戲打地鼠源碼.rar

帶文字的ProgressBar Demo源碼.rar: ed9806e246.rar

進度條對話框Demo.rar:
http://www.t00y.com/file/64336875

365MobileSecretary v1.0.6(365手機助手AIDL).rar: 365MobileSecretary v1.0.6(365手機助手AIDL).rar

AdXmpp(Openfire+asmack+spark).rar:
AdXmpp(Openfire+asmack+spark).rar

AidlDemo(簡單aidl的例子).rar:
e25ad43cb4.rar

aidl跨進程調用.rar: c9a9389d2c.rar

andbatdog電池監控.rar: 673fdd28a8.rar

andbatdog監視電池.rar: http://www.t00y.com/file/64263068

andricoFacebook客戶端.rar: http://www.t00y.com/file/64263069

Android Gamex木馬分析報告.rar: fa9d5b0a4c.rar

Android 股票源碼.rar: http://www.t00y.com/file/64263071

android-stocker.rar:
android-stocker.rar

Android下的加密信息客戶端 WhisperSystems-TextSecure.rar: d0c4374ead.rar

Android與js交互.rar:
c7bc35a6c9.rar

Android中監聽電話狀態.rar: 6d818808c7.rar

Android之Wifi學習教程.rar:
63b1e39d4a.rar

android各種感測器實例源碼.rar: 40b41140e0.rar

android在wifi下手機與電腦的socket通信.rar: http://www.t00y.com/file/64263114

Android手機的VoIP客戶端 Sipdroid.rar:
Android手機的VoIP客戶端 Sipdroid.rar

Android源代碼定時情景模式切換.rar: http://www.t00y.com/file/64263079

Android簡訊攔截源碼.rar: http://www.t00y.com/file/64263080

Android股票K線圖.rar:
512eebae87.rar

Android股票StaticChartDemo.rar: 9f215b5cec.rar

Android自動發送簡訊.rar: http://www.t00y.com/file/64263115

Android遠程登錄含有loading登錄效.rar:
http://www.t00y.com/file/64263116

Android通訊錄(含服務端).rar:
http://www.t00y.com/file/64263155

BOOK看遍所有UI控制項.rar:
BOOK看遍所有UI控制項.rar

BrewClock鬧鐘.rar: BrewClock鬧鐘.rar

BTAndroidWebViewSelection(webview選擇文字).rar:
2c46ac06f9.rar

hotel賓館系統.rar: 3db8d26667.rar

ImageView 圖片循環跑馬燈的效果.rar: ae865fe612.rar

ipcamera-for-android 手機變成IP Camera.rar: http://www.t00y.com/file/64269795

三國殺版連連看(使用html5的canvas特性,純javascript開發).rar: 6383d52fd9.rar

個人消費記錄軟體.rar:
http://www.t00y.com/file/64269796

五種不同的Toast效果.rar: http://www.t00y.com/file/64269797

從網路上獲取圖片.rar:
d38423e806.rar

倉庫管理系統(單機版).rar: 倉庫管理系統(單機版).rar

仿ireader書架.rar: http://www.t00y.com/file/64269800

仿優酷Android客戶端圖片左右滑動(自動滑動).rar: 仿優酷Android客戶端圖片左右滑動(自動滑動).rar

仿百度新聞(手機端和伺服器端源代碼).rar:
46d65bf6b6.rar

休閑生活網路版 伺服器直接訪問即可.rar: 休閑生活網路版 伺服器直接訪問即可.rar

使用Vitamio打造自己的Android萬能播放器(1)——在線播放.rar:
http://www.t00y.com/file/64269803

側邊欄滑動.rar:
http://www.t00y.com/file/64269804

免流量藍牙聊天軟體源碼.rar:
http://www.t00y.com/file/64269805

擊潰360手機衛士的三大防護.rar: http://www.t00y.com/file/64269806

動畫效果 translate、scale、alpha、rotate 切換Activity動畫
控制項位置調整.rar: da65864e3c.rar

原來PATH的菜單效果如此簡單。布局+TranslateAnimation搞定.rar:
79ea639747.rar

商情商靈商測試系統源代碼.rar:
87c54c02a4.rar

圖片陰影效果和影子效果.rar:
http://www.t00y.com/file/64269809

圓環菜單,只有你想不到的,沒有做不到的.rar:
http://www.t00y.com/file/64261871

在Android遠程上傳以及下載圖片---XFire框架.rar:
c327d6b01c.rar

基於socket通訊的文件續傳!.rar: d9683fd86d.rar

基於股票的一個Android應用(內含源碼).rar:
2503348945.rar

多點縮放字體DEMO.rar:
b56e03c3e2.rar

多級PopupWindow的小demo.rar: http://www.t00y.com/file/64269814

大學生信息管理查詢系統2.rar:
http://www.t00y.com/file/64269815

大學生信息管理系統.rar:
http://www.t00y.com/file/64269816

大學生課堂考勤系統(PHP+MYSQL+android).rar: http://www.t00y.com/file/64269817

大學生課程表.rar:
ae68fd8816.rar

安卓WIFI密碼破解工具編寫初探.rar: da0e9f1fd6.rar

嵌套TabHost示例.rar: 04726a7d02.rar

平台水波效果.rar:
b30c9c93cb.rar

開發 API人臉檢測實例教程.rar: e859357947.rar

開發之 SD卡的使用.rar: 57500ff6d1.rar

開發源碼分享之在線音樂播放器完整項目.rar:
6f49b17da5.rar

引用第三方庫的方法.rar:
http://www.t00y.com/file/64263156

手機RSS閱讀器(html5).rar: http://www.t00y.com/file/64269789

抖動窗口.rar:
抖動窗口.rar

拉響手機QQ安全警報:聊天記錄查看器的編寫.rar: 9b528500b7.rar

指南針定位源碼.rar:
246b02e972.rar

換膚.rar:
http://www.t00y.com/file/64269827

改進10-yannihui(音樂播放器).rar: http://www.t00y.com/file/64269828

易訂餐源碼_快速訂餐[android+PHP+mysql.rar: 易訂餐源碼_快速訂餐[android+PHP+mysql.rar

模仿engadget菜單.rar: 50c4051b88.rar

模仿UC等軟體啟動畫面載入時閃爍點的樣式.rar: 7613c371e9.rar

模仿微信導航頁效果源碼.rar:
b6834c9d30.rar

畢業設計管理系統.rar:
http://www.t00y.com/file/64269790

漸入漸齣動畫 無閃爍 無黑底 Demo.rar: http://www.t00y.com/file/64269791

用戶註冊,登錄的簡單實現.rar:
http://www.t00y.com/file/64263174

監控別人的行蹤.rar:
4025e99941.rar

高仿丁丁優惠券源碼.rar:
高仿丁丁優惠券源碼.rar

高仿基於android2.2(Froyo)的Contacts.rar: 6b4e557b63.rar


就看天氣V2.0更新並且開源
1. [RxJava](GitHub - ReactiveX/RxJava: RxJava)
2. [RxAndroid](GitHub - ReactiveX/RxAndroid: RxJava bindings for Android)
3. [Retrofit](GitHub - square/retrofit: Type-safe HTTP client for Android and Java by Square, Inc.)
4. [Glide](GitHub - bumptech/glide: An image loading and caching library for Android focused on smooth scrolling)

項目地址:
Github: GitHub - xcc3641/SeeWeather: RxAndroid+Retrofit+Glide+Matrial Design Weather App

就看天氣該應用就是如同它的名字一樣,只做一個單純、簡單的看天氣軟體。這麼多天氣軟體,你選擇了我,這是我的幸運。

從 15 年 10 月上線,到目前經歷兩次重大改版,一次代碼的重構,一次界面的大幅度改動,目的都是為了你們。 在開源的過程中,收到了很多來自有趣的你們的郵件。我也曾遇到過棘手的問題無處諮詢又谷歌不到。那個時候的我,也可能是現在的你。所以我希望能夠幫助到你。


截圖:

以下是很老的答案,不太適合現在 Android 學習的路線,不過可以當做一個歷程來看。
---------------------------------分隔線------------------------------------------
&>&>&>&>
準備

想借自己這款「就看天氣」說說自己接近半年來的Android開發之路,也算是自己這段時間的學習總結和知識沉澱。

自己是重慶某高校大三學生,軟體工程學院。在學校大一的時候學習的是C++(當然這個特別難懂的語言著實打擊了我一陣子,所以沒有學好),大二在學校學了Java。在Java學習過程中,比大一時候要輕鬆很多,就我個人而言,認為學習Java比C++要輕鬆,然而還是不明白學校為什麼還是要把C++的學習放在大一。

決定學習Android是自己很早的想法了,但是真正落實去做是放在了大二暑假。

這之前自己做了如下準備:


▼ 一台配置不錯的台式(SSD+8G內存)

▼ Java基礎知識

▼ 極客學院Vip賬號(非廣告,當然你還有其他選擇,比如慕課網的視頻也不錯)

▼《第一行代碼》


一個好的電腦確實是必需品,現在寫Android應該都開始用Android Studio了吧,這個IDE配上SDD+8G內存你才能優雅的寫代碼~

Android學習之前真的要把Java基礎學好,這樣你學Android的時候才不會特別痛苦。掌握基礎之後再學Android,還可以邊學習Android邊複習Java,一舉兩得。

現在很多網上的視頻教程,我個人最開始是跟著極客學院視頻走的,而且還加上翻《第一行代碼》這本書。雖然這本書是用的Eclipse,但是你用AS重寫是完全沒有問題的。


&>&>&>&>

實戰

只有在實際操作中你才能知道自己哪些方面的知識欠缺,才會知道開發過程中會遇到哪些噁心的BUG,才會主動的去思考,搜索方案去解決這個問題。而且在自己實踐中,也獲得了很多開發應用的樂趣。而自己特別喜歡這種創造帶給自己的快樂,也是這樣才讓我喜歡去敲代碼吧。

每個天氣類應用邏輯就是特別簡單,但是這個小應用也能讓你明白很多Android的知識。整理了下自己開發這款的思路:


▼ 獲取省會列表


自己獲取省會城市列表是應用本地資料庫,該資料庫里包含了省——市——鄉三級,Android里用SQLite進行資料庫處理操作,最後用ListView顯示出來。

這裡會學到的知識就是:SQLite,Cursor,簡單的ListView+Adapter。


▼ 獲取天氣信息


這裡獲取天氣信息是從獲取到用戶要查什麼城市名稱後跟地址組合發送給「和風天氣」API,它會返回給我一個JSON數據。

這裡會學到的知識是:Android的網路通信。這裡我自己用的是android-async-http庫。


▼ 處理天氣信息


獲取到返回的JSON數據後,需要對這個JSON進行解析,這裡我用的是Gson這個庫,並且用SharedPreferences進行保存。

這裡會學到的知識是:Json數據的處理,SharedPreference常用庫的應用。


▼ 更新UI


從SharedPreference獲取指定數據,並實現UI更新。

這裡會學到的知識是:對Android線程的理解。

&>&>&>&>

應用

就看天氣---個人向天氣類應用

#斷斷續續寫了2個月

#實戰+資料+看書+整理 這樣的自我學習模式很有效果

#已經在豌豆莢,魅族應用,http://Fir.im等平台上線,

#希望你們喜歡而且能夠做出自己喜歡的應用


無人邀請自答。
先自我介紹,大學本科半科班,通信工程,今年大三,一年半的安卓開發經驗,准搜狐安卓實習生。
我開始學安卓也是從《安卓瘋狂講義》開始,但是回過頭我還是覺得那本書不是很好,我推薦的是,如果有編程經驗,先學好java,了解基本的知識,然後開始看《第一行代碼》(只推薦前半部分),然後去Android developer看谷歌的training,有了基本的認識後,再去看Android的API,了解下基本的控制項和屬性,然後實踐。再然後就可以看看慕課,視頻難度都不大,對著學,然後理解很關鍵哦。最後的話,就是去做幾個demo,認識一些大牛,然後去找個公司實習,不牛逼都難。
進階的話可以看下《開發藝術探索》,《設計模式》等等書籍,然後了解自定義view和事件分發,內存管理等等。

..............................手動分割
有人看,所以我補充一下,學技術有即時反饋還是挺重要的,不然容易自我鬆懈,所以可以去幫別人做些demo啊,自己做些小工具什麼的,也很有成就感。然後最後可以去實習,然後經驗夠了之後,就可以去做小公司的全職了,上段時間去做半全職,一天200也是挺爽的,畢竟吃住在學校,嘿嘿。還可以有個大的項目經驗 ,所以邊學邊用,很重要。


--------------手動分割
部分知友想知道實習部分,我覺得自己學永遠不知道自己多菜(當然我當年不玩知乎),所以有公司做安卓的要你就行,我第一份實習是暑期實習,也就1800不包吃住,不過學到了很多東西,漲了很多見識,也奠定了自己做IT的決心,所以實習很重要哦。希望大家都找到合適的實習。
附上進階方法 Android 開發有什麼進階的書么? — 郭大大 的回答 - 知乎
http://www.zhihu.com/question/46623798/answer/102703593
附上好用的工具

Android開發時你遇到過什麼相見恨晚的工具或網站? — 郭大大 的回答 - 知乎
http://www.zhihu.com/question/27140400/answer/103053468
求贊。。。。


來講講我的故事吧~
入Android的坑,大概是今年三月初剛開學的時候,答主本人日語專業(不要感到驚訝),因為我所在學校本專業就業情況不是很樂觀,所以我就決定學習一門技術充實自己,剛好日語+軟體工程是一個不錯的方向,我自己也對移動開發很感興趣,所以當時我就在知乎上搜索了一番,這個問題也進來過^_^,當時讀完贊數最多的那幾個答案,覺得自己可以大膽試一試。第二天就在某寶上買了一本第一行代碼,等快遞的那幾天就把Android Studio和開發環境在電腦上配置好,等書到了就從第一頁開始慢慢啃。因為本專業課程不是很多,所以基本上每天下午都是帶著書和電腦去圖書館敲代碼。剛開始的時候很吃力,因為我相當於是零基礎,Java的基礎知識都不懂,就一邊看翁愷老師的Java課程視頻一邊敲第一行代碼上的Demo,那個時候進度很慢,基本上是每天解決一個小知識點的樣子,不過我也不著急,每天進步一點點也是很好的嘛。啃完第一行代碼花了差不多一個月的時間,那個時候大概已經對Java語法和Android有一定了解了,但是只是那種最基礎的了解。啃完第一行代碼我就有點迷茫了,不知道接下來幹什麼好。。。我覺得我的Java基礎還需要進一步加強,於是到知乎上繼續搜索怎麼學習Java,結果陰差陽錯看到一個回答上說推薦看Thinking in Java,於是我就馬上到某寶上買了一本ThInking in Java。。。結果你懂得,買回來看起來不是一般的吃力,於是我又重新到知乎上搜索還有哪些書比較好,然後我就買了一本瘋狂Android講義,這本書感覺還不錯吧,講解的比較詳細,感覺可以當一本不太全面的中文開發文檔用。跟著這本書練了一段時間後,我的幸運星來了。我突然想到我有個老鄉是我們學校計算機專業的,於是我就去問他能不能幫助我,我的那位老鄉真是太有老鄉情義了!他說他可以給我提供一些介面給我試試手,順便檢驗我的水平,然後接下來的時間我就埋頭扎進了真正意義上自己寫的第一個APP中,那個APP是一個點名簽到軟體,主要是解析JSON,現在看來其實也不是很難,但是我在寫的時候遇到了很多麻煩也發現了自己的很多問題,學到了很多東西。我覺得學習最重要的是實踐這句話真的一點都沒錯,在書里學到了理論知識你不運用到實踐中的話就永遠不知道自己是否真的掌握了它們。寫完後我那個老鄉覺得我寫的還不錯,於是就把我介紹給了他的老師(我這個老鄉人真的好到爆啊!),和那個老師簡單的會面之後,他覺得我人品還不錯,就願意帶我了。他希望我放暑假的時候去他公司里學習,那裡有Android工程師。我當時想這TM是千載難逢的好機會啊!就義無反顧地答應了。到了公司之後我就跟著公司里的工程師開始學習了,有人帶就是感覺不一樣,每天都能感覺的到自己在進步。再過一個星期就要開學了,我的Android學習之路還有很長,希望能和你們一起加油^_^!!!

最後附上兩個自己寫的APP,第一個是Metro風格天氣預報,第二個是Metro風格的知乎日報,喜歡的話就Star一下吧~
WeatherForecast:GitHub - rawghtsteven/WeatherForecast: A Metro Design Weather Forecast Application
Knowhy:https://github.com/rawghtsteven/Knowhy

以下是APP截圖

———————————————————我是分割線———————————————————


《阿里技術協會-Android 基礎課堂》系列學習資料今日更新:

Android 基礎課堂 - Lesson.6

Android 基礎課堂 - Lesson.5

在這裡給各位同學推薦阿里云云棲社區《阿里技術協會0-Android 基礎課堂》系列學習資料,從Android發展史、環境搭建、創建工程、Android五大布局、Activity組件使用、APP界面搭建以及各種編程技巧應有盡有,講解的十分詳細,詳細課程列表如下:

Android 基礎課堂 - Lesson.1

Android 基礎課堂 - Lesson.2

Android 基礎課堂 - Lesson.3

Android 基礎課堂 - Lesson.4

此話題阿里云云棲社區已關注,後續持續更新中


Android_Data 這是我一邊學習 Android 開發一邊收集整理的一份旨在幫助 Android 初學者快速入門以及找到適合自己學習的資料 。

說起我之所以收集這份資料,是因為我在 GitHub 上面看到一份有關於初學者學習 iOS 資料 trip-to-iOS , 當我看到這份資料的時候,內心開始不停的感嘆,如果我學習 iOS 開發那這份資料對我來說是多麼好的學習資料,可是由於學習 iOS 開發的成本極高,加上當時家庭經濟條件不允許,所以我選擇了 Android 開發,於是我就對自己說我要在自己學習 Android 開發過程中,將對自己學習 Android 開發有幫助的資料都收集起來,到時候也要分享給更多 Android 初學者來學習。

我剛開始學習 Android 的時候,我在網上搜了好多資料,其中有些資料對初學者來說已經是非常好,例如:

  • stormzhang 分享的 Android學習之路
  • Tikitoo 分享的 我是如何自學Android,資料分享
  • 胡凱發起官方教程翻譯的 序言 | Android官方培訓課程中文版(v0.9.5)

可以這麼說上面幾份資料就是帶我入門的資料,非常值得大家一看,這些資料上面回答的人都有推薦過了,我在這裡就不做更多介紹。

好了,別的不多說,要說的上面的人基本都說了,直接上資料截圖

總結

希望我收集到的這份資料能夠幫助到一些 Android 開發初學者,如果我這份資料有什麼不足的地方,也請大家指出來,這份資料我還會繼續不停完善,希望我能與大家一起學習

最後資料鏈接地址

  • GitHub
  • 簡書

(1).我的學習態度:
自學編程一年,這兩天是我第一次感覺到壓力。我該怎麼辦? - Gityuan 的回答

(2).我的學習方法:
如何自學Android? - Gityuan的文章 - 知乎專欄


  • 谷歌官方的教程Getting Started,也有中文版Android入門基礎:從這裡開始

  • 可以看看Storm的Android學習之路,都是零基礎入門,有一定的參考價值

  • 有問題善用Google搜索,不要用百度,百度搜出的技術資料千篇一律,搜不到自己想要的,上谷歌最簡單的辦法是修改host文件,最新免費Host可以從hosts – 蜂巢"s Blog獲得,最好使用Goagent的升級版GitHub - XX-net/XX-Net: 接力GoAgent翻牆工具----Anti-censorship tools,配置好之後一勞永逸,使用chrome瀏覽器插件SwitchyOmega自動切換代理。

  • 有空可以看看Android開源項目匯總Trinea/android-open-project · GitHub,可以看看值得推薦的android開源框架,挑一兩個不錯的框架研究下其源代碼,相信會提升一個台階

  • 開源項目源碼解析codeKK 開源項目源碼分析,對比較流行的一些Android開源框架進行源碼分析,適合初學者學習

  • codota http://www.codota.com/ 這裡可以搜索你想要的代碼
  • android最佳實踐:futurice/android-best-practices · GitHub
  • 關注最新Android動向http://androidweekly.net/
  • 整理了各種代碼,庫http://android-arsenal.com/
  • Github上熱門的開源項目Trending Java repositories on GitHub today · GitHub

  • 如果還有精力可以去stackoverflow看看android標籤的排名靠前的問題Highest Voted "android" Questions
  • 上面的基本夠了,太多了反而精力分散

學東西最好的方法就是每一步都有輸出,下邊是我總結的自己以前學習道路上的一些階段,其中有自己以前沒有想到的,走了彎路的,寫下來,大家共勉。

一天過去,竟然這麼多贊和收藏,受寵若驚,這裡補充一下:
這裡只介紹下自學基礎的大綱,不能涵蓋所有Android的知識,大概就是每個階段需要掌握的知識點和應該達到的什麼目標(輸出)。

  1. 準備工作
    1. 翻牆:如果你學習android 起碼要能夠閱讀開發者文檔,清晰了解和隨時查看api文檔,那麼你需要google,需要隨時查看http://developer.android.com,具體如何翻,請問劉看山;
    2. 開發必備:Google、Github、 Git、 developer.android
    3. 環境搭建:上一步準備完成了,那麼你可以到http://developer.android.com上下載Android SDK,以及開發者工具AndroidStudio,到Java SE - Downloads下載JDK(額,SUN被ORACLE收購了眾所周知),然後先安裝JDK,貌似現在SDK在AndroidStudio中集成了,你可以免去下載SDK的麻煩,安裝一個AndroidStudio就可以了。
    4. HelloWorld:打開AndroidStudio,新建一個項目,AndroidStudio中會有很多模板,選一個簡單的吧,恩,然後運行一下,這個就是你的HelloWorld程序。這裡可能會遇到不識別你的設備啊,adb沒有啟動起來啊,或者就是虛擬機連不上啊,各種問題,其實遇到問題解決問題才是關鍵,這樣會給你帶來意外的收穫。
    5. 詳細閱讀代碼、了解代碼結構:好好看,看都是什麼,google下代碼結構等。
    6. 輸出: 能夠清晰了解每一部分代碼的用途
  2. 配置文件:
    1. setting.gradle build.gradle local.properties 編譯配置文件要好好了解
    2. AndroidManifest.xml permission相關的東西,application相關,activity 註冊,事件相關的也要好好了解
    3. 輸出:能夠清晰的了解每個配置文件的職能以及配置項。
  3. UI界面 View控制項布局學習
    1. 各個原生控制項都要好好看一看,看看都是怎麼布局的,這裡可能要關鍵說一下,其實客戶端開發有很多工作量在布局上邊,所以控制項的掌握還是比較重要的,君不見好的Android的書都花了很大篇幅在說這個控制項的部分。
    2. 圖形適配:這方面關鍵就在於可能需要減少圖形的用量,因為如果要是有硬性指標說你的APP大小不能超過某個閥值,產品啊市場啊可能會給你說這個可能影響用戶量啊,用戶看一眼的留存率啊等等,現在有很多用矢量圖的,這個也可以研究一下。
    3. 輸出:達到 能自定義View 並 能快速對設計稿切分布局
  4. Control控制層學習
    1. Activity:生命周期相關,Intent啟動相關等
    2. Service:生命周期,有很多後台任務使用Service處理的,比如後台的音樂啊,後台要保持的socket長鏈接啊。還要注意bind service和unbind service的區分。
    3. Broadcast Receiver:事件廣播與接收 自定義receiver以及系統廣播事件接收。
    4. ContentProvider:應用間數據交互。
    5. 事件回調處理:比如button的OnClick事件如何回調的,匿名Listener。callback的這種機制是很有必要詳細了解一下,當事件結束後回調到主控程序,這裡也要注意線程相關的問題。
    6. 四大控制項交互 Hanler 等,這裡好好看看handler對於控制項中交互的知識,還有就是也了解一些定時任務的實現,順帶看看timer吧,比較一下有何不同。
    7. 輸出:如何交互,了解各個生命周期,並每個寫出N個實例
  5. 數據存儲
    1. SharePreference:要深究到底是把數據key value保存起來的。
    2. File:這個對於java裡邊有一定基礎,輸入輸出流、線程池相關的,如果能深入了解多線程寫入文件,那麼以後的斷點下載上傳應該不是問題。
    3. SQLite:了解一些sql語法,這裡要注意自己資料庫版本相關的,如果之後有應用更新,數據結構變化怎麼處理等等。
    4. ContentProvider:應用間數據交互。
    5. 輸出:了解各個如何存儲,並每個寫出N個實例
  6. 網路編程
    1. HTTP網路訪問相關知識 GET POST等
    2. JSON XML 等數據傳輸格式如何解析:這裡說幾句關於JSON解析的,android自帶了一個JSON解析類,包括jJSONObject,JSONArray;還有就是一些庫如GSON,fastjson等等,各有個的好處,可自行選擇。
    3. 在這裡我覺得應該學點兒非同步的東西,如果對java比較了解的可以看下多線程,了解下android的asynctask,這些對以後的非同步上傳下載文件啊這種比較有幫助的,多線程交互要小心線程安全,android是不允許在主線程進行比較耗時的操作的,比如說網路請求。
    4. 輸出:能夠從一些開放API 如GitHub API v3獲取api 並解析
  7. 異常處理: CrashHandler DeviceInfo 等,一般的APP比較成熟的都應該有自己的或者引入的異常處理類,方便查看在哪個機型,哪個程序運行點,看到的運行異常信息的棧,方便分析是由於機型適配還是由於程序bug引起的,這樣後期可以跟進。
  8. 輸出:做一個小的程序,不需要界面華麗,能把自己學得知識都用上去就好。

最後:
你可能需要一個伺服器給APP做後台,別擔心,現在雲服務那麼發達,UCloud就不錯(UCloud – 專業雲計算服務商),可以到官網看看,有好多移動APP的客戶的案例,還有一些知名遊戲的案例,都在用UCloud的服務。
附上自己最近開的一個公眾號 yushaosxy,不定期更新自己學習路上的一些心得體會,希望大家能夠喜歡。


其它類似問題的答案,粘過來給你。
我也是通過自學走向Android開發的,我來回答下。
1.要對移動開發有熱情,而不僅僅是為了找份工作。有熱情才能保證持續的學習和在實際編碼中的精益求精,不然在編程的道路上走不長。
2.Android應用層開發是用的Java語言,所以熟悉Java語言是必須的。如果以前沒編程基礎,推薦畢向東老師的Java視頻。如果有編程基礎,推薦李剛的《瘋狂Java講義》。國外的《Java編程思想》不適合初學者,《Java核心講義》翻譯不太好,不推薦。
3,掌握Android基礎知識,推薦郭霖的《第一行代碼》,相信我,這是最適合入門的Android書籍。
4,掌握Android進階知識,推薦郭霖的CSDN博客,主要看關於View的繪製流程、Touch事件分發、Handle機制等。
5,熟悉常用的設計模式,先開始熟悉幾個很常用的就夠了,比如單例,觀察者等等。
學到這,Android應用開發基本入門了,學習曲線也不是很陡,加油↖(^ω^)↗。修改


先交待本人背景。985,211小碩一頭,本碩專業與計算機沒有關係,計算機知識主要是本科和碩士階段自學的,具體有熟悉c,掌握java,了解計算機組成原理,計算機網路,操作系統等。今年初開始自學android,目的是跳出所在的體制內單位,追求自己的夢想。

感悟一:迅速上手。快速地對Android開發技術有一個整體的把握,寫出幾個小Demo,是很好的正向激勵,能增加自學的動力。個人的做法是「囫圇吞棗」。集中20天時間將《Android編程權威指南》從頭到尾擼了一遍,並做了詳細的筆記,方便複習看,因為一遍下來很多知識點都是似懂非懂,通過閱讀筆記可以在反覆體會中掌握消化。如果沒有做筆記,很難做到快速對全書進行複習。隨著複習次數增加,我基本可以做到半天時間複習一遍。

感悟二:保持專註。定下決心後,不要再左顧右盼。本人剛開始學兩個月的時候,碰到了Android市場的萎縮,有業內朋友建議我學前端開發或者大數據,雲計算,當時確實很心動,但後來通過思考,感到Android開發只是從泡沫期進到了穩定期,很多趁著風口入行,水平差的人將被淘汰,真正技術好的開發者還很缺。另外,Android開發只是一個平台,裡面的許多技術都是通用的,或者技術是專門的,所解決的問題是其他領域也有的。這樣,從更一般的角度看Android開發,心情就平靜下來了。

感悟三:起點要高。由於是大齡自學者,就業上處於劣勢,我的策略是,從開始就堅持高標準,走技術路線,跳出初級開發的層次。為此,學了很多源碼解析的文章,如okhttp,dagger,eventbus,rxjava,volley等,一開始也是看不懂,做好筆記反覆看,漸有所獲。Google的官方文檔中training部分基本看完,正在看guide部分。對於自定義view,handler,aidl等技術難點採取死磕戰術,通過科學上網,在Google上搜索一切能夠搜索到的相關文章,逐一閱覽,精誠所至金石為開,逐漸的也有點自己的想法了。

感悟四:整理好信息源。最近感覺國內技術博客成井噴狀態,99%的都很水,妄想以其昏昏,使人昭昭。經過一段時間的摸索,自己整理出如下信息源,一看官方文檔,二看看github上的codepath點這裡,三看stackoverflow,四看medium,五看google搜索。經過這五步,目前還沒有發現解決不了的問題。


說直接點好了,其實要想學好一樣編程技術,並不是看你有一個多牛逼的老師,有多少牛逼的教程,有多牛逼的書,而在於你有多少決心,你願意花多少心思,你有沒有動手去敲代碼。

你也看到了,@stormzhang,@Tikitoo已經分享了非常多的資料,我相信這些資料絕對夠你看的了。

一個月之前我還並未接觸過安卓編程(很抱歉,雖然安卓非常非常非常的火,但是我一直對它不感冒,盡情說我沒眼光好了),就上個月10號,雖然我明確跟公司說了我不做安卓,可是我依然被分來做安卓了,公司還說了一年之內你就在這別想換了;雖然我明確跟我師傅說了我不想做安卓,師傅還是甩給了我一個文件管理器的項目讓我自己做,我只能默默接受。其實我師傅還是挺牛逼的啊,可是牛逼的人都是很忙的啊,所以我就一切只能靠自己的了啊!到目前,我已經基本做出了這個文件瀏覽器,實現的功能也不算簡單(當然對Android高手來說is nothing),還在繼續完善當中(現在就在加班改代碼)。

這麼快上手有秘訣么?其實考慮到我以前做過很久的Java開發這應該算是慢的了。實際上,我至今對安卓編程還什麼興趣(繼續罵我沒眼光好了),所以還沒看過安卓方面的書,只是瀏覽過官方網站的教程(寫的挺好的),然後直接進入項目開發了。學習編程的方式非常多,此處是一些我以往的學習經驗,期望能對你有所幫助:

Java
之所以Java列在第一個,是因為這是我最拿得出手學的最好的。
Java的學習是通過網上看視頻學習的,這點我是非常應該感謝尚學堂、傳播智客這些培訓機構的,特別是馬士兵馬老師的視頻教程確實幫到了我不少。看視頻學習的一大好處在於,可以一步一步的跟著視頻去做,入門很容易,導致後來我學習很多東西的時候都第一反應是去找視頻教程,現在我的電腦里躺著幾十G的視頻教程,不過只有一小部分看過,因為當你入門以後,再想深入學習一門技術的時候,這些視頻要麼已經幫不到你了,要麼你會感覺看視頻學習太慢了。不過,隨著Java學習的深入,讀了一些書,比如《Algorithm》和《深入理解Java虛擬機》,我在Java的學習上已經非常系統了。
總結:Java的學習我是一步一個台階,慢慢地系統學習過來的,所以Java學的非常系統,基礎非常紮實。

Python
Python是在網上看了《Dive Into Python 3》入門的,入門以後因為當時想做一個網站,所以又看了《The Django Book》學習了python的web框架,這兩本書都來自於網路。後來又用到Python做一些爬蟲、數據分析之類的雜活,也都是參考了一些網路上的博客教程。
總結:Python的學習就是有需要了,就去谷歌找網路教程參考學習。網路上的博客教程,非常的多,也非常的雜,要想找到好的教程需要一些篩選。此外,只靠網路教程,想要系統的學習較難,至今我對於協程、裝飾器都理解的很膚淺,相較而言,Python就沒有Java那麼精通了。

Ruby
對於Ruby的學習就比較奇葩了,因為我從未學習過Ruby。之所以了解Ruby,僅僅是因為當時我看到了松本行弘的《松本行弘的程序世界》就想拿來看看大師眼裡的編程世界的。不過,Ruby的語法糖與Python非常相似,所以即使我從未學過Ruby,看Ruby相關的書毫無壓力,在讀《松本行弘的程序世界》的過程中還看了《Ruby元編程》這本書。雖然我從未學過Ruby,我倒是覺得對Ruby的了解程度超過了Python。
總結:Ruby的學習是通過看書,看好書,看大師寫的好書學習的,因為這些書寫的更為接近語言的核心,所以對Ruby的了解不比對Java差,但是Ruby的實戰經驗就沒有Python多,寫點什麼的時候反而傾向於Python了。

Javascript
這個就有點類似於Ruby的學習了,斷斷續續看了《Javascript權威指南》大半,不過沒經過什麼實際修鍊,不過爾爾。

C# Android
這兩樣屬於工作驅動學習,工作壓來之前我都是一竅不通的。來公司以後,公司先給我分的任務是做一個單片機項目的上位機,因為要用串口通信,Windows下串口通信還是C#最簡單,現學現賣,也是一個月搞定了,C#確實太像Java。現在又被強派來做安卓,雖然不會但有Java基礎以後參考官網教程和Github上的源碼,問題也不大。
總結:工作驅動模式下的學習,總是可以很快的進步,因為目的明確,不需要完整學習編程語言。所以,如果學習的時候,試著做一個項目,更有助於進步,也有助於提升學習的興趣和信心。

C C++
好吧,雖然大學第一次接觸編程就是C語言,但是我至今不敢說精通這門語言,C++就更不敢提自己懂了。這兩門語言一度給我的編程之路蒙上陰影,雖然至今我依然沒完全看透語言,但已經不重要了。若是樓主的C和C++學的好,入手Java問題不大,再入手Android問題更不大。
總結:雖然有老師教,有教科書看,可是至今很多程序員和我一樣,對這兩門很重要的編程語言依然是沒學透。

Closure
好吧,我承認,這個我才剛開始學。

所以,學習方式有很多,隨著你的學習目的不同,可以選擇不同的方式,但是這幾種方式有些東西是一樣的:

決心。編程這個行業,很可能掉進這個坑就是一輩子的事,所以請慎重。對於那些做了很久以後才覺得編程這個行業無聊、累人、沒有前途的人,我表示惋惜,不是惋惜他們不識貨,是惋惜他們當初怎麼就還沒看明白就跳進坑裡了。

時間。學習編程肯定會花去很多時間的,也許要比做其他所有事情花去的時間都會多一些,因為編程確實是一件困難的事。如果編程成為一個工作,公司還會經常要求你加班(比如我,周末還加班)。

動手。編程沒有捷徑,唯一的進步方式就是動手去敲代碼。當有一天你的手上敲的滿是老繭(一定要是敲代碼敲出來的!),離高手就不遠了。

所以吧,所以我要總結的都在開頭了。


之前回答的這個問題:《零基礎 Android 開發可能嗎? - Tikitoo 的回答》,已經明確回答了,因為我之前是有Java 基礎的,對於題主來說,有C,C++,數據結構基礎,這是學編程的基本功,況且C++ 和Java 都屬於面向對象程序語言,學過C++,再學Java,也是很容易的,他們有很多地方相通的,學了Java 再學Android,就事半功倍了,當然,您也可以基於NDK(使用C,C++開發Android)的,但由於我不是太了解,就不詳細說了;

之前我寫的一篇文章《我是如何自學Android,資料分享》,講了怎麼入門學Android;

最近知乎上有網友問我怎麼自學Android,其實說實在的,我學的也一塌糊塗,當然在學習過程也積累了一些知識,對於以前沒接觸過Android的朋友,或者剛入門Android 的朋友,這篇文章作為入門,那是再合適不過了,希望對剛入門Android的朋友有幫助,接下來,就不羅嗦啦。

本文主要有以下幾個步驟:
1. Java 基礎;
2. 搭建Android 開發環境;
3. 了解Android 運行原理以及一個工程項目結構;
4. 如何系統學習Android;
5. 推薦一些實用的資源
6. 總結

首先呢?當然要有Java 基礎;

我大學的專業就是Java,但由於沒學好,剛開始學Android 的時候,挺吃力的,後來又去補Java 基礎去了;
因為Android SDK 是基於Java 開發的,使用的語言是Java,如果有了Java 基礎,學Android 就會事半功倍;比如在Android 中要使用到的介面,抽象類,類型轉換,繼承,覆蓋,匿名內部類,多線程,這些都是Java 語言的,如果以前沒有基礎過,學Android 會很鬱悶的;

當然如果你有C++ 基礎,當然也可以基於NDK 開發,可以不使用Java;

對於沒有Java 基礎的朋友,我推薦一些資料:

Mars 的Java4Android:Java4Android.zip_免費高速下載
極客學院推出的Android 專題:Android安卓開發環境搭建

搭建環境

Android 開發IDE選擇,有Eclipse,IntelliJ IDEA,Android Studio(基於IntelliJ IDEA 社區版開發的),Eclipse 和 Android Studio 是免費的;
對於初學者我推薦使用Eclipse,因為Eclipse 成熟,遇到問題,搜索也容易找到答案;以後可以嘗試不同的IDE;

搭建環境的步驟:

  1. Eclipse安裝;
  2. Android SDK安裝(Android 開發工具包);
  3. ADT安裝(Eclipse 的插件,使Eclipse 能夠開發Android);
  4. 創建AVD(在電腦創建一個虛擬手機);

詳細步驟:Android開發之旅:環境搭建及HelloWorld

在這裡會有很多工具,可能剛入門的會比較模糊,可以參考:Android 開發,各種工具

如果最終虛擬的手機屏幕能夠顯示主界面,則表示成功;


了解Android 運行原理,一個工程的項目結構

  • 項目結構推薦慕課網的視頻教程:Android 項目結構介紹

  • Android項目目錄結構介紹

  • Android開發之旅:HelloWorld項目的目錄結構

系統學習Android

有了上面的學習,對Android 也有了初步的認識,接下來可以系統地學習Android 啦,網上資料也很多啦,書籍也很多,視頻也很多,我覺得首先要《官方API Guide》;然後手上準備一本書,可以當做字典,不會可以看看;如果看官方文檔,有難度,看書進度太慢,可以看視頻,跟著視頻學,做一下東西,有什麼不會的問題,可以Google 搜索;

如果說到細的知識點,比如四大組件,UI,多媒體處理,信號連接,數據存儲,我在這裡就不多介紹了;主要介紹了一些學習資料;

官方文檔

  • 官方指南:Introduction to Android | Android Developers

  • Android API:Android API| Android Developers

  • 官方中文文檔: 序言 | Google Android官方培訓課程中文版(v0.5)

書推薦

  • 《Head first Android Developer》;

  • 《Pro Android》;

視頻教程

  • Mars——Android 開發視頻教程

  • 黎活明——8天快速掌握Android視頻

  • 慕課網——Android 開發視頻

  • 極客學院——Android開發,安卓開發教程,android教程,安卓軟體開發教程,安卓開發視頻教程,安卓開發環境搭建

博客推薦

  • android開發大牛博客

  • hellogv的專欄 - 博客頻道

  • Android_Tutor的專欄 - 博客頻道

  • Storm" blog

  • 愷風(Wei)之Android專欄

  • 老羅的Android之旅 - 博客頻道

網站推薦

  • ImportNew - 專註Java Android 技術分享

  • Android - 博客 - 伯樂在線

  • Android開發中文站關注Android,關注開發者

總結

  1. 當然Github 上有很多開源的項目,多看看源碼,自己才能快速提升;《Android開源項目分類匯總》,這裡幾乎匯總了github 上所有的開源項目,可以自己找些慢慢學;

  2. 然而學習是乏味的事,堅持到最後是不易的;

  3. 要善於利用搜索引擎,遇到不會的問題,要使用Google 搜索;對了,作為一個開發者,要學會自備梯子;

  4. 還有學Android,要時刻關注Android 的最新動態,比如最新發布的Android 5.0 棒棒糖版,去了解他的新特性;

  5. 加一些QQ 群,有不會可以問問,相互交流;

最近在維護一個公眾號:安卓同學(AndroidMate),分享一些自己Android 開發的心得。

http://weixin.qq.com/r/40wRCWvEFjZprS9q9xnx (二維碼自動識別)


瀉藥,不知道邀請人是出於什麼樣的心態才會邀請我回答這個問題。

我學安卓時間很短,現在水平屬於才入門的水平。由於我也是零基礎開始學的,說說我覺得怎麼學比較容易入門吧。首先,要知道安卓開發用的是java語言,有java基礎的就容易多了,特別是對象,類,繼承,多態,I/O,多線程等基礎知識。像我當初是先自學了java,之後才開始學安卓的,有了這個前提條件之後就是如何快速入門了,我推薦郭霖大神的第一行代碼(絕對不是打廣告,真心覺得適合入門)。

看這本書,最好是跟著書上的例子,一個一個地敲一遍,這樣才有效果,多敲幾個例子之後應該對安卓開發基本上有一個概念了,看完這本書,也有了安卓開發的一些基礎了。
有一定基礎之後,就需要進階了,我推薦瘋狂安卓講義,那上面的例子特別多,全部敲一遍下來,基礎會更加紮實。(這次就不上圖了)。由於我自己也是學到這,後面我就不敢瞎說了,以上僅僅是我個人觀點,不喜勿噴,謝謝。


首先來說下我的背景以及這大半年來我的自學情況吧:

1.本科通信工程,非計算機科班,大一學過C語言基礎,後來因為專業課程需要,學了一點彙編以及Matlab。這部分經歷我認為對於我後來的編程學習只有基礎語法理解方面的幫助。

2.去年11月中開始系統學習編程語言,由於想做Android開發,所以入門語言選擇了Java。

3.11月中到12月中,邊看傳智播客的一套視頻邊敲裡面的練習。

4.12月中到1月中,20天左右時間看了《編程之美》,並用Java實現書里百分之五十左右的演算法題,剩下的題由於難度太大 或者比較複雜,當時沒有深入研究下去。

5.1月中到2月中,選擇了網易公開課裡面的《斯坦福大學公開課—編程方法學》這套視頻,同樣是邊看視頻,邊完成裡面的Assignment。在這裡感謝帥帥同學@王帥 推薦這套視頻。裡面的Assignment題都是經典題目,對於初學者來說非常適合。

6.2月底開始學習Android語言,花了1個月左右的時間,照著《第一行代碼》裡面的例子,敲代碼進行實現。

--------------------------------------------

由於在學習編程之前就有兩個小產品的構思,所以也沒有想自己基礎是否打紮實了,先試著去實現,看看能不能做出個可用的產品來。截止到目前為止,兩個小產品都已經開發完畢了,其中一個「蘋果序列號查詢」已經在小米、豌豆莢、Google Play、魅族Flyme等應用市場上線並且有了一版更新(4月14日上線,到目前為止下載量已經超過1000),它是下面這個樣子的:

關於開發「蘋果序列號查詢」具體實現邏輯介紹,請移步(最近好像需要翻牆):JeffinBao - Android開發,讀書,見人,行事

另一個是我的個人簡歷應用,仿照地圖搜索的樣式做的,它是下面這個樣子的:

關於開發「JeffinBaoCV」這個個人簡歷應用的介紹,也請移步:JeffinBao - Android開發,讀書,見人,行事

-----------------------------------------

很多知友在其他答案中已經列了很多資料了,我自己也是通過他們介紹的資料的其中一部分來進行學習的,所以資料方面,就不多說了,想說兩點看似無關但我認為又比較重要的點:

1.有自己很強烈想要實現出來的想法
我在學習編程之前,上面兩個應用的初步構想就已經在我腦中了,所以這半年多特別是今年2月底開始學習Android以來,我都是按照怎麼去實現我腦中的想法去學習Android的。沒有對於想要實現的東西有著強烈的願望,我想我是很難堅持下來的。最終把自己的想法實現後,這種開心和一直進步的感覺,也是很鼓舞人心的。

2.「軟實力」的加強
Android應用呈現給用戶最多的是界面,所以界面是否美觀是用戶會不會選擇去用的一個重要因素。對於工程師來說,如何提高自己的審美,進而把自己對美的理解融入到應用當中是很重要的。這不是說工程師一定要具備專業設計師的能力,這不太現實。但是如何保持界面整潔,在字體、顏色、排版上如何規範與統一,都是工程師需要在平時去提高的。

---------------------------------------------

寫了這麼多,不知道有沒有幫助到題主,下面我也想安利下自己的應用以及在求職中的自己:

1.小米、豌豆莢、魅族Flyme、Google Play、鎚子應用商店上搜索「蘋果序列號查詢」,有任何問題,歡迎反饋給我丫。

2.第二個應用做的是個人簡歷—JeffinBaoCV,沒有上線,感興趣的朋友可以通過下面鏈接下載(由於身邊手機不多,可能在小屏幕低版本系統的手機上會有適配問題,如果有,也歡迎反饋給我丫,多謝):百度雲 請輸入提取密碼.(提取碼:9x6d)

3.下面是跟我有關一些主頁的鏈接:

個人主頁:JeffinBao - Android開發,讀書,見人,行事
主要用於寫技術文章和一些自己認為寫得比較好的文章,剛開始用jekyll引擎不久,所以內容比較少。

GitHub主頁:JeffinBao (Jeffin.Bao) · GitHub
主要用於託管自己的代碼,尋找一些好的開源項目來學習使用。

如果你對我感興趣,請私信我或者通過下面郵箱聯繫我吧,謝謝!

郵箱:bjf13609846991@gmail.com


瀏覽一遍
Getting Started
(非官方中文翻譯)
序言 | Google Android官方培訓課程中文版(v0.7)

參與官方的開發者培訓活動
Google Study Jams
視頻非官方中文翻譯
https://www.youtube.com/channel/UCLjuNN8rWxfEaaSq975PrWw/playlists

然後動手吧,什麼不會的看API文檔


Android應用開發使用Java語言,所以要先學好Java基礎,Java的面向對象,集合,多線程,IO流知識是必須的,還有xml。

1. 不是很建議看視頻,逛論壇,效率比較低;
2. 多敲代碼,有基礎後可以使用一些第三方庫,不必自己造輪子,以後開發多了慢慢深入了;
3. Github是個好地方,有很多Demo,資料
4. Android更新很快,建議學習新的API

下面分享些參考資料:
inferjay/AndroidDevTools · GitHub(Android開發涉及到的工具、教程合集)
Google Java編程風格指南
序言 | Google Android官方培訓課程中文版(v0.7)
Android學習之路
《Android學習指南》目錄 ? { Android學習指南 }
Android API Guides (eoeAndroid wiki)
關於學習軟體開發方面我的一個答案:
要怎麼努力,才可以應聘類似知乎、拉勾這樣互聯網站的軟體開發工程師? - 嚴來忠的回答

張龍的聖思園Java教學視頻感覺很不錯,有一課是講學習方法的,可以看看
有個博客,寫了寫張龍視頻的學習筆記,後面也有Android的-------AHuier_Techblog :如果我不在寫代碼,你就 @me
視頻封面聖思園開學儀式(學習方法談:程序設計學習七宗罪)視頻


先簡單介紹一下自己,原專業機械,現在在一家不大不小的公司做安卓開發,我今年才畢業,所以也提供不了什麼太好的建議,以供參考。
首先,你得精通一門語言,開發安卓當然得會java。建議看完《java編程思想》。看的越深入越好。另外稍微花幾天功夫了解下xml和操作系統。接下來就可以邊開發應用程序邊學習了。一開始你不需要多深入的了解,要學會基礎的知識,如控制項的使用,廣播,意圖等等。切忌眼高手低,在實踐中加深對android的了解。在你了解了Android基本知識後,可以自己動手寫兩個小程序試試。這時候也可以稍微深入了解下Android更深入一點的知識,另外你也可以多關注一些Androud開源的項目,這個你可以參考我的同事@Trinea負責維護的Android開源庫,你也可以向他問更深入的問題。答主現在也在學習中,最後,也是最重要的一點,向周圍的人學習,這真的很重要


推薦閱讀:

Facebook Home 發布後下載量慘淡,同時獲得大量差評,有哪些原因?
你用過 Android 平台上體驗最好的音樂應用是什麼?
Roboto 是一款什麼字體?
為什麼很多手機有3G RAM這麼虐心的配置?
中國用戶願意為哪些類型的手機應用付費?

TAG:編程 | Android 開發 | 學習方法 | Android | Android 應用設計 |