一、 基礎篇 需要掌握的技能如下:
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以及網上大牛的博客。
附: 關於基礎知識的介紹,國內的一些書籍質量真是相當差勁,味同嚼蠟。強烈不建議在此階段買書籍。
這時,您已經小有所成了,能夠基本掌握Android開發了。這兒,我推薦一個手把手講解Android項目的視頻:
zhengping老師講解的,強烈推薦。 視頻下載地址:《Android視頻教程》(Android Video Course)畢業答辯結束,俺胡漢三又回來了。太多郵件沒有回復,抱歉。醞釀醞釀,繼續錄制視頻,敬請期待[DVDRip]
祝您一臂之力的當然還有Mars老師的視頻了。
實踐出真知。這個階段,你可以自己編寫一些小Demo了,幫助自己在更深層次發展了。
PS:我通過看了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內核剖析> Android源代碼一份
PS: 您的個人電腦上一定得有份 Android源代碼,否則何以笑傲江湖 。
三、 進階篇
1、基本理解SystemServer類載入流程以及WatchDog的功能
2、more......
我也還是個小菜鳥,更多的就不知道咯。希望以後能夠完善起來。和大家共同成長。
最後,我總結的一些學習知識點只是一個提綱挈領,幫助大家學習成長的點或者線。例如:我負責通訊錄模塊,當然得把資料庫方面知識弄得一清二楚啊。不然,公司要我何用。因此大家在學習的時候,找出更適合自己的點。
有些人可能會想,工作中我用不到,學它幹嘛?再次也規勸大家在工作之餘,給自己充充電,多學點知識只有好的沒有壞的。
希望大家每天能進步一點,成長一點,接近心目中的那個天空更近一點。
前面說的博客,在此推薦兩個我常去的吧:
1、 應用方面,主要是魏祝林的csdn博客 :Android_Tutor的專欄 。 但他的博客主要是以代碼為主,需要自己結合源代碼揣摩 。
2、 框架方面,主要是老羅的csdn博客 : 老羅的Android之旅 。 但他的博客主要是以流程分析為主, 而對 流程 需要的前期准備知識介紹不足,初步看起來比較難以理解,因此,買本《Android內核剖析》是必須的,可以參考源代碼仔細領悟, 強烈推薦該書籍。
由於網路上Android源碼不太好找,特此共享下Android部分源碼,主要包括框架層、中間層、以及一些App等,對上層開發
和中間層開發還是很有益處的:
B. 技術大牛推薦:2019 年值得關注的 23 個開發者博客
如果你正在尋找編程技巧,或是想了解編程界發生了哪些新鮮事?那麼,本文千鋒廣州我帶來的 2019 年最佳開發者博客列表,一定是你的菜。這些博客將會幫助你發現新的工具,並帶給你編程技巧的啟發。
讓我們一起先睹為快吧!
1.The Netflix Tech Blog
如果你還沒有聽說過 Netflix,恐怕就有點「與世隔絕」了。近年來。在線流媒體平台可謂發展迅猛。
自 1997 年上線以來,Netflix 在全球已擁有近 1.18 億流媒體用戶。它也成為了當地的 科技 巨頭之一,吸引了眾多優秀的開發者為其工作。
為了便於大家更深入的了解,他們在 Medium 上開通了 Netflix 技術博客。你可以了解 Netflix 是如何設計、構建、運營其系統和工程組織的相關信息。
2.Code as Craft
如果你居住在美國,你應該會經常在 Etsy 購物。這是一個以手工藝成品買賣為特色的網路購物網站。
與 Netflix 技術博客相似,Etsy 的工程師也在名為「 Code as craft 」的技術博客上,分享他們的成果和經驗。
3.Phpied
如果你想學習更多的 JS 技巧,那一定要勤逛 Phpied 博客。它是由 Stoyan Stefanov 運營的。博客的作者 Stoyan Stefanov 是 Facebook 的工程師、前雅虎、YSlow 2.0 性能工具的架構師,同時也是 smush.it 圖像優化工具的開發者。
4.BlogsDope
它是為數不多的印度開發者博客中,能夠提供有價值信息的博客。它由 Arun Kumar 創立,涵蓋了大部分流行的編程語言。
這個平台也有不少免費的課程供你選擇。即使你是新手,也會有所受益。
5.Coding Horror
這個博客由 Jeff Atwood 創建於 2004 年,同時作為 StackOverFlow 的聯合創始人,他還創立了 StackExchange 公司。
他的博客上有許多編程相關的文章,可以供你參考與學習。
6.Scott Hanselman Blog
Scott 是一名程序員、演講家和教師,他曾在微軟和 CheckFree 等公司工作。他的博客內容涉及廣泛,從技術、文化、網路到日常的生活記錄等。
7.TechieDelight
TechieDelight 有超過 900 篇編程相關的文章,你還會發現一些代碼片段、工具等實用的東西。如果你是 java, C++ 等開發者,可以上去瞅瞅。
8.MongoDB Blog
你正在使用 MongoDB ?那麼,你需要任何關於它的幫助,瀏覽它們的官方博客是個不錯的辦法。除了 MongoDB 之外,你還會發現很多實用的內容。
9.Xaprb
你對 Baron Schwartz 有所了解嗎?
他是一位軟體工程師,因其對 MySQL 資料庫的貢獻而聞名於世。他目前是 VividCortex 的創始人兼首席技術官。
如果你想深入了解他的技術之旅,可以在 Xaprb 上閱讀其文章。 他針對技術,創業等方面撰寫了不少文章,或許你能找到啟發。
10.LinkedIn Engineering Blog
你或許經常使用 LinkedIn,但如果你想了解平台背後的技術開發等細節的話,那你一定要閱讀 LinkedIn 的技術博客。最近,他們針對如何建立
LinkedIn 平台上聯系人系統的研究,進行了深入的分享。
11.Facebook Code
與 Netflix 和 LinkedIn 如出一轍,Facebook 的工程師團隊也經常在他們的博客「 Facebook Code 」上進行技術內容的分享,並且他們的博客上還有部分視頻資源。
最近他們發表了一些關於 AI 研究的精彩文章。如果你有興趣的話,不妨上去看看。
12.Twitter Engineering blog
Twitter 作為知名的 科技 公司,擁有一支偉大的創新技術團隊。作為一名工程師,我推薦你經常瀏覽 Twitter 的技術博客,他們會定期分享有趣的故事。前一陣子,他們分享了如何使用神經網路進行智能裁剪,有興趣也可以去看看。
13.DropBox Tech Blog
如果你是數據科學家,我相信你一定會對全球最大的雲平台背後的技術深感興趣。
他們在博客上分享了大量的研究案例,以及一些有趣的東西,這個技術博客應該是你的菜。
14.Sitepoint
Sitepoint 作為程序員眾所周知的網站之一,平台上已經提供了大約 240 多個電子書以及相關資源。博客主要涵蓋 Wordpress,Web 和 JavaScript 等主題內容,同時它還有一個活躍的論壇,便於同行之間的互動與交流。
15.StickyMinds
StickyMinds 是一個老牌的軟體測試博客,始於 2001 年。它是軟體測試人員,QA 專業人士的首選。任何對軟體測試感興趣的人都可以通過博客中文章,深入的了解最新的測試技術,並獲得一些指導和建議。
如果你正從事軟體測試工作,那麼我強烈推薦這個博客給你。
16.Mozilla
17.CodePen Blog
多年來,CodePen 為開發者們沉澱了豐富且寶貴的資源,而它的技術博客也同樣如此。博客涵蓋了像挑戰、活動、會議等相關內容。對於前端開發者來說,在這里你能學到不少實用的編程技巧。
18.A List Apart Blog
如果你是 Web 開發者,那你一定會喜歡這個博客。這個博客擁有很多的教程和指南,對網站開發人員非常實用。除此之外,你還能收獲到 Web
字體排版、用戶體驗、品牌識別等設計相關的知識。
19.CSS Tricks
如果你想深入研究 CSS,那麼 CSS Tricks 博客是一個不錯的地方。除了學習 CSS 知識與技巧,你還能找到一些實用的代碼片段。博客上也有專門的工作推薦欄目,幫助 UI 設計人員、前端開發者了解企業的需求,快速入職。
20.Codrops Blog
與 CSS Tricks 相似,Codrops 也是一個專注於網頁設計和開發的博客,它上面會發布一些最新的 Web 趨勢,技術以及新 探索 的文章和教程。
21.OverOps blog
如果你熱衷 Java 和 .NET 技術的話,OverOps 博客是提升你技能的好地方。最近我在它上面瀏覽的時候,偶然發現一篇《 2018 年 100 個最佳的 Java 庫》的文章,瞬間被驚艷到了。
他們還會舉辦網路研討會,你也會找到一些實用的電子書。
22.Code The Web
又一個專注前端開發的博客。博客的內容涵蓋了 HTML,CSS 和
JavaScript,文章通俗易懂、深入淺出。
23.CodeSignal Blog
這家位於舊金山的公司,正嘗試通過他們的博客「 CodeSignal 」改變開發者編程的方式。對於正在招聘初級開發者的 CTO、高級開發者來說,這個博客很實用。
C. 大牛們是怎麼閱讀 Android 系統源碼的
如果只是想看看一些常用類的實現, 在Android包管理器里把源碼下載下來, 隨便一個IDE配好Source Code的path看就行.
但如果想深入的了解Android系統, 那麼可以看下我的一些簡單的總結.
知識
Java
Java是AOSP的主要語言之一. 沒得說, 必需熟練掌握.
熟練的Android App開發
Linux
Android基於Linux的, 並且AOSP的推薦編譯環境是Ubuntu 12.04. 所以熟練的使用並了解Linux這個系統是必不可少的. 如果你想了解偏底層的代碼, 那麼必需了解基本的Linux環境下的程序開發. 如果再深入到驅動層, 那麼Kernel相關的知識也要具備.
Make
AOSP使用Make系統進行編譯. 了解基本的Makefile編寫會讓你更清晰了解AOSP這個龐大的項目是如何構建起來的.
Git
AOSP使用git+repo進行源碼管理. 這應該是程序員必備技能吧.
C++
Android系統的一些性能敏感模塊及第三方庫是用C++實現的, 比如: Input系統, Chromium項目(WebView的底層實現).
硬體
流暢的國際網路
AOSP代碼下載需要你擁有一個流暢的國際網路. 如果在下載代碼這一步就失去耐心的話, 那你肯定沒有耐心去看那亂糟糟的AOSP代碼. 另外, 好程序員應該都會需要一個流暢的Google.
一台運行Ubuntu 12.04的PC.
如果只是閱讀源碼而不做太多修改的話, 其實不需要太高的配置.
一台Nexus設備
AOSP項目默認只支持Nexus系列設備. 沒有也沒關系, 你依然可以讀代碼. 但如果你想在大牛之路走的更遠, 還是改改代碼, 然後刷機調試看看吧.
高品質USB線
要刷機時線壞了, 沒有更窩心的事兒了.
軟體
Ubuntu 12.04
官方推薦, 沒得選.
Oracle Java 1.6
注意不要用OpenJDK. 這是個坑, 官方文檔雖然有寫, 但還是單獨提一下.
安裝:
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java6-installer
sudo apt-get install oracle-java6-set-default
Eclipse
估計會有不少人吐槽, 為什麼要用這個老古董. 其實原因很簡單, 合適. 剛開始搞AOSP時, 為了找到效率最優的工具, 我嘗試過Eclipse, IntelliJ IDEA, Vim+Ctags, Sublime Text+Ctags. 最終結果還是Eclipse. 主要優點有:
有語法分析 (快速准確的類, 方法跳轉).
支持C++ (IntelliJ的C++支持做的太慢了).
嵌入了DDMS, View Hierarchy等調試工具.
為了提高效率, 花5分鍾背下常用快捷鍵非常非常值得.
調整好你的classpath, 不要導入無用的代碼. 因為AOSP項目代碼實在是太多了. 當你還不需要看C++代碼時, 不要為項目添加C++支持, 建索引過程會讓你崩潰.
Intellij IDEA
開發App必備. 當你要調試系統的某個功能是, 常常需要迅速寫出一個調試用App, 這個時候老舊的Eclipse就不好用了. Itellij IDEA的xml自動補全非常給力.
巨人的肩膀
這個一定要先讀. 項目介紹, 代碼下載, 環境搭建, 刷機方法, Eclipse配置都在這里. 這是一切的基礎.
這個其實是給App開發者看的. 但是裡面也有不少關於系統機制的介紹, 值得細讀.
此老羅非彼老羅. 羅升陽老師的博客非常有營養, 基本可以作為指引你開始閱讀AOSP源碼的教程. 你可以按照博客的時間順序一篇篇挑需要的看.但這個系列的博客有些問題:
早期的博客是基於舊版本的Android;
大量的代碼流程追蹤. 讀文章時你一定要清楚你在看的東西在整個系統處於什麼樣的位置.
鄧凡平老師也是為Android大牛, 博客同樣很有營養. 但是不像羅升陽老師的那麼系統. 更多的是一些技術點的深入探討.
Android官方Issue列表. 我在開發過程中發現過一些奇怪的bug, 最後發現這里基本都有記錄. 當然你可以提一些新的, 有沒有人改就是另外一回事了.
一定要能流暢的使用這個工具. 大量的相關知識是沒有人系統的總結的, 你需要自己搞定.
其它
代碼組織
AOSP的編譯單元不是和git項目一一對應的, 而是和Android.mk文件一一對應的. 善用mmm命令進行模塊編譯將節省你大量的時間.
Binder
這是Android最基礎的進程間通訊. 在Application和System services之間大量使用. 你不僅要知道AIDL如何使用, 也要知道如何手寫Binder介面. 這對你理解Android的Application和System services如何交互有非常重要的作用. Binder如何實現的倒不必著急看.
HAL
除非你對硬體特別感興趣或者想去方案公司上班, 否則別花太多時間在這一層.
CyanogenMod
這是一個基於AOSP的第三方Rom. 從這個項目的wiki里你能學到很多AOSP官方沒有告訴你的東西. 比如如何支持Nexus以外的設備.
DIA
這是一個Linux下畫UML的工具, 能夠幫你梳理看過的代碼.
XDA
D. 如何編寫安卓軟體
問題一:如何用eclipse編寫安卓程序 方法/步驟
1
1)首先,下載android SDK.介紹一種非常簡單的方法,一並下載eclipse.在網路中輸入android SDK,進入搜索界面。選中第一條。
2)如果你已經有eclipse,你可以直接在eclipse中進行android SDK插件的安裝。方法就是點擊上面菜單里的help,選擇install new software進行添加SDK。具體方法見經驗如何在eclipse中添加android SDk。
2
進入下載界面後,選擇適合自己電腦的SDK進行下載。這里下載的是android開發工具,非常的簡單實用,不需要我么重新下載eclipse,在這個下載包中會自帶一個eclipse FOR android的develop工具,我們直接在裡面就可以進行android的開發。
3
下載完成後解壓,解壓後我們進入文件名為eclipse的文件夾中。點擊eclipse應用程序,運行。運行如圖,和我們常用的eclipse是不一樣的因為這個是android的開發工具,只適用於開發android。裡面有好的插件已經提供給我們,不需要再進行安裝。
4
進入eclipse界面後,開始新建android項目。輸入新建項目名,如果沒有特殊要求,點擊next一直至最後完成。開始的配置只是一個大體的框架的構建,這些我們可以以後進行修改,最總要的還是代碼的編寫。
5
所有配置都完成後就可以開始進行android的開發了。如圖:
進行android開發的時候建議不要用拖拽控制項的方式,建議直接編寫代碼。
END
java環境變數配置
1
這里順便介紹一下java環境變數的配置。
1)首先打開環境變數的界面,添加一個JAVA_HOME的值。右擊計算機屬性,在左側有高級設置,進入後就會看見環境變數選項了。
2)在系統變數中建立java_home,將你的java SDK所在的路徑放在裡面。
2
建立classpath。同樣在系統變數中新建一個classpath,在下面輸入.;即可,不用輸入其他的值。
3
運行cmd,測試。按win+R打開命令面板,輸入cmd,進入後輸入java -version然後回車,接著輸入javac,回車,看結果是否與下圖相同。
這里需要注意的是java -version的java後面是有空格的。
問題二:如何開發安卓第一個程序Hello World 1
打開eclipse集成sdk開發環境,點擊菜單file――》new――》Android application新建安卓項目
2
輸入工程名,項目名,還有包名,點擊下一步。
3
信心勾選不要更改,點擊下一步。
4
這個步驟是選擇應用的啟動圖標,如果想改就改,不想改就點擊下一步
5
選中blackActivity,點擊下一步
6
輸入activity的名稱,main的名稱,點擊下一步。
7
項目創建好了,右鍵要啟動的項目,run as 選中Android application啟動項目
8
然後模擬器啟動好之後,點擊查看,helloworld就創建好了
問題三:如何自學 Android 編程 因為項目需要,8月中旬開始決定做安卓的程序,所以馬上就開始學習安卓方面的開發知識,把最近的學習實踐經歷和大家分享分享。不要一開始就下載一大堆資料,視頻,然後就不知道做什麼了,要給自己定個目標,我要做什麼?我怎麼達到目標?
我不懂java,但是懂C#和C++,所以我沒主張去單獨學習java語言,如果你是個最最初的新手,沒啥語言基礎,那你必須先看看java語言,不要很詳細看,因為學習Android中,你也是在學習java。
1. 明確目標
沒有目標的學習,會感覺到後面沒什麼成果,在1年前,我也打算學習android開發的,但是目的就是學習,到網上去下載很多學習的視頻,然後把開發環境搭建起來,能把Helloworld運行起來,能打些log,Activity之間也能互相切換了,但是後面也就不了了之了,因為不知道學了要干什麼。依葫蘆畫瓢的做了幾個例子,因為裡面的問題都是已經解決的,所以也沒能深入的系統學習。
這次因為產品的需要,要做Android版本,要做的東西一開始就已經設計好了,見搖搖2選1安卓版本,剛開始也不知道裡面有些什麼技術難度,但是要做的目標已經明確了,而且也沒有現成的,碰到問題就查資料,慢慢地解決,這樣有的放矢,學習的效果非常好。既有現成的技術可以使用,又有些技術,需要查比較多的資料,這樣記憶就比較深刻,所掌握的知識也比較系統。
接下來的一系列文章,我會把在開發搖搖2選1中遇到的問題,給大家詳細講講,程序雖然小,但是五臟俱全,做Demo和做產品的要求完全不是一個級別,如果Android大牛感覺知識講的比較淺,那可以繞道,畢竟我是從一個完全的新手開始的。
2. 了解安卓開發中比較困難的地方
學習一個新平台,就要知道此平台開發要面臨的困難有哪些,不要做到最後,這些問題沒有考慮,那就比較糟糕了。在網上搜索了下,安卓開發困難總結如何:
1)安卓系統版本比較多,各版本之間的兼容性是個問題,此為系統碎片。
2)安卓設備千變萬化,設備難以統一,每個產品都成為獨立,分散的Android碎片。
3)解析度五花八門。一個產品,可能需要多個界面排版,人工消耗比較大。
看到這張圖,有沒有頭疼的感覺?
總結成一句話:Android的碎片化真是要來開發者的命。
3. 搭建開發環境
巧婦難為無米之炊,開發環境肯定是第一件要做的事情,這類的文章已經很多了,我也不多說了,多說也就比較無聊了。感謝吳秦,也是博客園里的一員,他寫的很詳細了,見這里。
4. 查看網友總結的一些經驗。
不是什麼都查看,開發中遇到什麼問題,就去查看什麼問題,這樣你查到的知識,馬上就能深入的實踐,這樣知識就鞏固了。
1)首先當然要看Android的開發文檔,裡面其實大部分的知識都有了,還有就是SDK自帶的Samples。
2)博客園里搜索「Android開發」,會出來一大把,很多網友都是很系統的講解了。
3)eoe
android社區,裡面有很多網友上傳了現成的demo代碼,裡面很多都是模仿現在流行的產品的界面開發,很是不錯。
5. 掌握調試方法
個人一直認為,調試技巧是開發中最重要的技能,如果調試技能比較差,不知道如何查找問題,那不會是個好的程序員,其技能也不會高到哪裡去。
Android做下來,感覺調試這塊做的很不錯了,這要感謝Eclipse
IDE做的比較不錯,但是Android的界面排版部分,真的不敢恭維,Eclips......>>
問題四:如何用c++寫安卓手機軟體? 這個你不容易,安卓是java寫的,你學過C和C++想寫安卓軟體既需要學java語言,又需要學安卓手機的介面,相當於新學,不天天學兩三年寫不出什麼東西的。建議寫個win7能用的加殼程序,現在的殼基本上是以前系統上的,win7實用的不多。
問題五:怎樣編寫安卓手機程序???用什麼軟體編寫 。 說具體點 。 樓主看一下這個教程,或許能幫到您。 pan./...703809
問題六:怎樣將自己寫的程序放到android手機里運行 你是用ECLIPSE開發的程序吧?
如果是的話可以先USB接上手機和電腦,手機打開調試模式然後直接在項目上右鍵 -伐> 運行方式 -- > android application 可以直接運行
APK文件的話在項目的BIN目錄下面
問題七:安卓軟體怎麼寫 寫安卓程序的話有好多平台,常用的就是eclipse和myeclipse,我場做安卓開發都是用這兩個平台。安裝起來也方便,當然,如果您的水平高的話可以直接記事本寫代碼再編譯。。。
問題八:安卓開發軟體歡迎界面怎麼做 顯示一個載入的界面,增加一個延時任務。比如用handler,幾秒後再執行跳轉到主界面。
問題九:如何學習安卓軟體開發 200分 你把android sdk中的開發文檔下載到本地,然後eclipse中就有javadoc顯示了,你就能在代碼里看到每個庫函數的用法了。書的話我建議買 精通Android2 ,或者 Android2高級編程 這兩本書,講解的細致,但是一定要結合sdk來看。國內的不要買。。。。(切身體會,千萬別買)看完之後就可以自己動手做做項目了。對於java基礎,我現在的感覺是 如果要深入學習android平台,java基礎一定要好(里邊包括各種java類庫的用法,本地代碼jni什麼的)。但如果平時隨便做做應用的話,會面向對象編程就完全可以了。
E. 自學java做android studio的畢設怎麼學啊
1.Java 基礎;2.搭建Android 開發環境3.了解Android 運行原理以及一個工程項目結構4.如何系統學習Android5.推薦一些實用的資源6.總結(註:一直沒有時間整理一些鏈接文件,看到大家對這篇文章這么感興趣,我重新整理我文章裡面的鏈接,朋友們可以點擊進去看一看,都是我精心整理的一些資料,希望對你們有所幫助。文章僅是個人意見,不喜勿噴,如果有更好意見和簡介,歡迎交流!(鞠躬))!
java語言基礎
首先肯定需要的就是java語言了,雖然有一些別的語言也可以開發android,但是都是小眾。因為Android SDK 是基於Java 開發的,使用的語言是Java,如果有了Java 基礎,學Android 就會事半功倍;比如在Android 中要使用到的介面,抽象類,類型轉換,繼承,覆蓋,匿名內部類,多線程,這些都是Java 語言的,如果以前沒有基礎過,學Android 會很郁悶的;當然如果你有C++ 基礎,當然也可以基於NDK 開發,可以不使用Java;
最近冒出來的kotlin是google官方支持的開發語言,但是靠真正流行還需要很長時間,個人推薦還是以java為主,但是kotlin盡量也要學習一下,多學一門語言怎麼也是有好處的
對於沒有java基礎的同學我推薦一些資源:
Mars 的Java4Android視頻資源,可以在51cto中找到,很好的視頻資源,適合初學者學習,我當初就是從這里開始了程序員這條不歸路。
《Java從入門到精通(第3版)》從初學者角度出發,通過通俗易懂的語言、豐富多彩的實例,詳細介紹了使用Java語言進行程序開發需要掌握的知識。
如果需要更多書籍資源文件的朋友請點擊安卓書籍--從入門到精通
搭建Android開發環境
現在大部分開發人員都用的是Android Studio,從2014年底到現在,經過了三年時間的完善,AS已經成為了大部分Android程序員的開發神器,(筆者剛開始做Android 就用的AS,沒體會到什麼,但是我發現用過AS的人都會深深的迷上它,而去放棄Eclipse了)
在這裡面就不多說了大家可以去看看我對Studio的介紹:
Android Studio詳解 AndroidStudio 提高開發效率的插件
了解Android 運行原理,一個工程的項目結構
有兩種流行的結構:老的Ant & Eclipse ADT 工程結構,和新的Gradle & Android Studio 工程結構, 你應該選擇新的工程結構,如果你的工程還在使用老的結構,考慮放棄吧,將工程移植到新的結構。這里我們對兩個項目結構做一下對比
老的結構:
old-structure
├─ assets
├─ libs
├─ res
├─ src
│ └─ com/futurice/project
├─ AndroidManifest.xml
├─ build.gradle
├─ project.properties
└─ proguard-rules.pro
新的結構
new-structure
├─ library-foobar
├─ app
│ ├─ libs
│ ├─ src
│ │ ├─ androidTest
│ │ │ └─ java
│ │ │ └─ com/futurice/project
│ │ └─ main
│ │ ├─ java
│ │ │ └─ com/futurice/project
│ │ ├─ res
│ │ └─ AndroidManifest.xml
│ ├─ build.gradle
│ └─ proguard-rules.pro
├─ build.gradle
└─ settings.gradle
主要的區別在於,新的結構明確的分開了'source sets' (main,androidTest),這是Gradle的一個理念。 通過這個你可以做到,例如,添加源組『paid』和『free』在src中,讓你的應用程序具有付費和免費的兩種模式的源代碼。
你的項目引用第三方項目庫時(例如,library-foobar),擁有一個頂級包名app從第三方庫項目區分你的應用程序是非常有用的。 然後settings.gradle不斷引用這些庫項目,其中app/build.gradle可以引用。
如果需要更加詳細的介紹請點擊下方鏈接
介紹內容有 Android 開發規范, 架構, 布局技巧, 以及使用一些有助於快速開發相關工具等等
如何系統學習Android
因為要介紹的東西太多了,這里給大家推薦一張安卓知識體系的圖片,最近看到別人整理的一份也挺好的,對我收益很大,如果需要請點擊一個老鳥發的公司內部整理的 Android 學習路線圖
推薦一些實用的資源
推薦大家一個網站「極客導航——程序員自己的導航」,裡面介紹了常用網站,工具大全,經典博客,進階之路,源碼下載,跳槽指南,精品網站,邊角作用的一些常用網站,一些Android大牛的博客都在裡面,我經常會看。
總結
1. 如果你是非科班畢業想要轉行編程,看了我的經歷你一定很有信心與動力,我能,你一樣能,何況我中間走了這么多彎路; 2. 如果你接觸過一些數據結構、編程語言之類的,想要學習編程,你更應該有信心,你比那些非科班的人已經多了一些基礎,你要做的只是堅定信念,堅持走下去; 3. 不要感慨上天的不公平,我一路走來很悲催,走了太多的彎路,遇到了太多的困難,都是我這輩子難以忘記的,但同時我是幸運的,因為我有她,我感謝我女朋友無數個日夜的理解與支持,上帝在給你製造坎坷的時候總會對你有些眷顧; 4. 如果你准備或已經在做開發的人員,沒有信心或動力,又或是對未來迷茫的時候,姑且當做一篇勵志小說來看,你要做的就是做好你當下在做的事,相信你的付出一定能有所收獲;
建議
寫到這里想要給點建議,那就以一個反例的身份給出事後的一些建議吧:
1.每天花1小時看書,難的不是1小時,難的在堅持; 2.英語對編程來說很重要,試著習慣英語閱讀;(扇貝系列的軟體) 3.數據結構和演算法要學好,這算是對編程來說最重要的課了,以後不見得能用得上,但用的時候起碼你有印象; 4.善於利用搜索引擎,從用Google做起,學會英文關鍵字搜索,有問題第一時間想到去搜索而不是去請教別人; 5.多去混GitHub,目前最流行的開源社區,多參與開源項目,慢慢試著讀牛人們的代碼,時機到的時候自己也可以為6.開源社區貢獻力量,可以這樣說在GitHub上認真混一年,比你在大學四年學的東西要多的多; 7.第一份工作很重要,因為你會受一些周圍同事、公司氛圍的影響。 8.最後一條是盡快找一個女朋友,因為你的工作使你接觸到的女性會越來越少。
大家都有了以上相同的教程,但是人和人之間的區別在於:別人有顆更強大的內心,可怕的是比你聰明的人比你還要更努力!!
當你下定決心,准備前行的時候,剩下的只有堅持了。。。
最新Java教程全套
第1階段 :Java基礎
1.認知基礎課程2. java入門階段3. 面向對象編程4. 飛機小項目5. 面向對象和數組6. 常用類7. 異常機制8. 容器和數據結構9. IO流技術10. 多線程11. 網路編程12. 手寫伺服器13. 註解和反射14. GOF23種設計模式15. 正則表達式16. JDBC資料庫操作17. 手寫SORM框架18. JAVA10新特性19.數據結構和演算法20. JVM虛擬機講解21. XML技術解析
第2階段:資料庫開發全套課程
1.Oracle和SQL語言2.Mysql快速使用3.PowerDesigner使用4.JDBC資料庫5.Mysql優化6.oracle深度講解
第3階段:網頁開發和設計
1.HTML基礎2.CSS基礎3.JavaScript編程4.jQuery5.easyUI
第4階段:Servlet和JSP實戰深入課程
1.Servlet入門和Tomcat2.request和response對象3.轉發和重定向_Cookie4.session_Context對象5.JSP6.用戶管理系統7.Ajax技術8.EL和JSTL標簽庫9.過濾器10.監聽器
第5階段:高級框架階段
1.Mybatis2.Spring3.Spring MVC4.SSM框架整合5.RBAC許可權控制項目6.Hibernate37.Hibernate48.jFinal9.Shiro安全框架10.Solr搜索框架11.Struts212.Nginx伺服器13.Redis緩存技術14.JVM虛擬機優化15.Zookeeper
第6階段:微服務架構階段
1.Spring Boot2.Spring Data3.Spring Cloud
第7階段:互聯網架構階段
1.Linux系統2.Maven技術3.Git4.SVN5.高並發編程6.系統和虛擬機調優7.JAVA編程規范8.高級網路編程9.Netty框架10.ActiveMQ消息中間件11.單點登錄SSO12.資料庫和SQL優化13.資料庫集群和高並發14.Dubbo15.Redis16.VSFTPD+NGINX
第8階段:分布式億級高並發電商項目
1.基於SOA架構介紹2.VSFTPD和Nginx和商品新增3.商品規格參數管理4.Jsonp5.CMS模塊6.廣告位數據緩存7.SolrJ和SolrCloud8.商品搜索9.商品詳情10.單點登錄11.購物車12.訂單系統13.分庫和分表14.分布式部署
第9階段:畢設項目第1季
1. 電子政務網2. 企業合同管理系統3. 健康管理系統4. 商品供應管理系統5. 土地檔案管理系統6. 聊天室設計和實現7. 碼頭配套和貨櫃管理系統8. 百貨中心供應鏈系統9. 病歷管理系統10. 超市積分管理系統11. 動漫論壇12. 俄羅斯方塊13. 個人博客系統14. 固定資產管理系統15. 影視創作論壇16. 屏幕截圖工具17. 超級瑪麗游戲18. 飛機大戰游戲19. 雷電
第10階段:畢設項目第2季
1. 微博系統2. 寫字板3. 坦克大戰4. 推箱子5. 電腦彩票系統6. 記賬管理系統7. 新聞發布系統8. 醫院掛號系統9. 倉庫管理系統10. 停車場管理系統11. 網路爬蟲12. 酒店管理系統13. 企業財務管理系統14. 車輛管理系統15. 員工信息管理系統16. 旅遊網站17. 搜索引擎18. 進銷存管理系統19. 在線考試系統20. 物流信息網21. 住院管理系統22. 銀行櫃員業務績效系統
F. 有研究android系統源碼的博客嗎
我幹了3年Android sdk開發,覺得到了瓶勁沒法更進一步,於是花了一年多點時間,大概摸到點門徑。根據前輩的經驗,Android底層完全入門需要兩年。
先說下我的入門過程:
第零步,下載源碼,我下的4.2的,框架層源碼10G,內核2G多,ctags給框架層建的標簽文件都有600M,當時讓我有點震撼,用的vim+ctags+cscope來閱讀,還算不錯,架構挺清晰的。
第一步,我找到了一本好書《Android的設計與實現 第一卷》它講了Android框架層的啟動,初始化,服務框架初始化,Binder,消息循環,PackageManagerService,ActivityManagerService。據作者說後面會出講UI子系統的第二卷,拭目以待。其實這本書看了幾十頁我就發現需要第二步的知識,否則看不下去,於是跳去第二步。
第二步,學習Linux系統編程,在看《Android的設計與實現》的時候我發現,框架層的Native部分,全是Linux編程。為了掌握這部分知識,我花了4個月學習了《Linux系統編程手冊》(TLPI)這本1000多頁的書,我以前是搞WIndows文件系統這塊的,所以C語言還比較熟,TLPI的習題很有意思,量也比較大,堅持下來還是收獲很多。
第三步,花了4個月學習了一些Linux內核的知識,看了LKD,PLKA看了一半多。越學越沒底,覺得不懂得越來越多,不過這個也正常,只有靠慢慢磨,估計以後要不斷的磨這塊。
第四步,回頭看Android源碼,這次一口氣看完了《Android的設計與實現 第一卷》,終於對框架層有了譜。同時真的數次把我看暈,前面看Linux內核源碼都沒這么暈,不斷在Java層和Native層之間跳有點磨腦漿。其中我又覺得Java的基礎沒有打太牢,回去補了一個月的《Core Java》第八版。但是這書沒有涉及UI子系統,於是又看了《Android內核剖析》
第五步,《Android內核剖析》(這本書實際上是講框架層的,作者也是個搞嵌入式的,所以他在寫框架層的時候文筆不太好,很羅嗦,不過還是有很多看點,到他後來寫做ROM,玩開發板時估計是說到了他的本行,一下子遛起來了看得出還是挺有水平的,這本書知識有點舊畢竟講的是2.3很多代碼已經過時,但是作者很多點子很有參考價值)這本書講UI子系統和按鍵/觸摸消息處理系統還是很有分量的,尤其13章View繪制那裡,結合源碼研究很有收獲。而後面他講編譯框架和ROM相關的東西都是挺寶貴的資料。
第六步,為了再補一下其他諸如電源管理模塊等子系統的知識看了,《深入理解android》系列,個人認為這個系列看起來有點不太舒服,不過作為補充印證還是比較有價值。
第七步,《Android系統源代碼情景分析》,羅升陽的源碼分析大作,比《Android的設計與實現》分析得更細致,但缺點是涉及到模塊比較少,選用的源碼也比《Android的設計與實現》更舊一點。看完書後需要去研究作者的博客,東西挺多的,一定讓你滿意。
第八步,買塊開發板自己玩。這步我還沒走到,原因是我覺得我還差點准備知識。可能要再幾個月,到時准備入塊6410或者樹莓派。
最後,由於我11年以前都是搞Windows這塊的,所以對Linux知識不是很了解,不得已看了這么些書,如果是一直做Linux的人,很多步驟估計可以省掉了。直接上源碼才是正道。
我本身做著移動GIS開發的工作,學框架層全是因為興趣,但招聘平台Android框架層開發人員還是蠻有競爭力的有不少定製ROM,智能電視的工作都處於人才難求狀態,畢竟有一定的門檻,現在各種ios培訓,讓奔著錢干開發的人紛紛湧入,而ios只能幹sdk開發的缺點就暴露出來了,一堆新手老手,菜鳥大牛全擠在SDK開發這塊,我覺得不太妙。 反觀Android這邊,雖然入門菜鳥沒有搞ios來錢,但是可持續性很好,從sdk-》框架》驅動》內核這樣幹下去。干著干著發現自己漸漸變成了Linux開發者/嵌入式開發者的人也不少,新人,老手,菜鳥大牛各居其位,層次性很好。
轉載
G. 大牛們是怎麼閱讀 Android 系統源碼的
由於工作需要大量修改framework代碼, 在AOSP(Android Open Source Project)源碼上花費了不少功夫, Application端和Services端都看和改了不少.
如果只是想看看一些常用類的實現, 在Android包管理器里把源碼下載下來, 隨便一個IDE配好Source Code的path看就行.
但如果想深入的了解Android系統, 那麼可以看下我的一些簡單的總結.
知識
Java
Java是AOSP的主要語言之一. 沒得說, 必需熟練掌握.
熟練的Android App開發
Linux
Android基於Linux的, 並且AOSP的推薦編譯環境是Ubuntu 12.04. 所以熟練的使用並了解Linux這個系統是必不可少的. 如果你想了解偏底層的代碼, 那麼必需了解基本的Linux環境下的程序開發. 如果再深入到驅動層, 那麼Kernel相關的知識也要具備.
Make
AOSP使用Make系統進行編譯. 了解基本的Makefile編寫會讓你更清晰了解AOSP這個龐大的項目是如何構建起來的.
Git
AOSP使用git+repo進行源碼管理. 這應該是程序員必備技能吧.
C++
Android系統的一些性能敏感模塊及第三方庫是用C++實現的, 比如: Input系統, Chromium項目(WebView的底層實現).
硬體
流暢的國際網路
AOSP代碼下載需要你擁有一個流暢的國際網路. 如果在下載代碼這一步就失去耐心的話, 那你肯定沒有耐心去看那亂糟糟的AOSP代碼. 另外, 好程序員應該都會需要一個流暢的Google.
一台運行Ubuntu 12.04的PC.
如果只是閱讀源碼而不做太多修改的話, 其實不需要太高的配置.
一台Nexus設備
AOSP項目默認只支持Nexus系列設備. 沒有也沒關系, 你依然可以讀代碼. 但如果你想在大牛之路走的更遠, 還是改改代碼, 然後刷機調試看看吧.
高品質USB線
要刷機時線壞了, 沒有更窩心的事兒了.
軟體
Ubuntu 12.04
官方推薦, 沒得選.
Oracle Java 1.6
注意不要用OpenJDK. 這是個坑, 官方文檔雖然有寫, 但還是單獨提一下.
安裝:
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java6-installer
sudo apt-get install oracle-java6-set-default
Eclipse
估計會有不少人吐槽, 為什麼要用這個老古董. 其實原因很簡單, 合適. 剛開始搞AOSP時, 為了找到效率最優的工具, 我嘗試過Eclipse, IntelliJ IDEA, Vim+Ctags, Sublime Text+Ctags. 最終結果還是Eclipse. 主要優點有:
有語法分析 (快速准確的類, 方法跳轉).
支持C++ (IntelliJ的C++支持做的太慢了).
嵌入了DDMS, View Hierarchy等調試工具.
為了提高效率, 花5分鍾背下常用快捷鍵非常非常值得.
調整好你的classpath, 不要導入無用的代碼. 因為AOSP項目代碼實在是太多了. 當你還不需要看C++代碼時, 不要為項目添加C++支持, 建索引過程會讓你崩潰.
Intellij IDEA
開發App必備. 當你要調試系統的某個功能是, 常常需要迅速寫出一個調試用App, 這個時候老舊的Eclipse就不好用了. Itellij IDEA的xml自動補全非常給力.
巨人的肩膀
這個一定要先讀. 項目介紹, 代碼下載, 環境搭建, 刷機方法, Eclipse配置都在這里. 這是一切的基礎.
這個其實是給App開發者看的. 但是裡面也有不少關於系統機制的介紹, 值得細讀.
此老羅非彼老羅. 羅升陽老師的博客非常有營養, 基本可以作為指引你開始閱讀AOSP源碼的教程. 你可以按照博客的時間順序一篇篇挑需要的看.但這個系列的博客有些問題:
早期的博客是基於舊版本的Android;
大量的代碼流程追蹤. 讀文章時你一定要清楚你在看的東西在整個系統處於什麼樣的位置.
鄧凡平老師也是為Android大牛, 博客同樣很有營養. 但是不像羅升陽老師的那麼系統. 更多的是一些技術點的深入探討.
Android官方Issue列表. 我在開發過程中發現過一些奇怪的bug, 最後發現這里基本都有記錄. 當然你可以提一些新的, 有沒有人改就是另外一回事了.
一定要能流暢的使用這個工具. 大量的相關知識是沒有人系統的總結的, 你需要自己搞定.
其它
代碼組織
AOSP的編譯單元不是和git項目一一對應的, 而是和Android.mk文件一一對應的. 善用mmm命令進行模塊編譯將節省你大量的時間.
Binder
這是Android最基礎的進程間通訊. 在Application和System services之間大量使用. 你不僅要知道AIDL如何使用, 也要知道如何手寫Binder介面. 這對你理解Android的Application和System services如何交互有非常重要的作用. Binder如何實現的倒不必著急看.
HAL
除非你對硬體特別感興趣或者想去方案公司上班, 否則別花太多時間在這一層.
CyanogenMod
這是一個基於AOSP的第三方Rom. 從這個項目的wiki里你能學到很多AOSP官方沒有告訴你的東西. 比如如何支持Nexus以外的設備.
DIA
這是一個Linux下畫UML的工具, 能夠幫你梳理看過的代碼.
XDA
這里有最新資訊和最有趣的論壇.
想到了再補充.
H. android教程 有什麼好的視頻教程介紹以及安卓系統的介紹
1、android入門向的教程不太多,可以到極客學院去看看。但是他們講的很快,內容很概括,最好還是看書和高手的博客。比如《第一行代碼Android》是CSDN大牛郭霖出的書,他的博客上也有很多不錯的示例。再就是看看一些高手寫的Demo,分析別人的源碼,理解編程思想。
2、安卓(Android)是一種基於Linux的自由及開放源代碼的操作系統。主要使用於移動設備,如智能手機和平板電腦,由Google公司和開放手機聯盟領導及開發。Android操作系統最初由Andy Rubin開發,主要支持手機。2005年8月由Google收購注資。2007年11月,Google與84家硬體製造商、軟體開發商及電信營運商組建開放手機聯盟共同研發改良Android系統。隨後Google以Apache開源許可證的授權方式,發布了Android的源代碼。