1. 安卓開發如何入門
我幹了3年androidsdk開發,覺得到了瓶勁沒法更進一步,於是譽信花了一年多點時間,大概摸到點門徑。根據前輩的經驗,Android底層完全入門需要兩年。
先說下我的入門過程:
第零步,下載源碼,我下的4.2的,框架層源碼10G,內核2G多,ctags給框架層建的標簽文件都有600M,當時讓我有點震撼,用的vimctagscscope來閱讀,還算不錯,架構挺清晰的。
第一步,我找到了一本好書《Android的設計與實現第一卷》它講了Android框架層的啟動,初始化,服務框架初始化,Binder,消息循環,。據作者說後面會出講UI子系統的第二卷,拭目以待。其實這本書看了幾十頁我就發現需要第二步的知識,否則看不下去,於是跳去第二步。
第二步,學習Linux系統編程,在看《Android的設計與實現》的時候我發現,框架層的Native部分,全是Linux編程。為了掌握這部分知識,我花了4個月學習了《Linux系統編程手冊》(TLPI)這本1000多頁的書,我以前是搞WIndows文件系統這塊的,所以C語言還比較熟,TLPI的習題很有意思,量也比較大,堅持下來還是收獲很多。
第三步,花了4個月學習了一些Linux內核的知識,看了LKD,PLKA看了一半多。越學越沒底,覺得不懂得越來越多,不過這個也正常,只有靠慢慢磨,估計以後要不斷的磨這塊。
第四步,回頭看Android源碼,這次一口氣看完了《Android的設計與實現第一卷》,終於對框架層有了譜。同時真的數次把我看暈,前面看Linux內核源碼都沒這么暈,不斷在Java層和Native層之間跳有點磨腦漿。其中我又覺得Java的基礎沒有打太牢,回去補了一個月的《CoreJava》第八版。但是這書沒有涉及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開發者/嵌入式開發者的人也不少,新人,老手,菜鳥大牛各居其位,層次性很好。
2. android系統開發怎麼入門
開發android,我們需要哪些技能基礎
①Java基礎知識 ②Linux基礎知識 ③資料庫基礎知識 ④網路協議 ⑤Android基礎知識 ⑥伺服器端開發知識①Java基礎知識很多朋友一上手就開始學習Android,似乎太著急了一些
Android應用程序開發是以Java語言為基礎的,所以沒有扎實的Java基礎知識,只是機械的照抄別人的代碼,是沒有任何意義的
萬丈高樓平地而起,Java就是築起高樓的每一塊磚頭
這部分內容沒有討價還價的餘地,必須爛熟於胸
至於具體的學習方法,可以姿搏局看書或者是看視頻,但是關鍵是要多加練習,無論是書上的練習還是視頻裡面的練習,都需要仔仔細細的完成;b)設計模式:由於在Android系統的框架層當中,使用了大量的設計模式,如果沒有這個方面的知識,對於Android的理解就會大打折扣
設計模式的種類非常之多,一個一個的全部掌握,是不現實的,必須首先掌握面向對象的基礎設計原則,有了這些基礎原則的支持,就可以舉一反三
②Linux基礎知識大家都知道,Android系統的基礎是Linux操作系統
在開發過程當中,我們也需跡讓要使用到一些Linux命令
所以說一些Linux的基礎知識是必須的(話說現在的程序員,不懂Linux都不好意思跟人家打招呼);③資料庫基礎知識這個比較簡單,就是一個增刪改銀肢查的資料庫操作,可以看一下這本書:《SQL編程練習與解答》④網路協議至少需要學習兩種基礎的協議,HTTP協議與Socket協議;⑤Android基礎知識⑥伺服器端開發知識由於很多Android應用程序都需要伺服器端的支持,所以掌握一些伺服器端開發知識還是非常有必要的
至於選擇哪一種伺服器端知識進行學習,就比較麻煩了,因為技術的種類實在是太多了:a)Java EE:就是上面郵件當中所提到的SSH—StrutsSpringHibernate
這種技術的優點的功能完整、強大,已經使用了很多年,而且既然大家已經非常熟悉Java了,那麼學習SSH看起來也順理成章
但是使用這種技術開發伺服器端程序,非常麻煩
即使是一些簡單的功能,也可能需要大量的代碼和配置文件來實現;b)PHP:簡單易學,開發快速
但是我們需要多學一種語言,是否得不償失,就要大家自己判斷了;c)
NET:這項技術的特點和Java EE差不多,但是要想掌握
NET,則需要掌握c#,也是個麻煩的事情;d)ruby on rails:這是我個人最喜歡的伺服器端技術,簡潔,優雅,寥寥幾行代碼,就可以實現很復雜的功能,但是這需要Ruby語言知識作為基礎;
3. Android編程開發怎麼學_安卓編程入門自學
學習分三個階段:
1,Android基礎階段:平台架構特性(JAVA/C)Market/應用程序組件環境搭建與部署/打包與發布AVD/DDMS/AAPT調試與測試相關資源訪問/資源製作Activity/Service/BroadcastReceiver/ContentProvider/原理(生命周期)及深層實現
2,Android進階初級:組件Widget/菜單Menu/布局Layout詳解Xml解析(Pull/Dom/Sax)/JNI解析SQL資料庫原理,。
SQLite//File詳解多媒體Audio/Video/Camera詳解
3,Android進階高級:藍牙/WIFISMS/MMS應用實現深層次解析GPS原理。
實現/進行定位/跟蹤/查找/趨近警告以及Geocoder正逆向編解碼等技術細節2D圖形庫(Graphics/View)詳解SDCARD/感測器/手勢應用實現
(3)android博客入門擴展閱讀:
知識體系
1、Unix/Linux平台技術:基本命令,Linux下的開發環境
2、企業級資料庫技術:SQL語言、SQL語句調優、Oracle資料庫技術
3、Java語言核心技術:Java語言基礎、Java面向對象編程、JDK核心API、Java集合框架、Java網路編程、JavaI/O編程、Java多線程編程、Java異常機制、Java安全、JDBC、XML
4、軟體工程和設兆祥計模式:軟體工程概述、配置管理及SVN、UML、基本設計模式
5、Android應用開發基礎:Android開發平台、EclipseADT開發環境、AVD及感測模擬器調試、Android核心組件、Android常用組件、Android高級組件、文件及網路訪問、SQLite資料庫編程、後台服務編程
6、互聯網核心技術:HTML、CSS、JavaScript、好薯JQuery、Ajax應用
7、Android高級應用開發:音頻視頻攝像頭、互聯網應用、GPS和位置服務、GoogleMap、2DD繪制、感測器開發、游戲開發、電話及SMS服務、網路BluetoothWi-Fi等。
8、Android系統級開發:移植、驅動、NDK(C方向)。
9、JavaEE核心技術:Servlet核心技術、JSP核心技術、Struts、Spring、Hibernate框架友猜者。
4. 新手剛剛學習android,推薦android開發的入門教程
1 瘋狂android講義
2 老羅安卓視頻
3 google官網api guide
4 建議你把android學習手冊上的108個例子都看一遍,可以直接看源碼,例子和文檔,360手機助手中下載,
下面是效果圖:
5. 新手剛剛學習android,推薦android開發的入門教程
學習android注意事項:
1,android技術准備實訓目標:通過這部分的學習,學員能夠達到學習android開發課程的基本要求。熟練使用Java語言,實現GUI桌面應用程序的開發JDK的安裝和配置開發工具Eclipse3.4安裝。實訓知識點: Java標識符、數據類型流程式控制制、面向對象編程、繼承、抽象類、介面、包、異常、IO流、Swing、游戲演算法介紹
,2,android入門實訓目標:通過這部分的學習,學員具備了android程序開發的能力,能獨立完成常用的應用軟體。實訓知識點: Android系統概述和內置工具、Android 開發環境的搭建和啟動模擬器、建立android工程、Android應用程序開發及運行編譯結構、API參考文檔的使用、使用am工具啟動android應用程序、部署應用到真實手機、控制項和事件編程、菜單編程、對話框編程、視圖組編程、各種布局的使用、Grid視圖組、List視圖組、使用Tab組織UI
,3,android進階實訓目標:通過這部分的學習,學員的android開發能力會有大幅提高。等感測器編程、android優化和性能提高。實訓知識點及案例分析:Service概述、創建和啟動、生命周期、許可權及跨進程調用;廣播的概念及生命周期、廣播發送的許可權廣播接收器的實現、接收SMS簡訊、播放MP3;內容提供器的概念作用和常見介面、使用內容提供器實現增刪改查、內容提供其許可權和創建內容提供器、SQLite資料庫添刪改查操作、使用list視圖組顯示數據;Widget概念和製作方法、Widget各種XML描述文件詳解2D圖形圖像及文本、Gallery UI編程、GridView編程、OnDraw編程、drawable編程基本動畫編程技巧、Tween動畫、Frame動畫、TimerOpenGL ES的2D和3D繪圖GPS服務、GPRS網路使用、android藍牙開發、android方向、加速表、光線、磁場、臨近性、溫度
4,項目實戰實訓目標:本階段讓學員開發,設計Android網上購物系統,其中包括Android圖形界面開發,Android聲音,Android網路通訊,和伺服器後端進行通訊交換數據。
Android基礎知識:
一、Android開發的分類:
1、Android客戶端應用程序
如新浪微博、網銀客戶端、凡客、淘寶客戶端,快盤客戶端。Android在這里的應用還是界面層的東西為主。核心還在WEB。客戶端界面很重要,用戶體驗度很重要。從應用需求上來講,幾乎大一點的網站,都需要有手機客戶端程序。
2、Android通用類程序
如基於LBS(基於位置的服務)的應用 (這類一般會嵌入到客戶端應用程序中),流媒體播放應用。由於移動設備的方便便捷、3G、4G網路的發展,這類應用有不錯的前景。
3、Android游戲開發
需要掌握的游戲引擎LGame,游戲框架等。手機上的游戲會是一大塊內容,有前途。
4、Android底層開發
需要掌握C、Linux等較底層的東西,發展方向應該是驅動、協議開發,嵌入式開發。
開始學習了解一般從界面、控制項開始,這也是大部分人認為簡單、比較快上手的原因。學習一段時間後,自己可以定一個方向發展。
二、Android學習需要哪些知識點
1、Java基礎知識
J2SE:Java基礎類(lang包,IO包,util包(集合框架),面向對象,多線程,網路編程)
2、J2EE知識
如果你想從事的Android客戶端應用程序的開發,這部分知識是必備的。顯然Android客戶端只是做的數據的請求、展現,所需的數據在伺服器端。
技能點:Tomcat(Weblogic),XML解析,JSON解析,JSP/Servlet。了解SSH。
3、Linux、C語言知識
可以作為你後續發展需要了解的。
在論壇上、QQ上看到不少童鞋Java基礎還比較欠缺,就開始搞Android了,當然就問題多多。學習熱情可嘉,但需要打一個好的基礎,有一個好的學習路線。
三、Android學習比較好的資料
1、應該說現在市面上的書,入門的還是不少,但一般現在只講了簡單控制項的單個用法。
《Android開發範例大全》,《Android應用開發詳解》可以參考。想了解游戲的話,可以參考《Android2.0游戲開發實戰寶典》。
2、Android學習視頻,也基本上停留在講簡單入門,單個控制項用法為主,這方面遠不及Java,J2EE,SSH的視頻那麼豐富。應該講,你看完了這些,離開發還有很大一段距離。而且,這些視頻在講課方法上不如一些Java的好。現在的視頻資料太豐富,從哈佛、斯坦福的課程,到IPHONE開發課程,都有。但全部跟著視頻完成所有的學習,有很長一段跟要走。
3、Android的論壇比較多,論壇的缺點就是什麼東西得自己一個個查找、去等。自學是一個艱苦而漫長的過程。對你的鍛煉和提升也最大。自學有一個缺點,就是容易迷失方向,一個知識點你永遠不知道要掌握多深,相關的應用是什麼。自學就好比像你一個人在走一條目標很遠,前面叉路很多的暗道一樣。
4、培訓機構學習。如果你時間上允許不失為一種好的選擇,可以快速入門。互聯網產品(時代)有一個重要特點,就是拿資金換時間。如果能快速入門,到這個行業去發展,就比自己慢慢學習要好得多。畢竟現在Android開發太熱了。對開發人員的要求也會逐漸提高。(如既要求能做Android開發,又做IPHONE移植開發)。
6. android網路編程學什麼,如何學習android網路編程
第一個問題解答:android網路編程學習內容詳解:
1.0 Android基礎入門教程
1.1 背景相關與系統架構分析
1.2 開發環境搭建
1.2.1 使用Eclipse + ADT + SDK開發Android APP
1.2.2 使用Android Studio開發Android APP
1.3 SDK更新不了問題解決
1.4 Genymotion模擬器安裝
1.5.1 Git使用教程之本地倉庫的基本操作
1.5.2 Git之使用GitHub搭建遠程倉庫
1.6 .9(九妹)圖片怎麼玩
1.7 界面原型設計
1.8 工程相關解析(各種文件,資源訪問)
1.9 Android程序簽名打包
1.11 反編譯APK獲取代碼&資源
2.1 View與ViewGroup的概念
2.2.1 LinearLayout(線性布局)
2.2.2 RelativeLayout(相對布局)
2.2.3 TableLayout(表格布局)
2.2.4 FrameLayout(幀布局)
2.2.5 GridLayout(網格布局)
2.2.6 AbsoluteLayout(絕對布局)
2.3.1 TextView(文本框)詳解
2.3.2 EditText(輸入框)詳解
2.3.3 Button(按鈕)與ImageButton(圖像按鈕)
2.3.4 ImageView(圖像視圖)
2.3.5.RadioButton(單選按鈕)&Checkbox(復選框)
2.3.6 開關按鈕ToggleButton和開關Switch
2.3.7 ProgressBar(進度條)
2.3.8 SeekBar(拖動條)
2.3.9 RatingBar(星級評分條)
2.4.1 ScrollView(滾動條)
2.4.2 Date & Time組件(上)
2.4.3 Date & Time組件(下)
2.4.4 Adapter基礎講解
2.4.5 ListView簡單實用
2.4.6 BaseAdapter優化
2.4.7ListView的焦點問題
2.4.8 ListView之checkbox錯位問題解決
2.4.9 ListView的數據更新問題
2.5.0 構建一個可復用的自定義BaseAdapter
2.5.1 ListView Item多布局的實現
2.5.2 GridView(網格視圖)的基本使用
2.5.3 Spinner(列表選項框)的基本使用
2.5.4 AutoCompleteTextView(自動完成文本框)的基本使用
2.5.5 ExpandableListView(可折疊列表)的基本使用
2.5.6 ViewFlipper(翻轉視圖)的基本使用
2.5.7 Toast(吐司)的基本使用
2.5.8 Notification(狀態欄通知)詳解
2.5.9 AlertDialog(對話框)詳解
2.6.0 幾種常用對話框基本使用
2.6.1 PopupWindow(懸浮框)的基本使用
2.6.2 菜單(Menu)
2.6.3 ViewPager的簡單使用
2.6.4 DrawerLayout(官方側滑菜單)的簡單使用
3.1.1 基於監聽的事件處理機制
3.2 基於回調的事件處理機制
3.3 Handler消息傳遞機制淺析
3.4 TouchListener PK OnTouchEvent + 多點觸碰
3.5 監聽EditText的內容變化
3.6 響應系統設置的事件(Configuration類)
3.7 AnsyncTask非同步任務
3.8 Gestures(手勢)
4.1.1 Activity初學乍練
4.1.2 Activity初窺門徑
4.1.3 Activity登堂入室
4.2.1 Service初涉
4.2.2 Service進階
4.2.3 Service精通
4.3.1 BroadcastReceiver牛刀小試
4.3.2 BroadcastReceiver庖丁解牛
4.4.1 ContentProvider初探
4.4.2 ContentProvider再探——Document Provider
4.5.1 Intent的基本使用
4.5.2 Intent之復雜數據的傳遞
5.1 Fragment基本概述
5.2.1 Fragment實例精講——底部導航欄的實現(方法1)
5.2.2 Fragment實例精講——底部導航欄的實現(方法2)
5.2.3 Fragment實例精講——底部導航欄的實現(方法3)
5.2.4 Fragment實例精講——底部導航欄+ViewPager滑動切換頁面
5.2.5 Fragment實例精講——新聞(購物)類App列表Fragment的簡單實現
6.1 數據存儲與訪問之——文件存儲讀寫
6.2 數據存儲與訪問之——SharedPreferences保存用戶偏好參數
6.3.1 數據存儲與訪問之——初見SQLite資料庫
6.3.2 數據存儲與訪問之——又見SQLite資料庫
7.1.1 Android網路編程要學的東西與Http協議學習
7.1.2 Android Http請求頭與響應頭的學習
7.1.3 Android HTTP請求方式:HttpURLConnection
7.1.4 Android HTTP請求方式:HttpClient
7.2.1 Android XML數據解析
7.2.2 Android JSON數據解析
7.3.1 Android 文件上傳
7.3.2 Android 文件下載(1)
7.3.3 Android 文件下載(2)
7.4 Android 調用 WebService
7.5.1 WebView(網頁視圖)基本用法
7.5.2 WebView和JavaScrip交互基礎
7.5.3 Android 4.4後WebView的一些注意事項
7.5.4 WebView文件下載
7.5.5 WebView緩存問題
7.5.6 WebView處理網頁返回的錯誤碼信息
7.6.1 Socket學習網路基礎准備
7.6.2 基於TCP協議的Socket通信(1)
7.6.3 基於TCP協議的Socket通信(2)
7.6.4 基於UDP協議的Socket通信
8.1.1 Android中的13種Drawable小結 Part 1
8.1.2 Android中的13種Drawable小結 Part 2
8.1.3 Android中的13種Drawable小結 Part 3
8.2.1 Bitmap(點陣圖)全解析 Part 1
8.2.2 Bitmap引起的OOM問題
8.3.1 三個繪圖工具類詳解
8.3.2 繪圖類實戰示例
8.3.3 Paint API之—— MaskFilter(面具)
8.3.4 Paint API之—— Xfermode與PorterDuff詳解(一)
8.3.5 Paint API之—— Xfermode與PorterDuff詳解(二)
8.3.6 Paint API之—— Xfermode與PorterDuff詳解(三)
8.3.7 Paint API之—— Xfermode與PorterDuff詳解(四)
8.3.8 Paint API之—— Xfermode與PorterDuff詳解(五)
8.3.9 Paint API之—— ColorFilter(顏色過濾器)(1/3)
8.3.10 Paint API之—— ColorFilter(顏色過濾器)(2-3)
8.3.11 Paint API之—— ColorFilter(顏色過濾器)(3-3)
8.3.12 Paint API之—— PathEffect(路徑效果)
8.3.13 Paint API之—— Shader(圖像渲染)
8.3.14 Paint幾個枚舉/常量值以及ShadowLayer陰影效果
8.3.15 Paint API之——Typeface(字型)
8.3.16 Canvas API詳解(Part 1)
8.3.17 Canvas API詳解(Part 2)剪切方法合集
8.3.18 Canvas API詳解(Part 3)Matrix和drawBitmapMash
8.4.1 Android動畫合集之幀動畫
8.4.2 Android動畫合集之補間動畫
8.4.3 Android動畫合集之屬性動畫-初見
8.4.4 Android動畫合集之屬性動畫-又見
9.1 使用SoundPool播放音效(Duang~)
9.2 MediaPlayer播放音頻與視頻
9.3 使用Camera拍照
9.4 使用MediaRecord錄音
10.1 TelephonyManager(電話管理器)
10.2 SmsManager(簡訊管理器)
10.3 AudioManager(音頻管理器)
10.4 Vibrator(振動器)
10.5 AlarmManager(鬧鍾服務)
10.6 PowerManager(電源服務)
10.7 WindowManager(窗口管理服務)
10.8 LayoutInflater(布局服務)
10.9 WallpaperManager(壁紙管理器)
10.10 感測器專題(1)——相關介紹
10.11 感測器專題(2)——方向感測器
10.12 感測器專題(3)——加速度/陀螺儀感測器
10.12 感測器專題(4)——感測器了解
10.14 Android GPS初涉
第二個問題解答:如何學習android網路編程:
1. Android學習之路,博客是Android新手必備資料。
2. 書不在多,適合就好,這里推薦一本Android和兩本Java書籍吧。
《第一行代碼》:郭霖大神的著作。
《Thinking In Java》:Java經典書籍,不必說。
《Effective Java》:Java進階必備書籍。
3. 有些人一開始看書也有困難,沒關系,那就去網上看視頻,結合視頻和書一起看,邊看邊敲。
4. 多去混GitHub,目前最流行的開源社區,多參與開源項目,慢慢試著讀牛人們的代碼,時機到的時候自己也可以為開源社區貢獻力量,可以這樣說在GitHub上認真混一年。
5. 關注一些Android界不錯的博客。
6. 善於利用搜索引擎,從用Google做起,學會英文關鍵字搜索,有問題第一時間想到去搜索而不是去請教別人。