安卓學(xué)習(xí)方法有哪些
Android(['ændrɔid])是一個(gè)以L(fǎng)inux為基礎(chǔ)的半開(kāi)源操作系統(tǒng),主要用于移動(dòng)設(shè)備,由Google和開(kāi)放手持設(shè)備聯(lián)盟開(kāi)發(fā)與領(lǐng)導(dǎo)。 那么,安卓學(xué)習(xí)方法有哪些?
安卓學(xué)習(xí)方法
一:了解什么是Android
二: 建立開(kāi)發(fā)環(huán)境
三: 閱讀SDK文檔
四: 背景知識(shí)
1、Java
2、面向?qū)ο?/p>
3、設(shè)計(jì)模式
4、J2ME、Brew、Symbian
先說(shuō)說(shuō)什么是Android;
1、Android是一種基于Linux的自由及開(kāi)放源代碼的操作系統(tǒng),主要使用于便攜設(shè)備,如智能手機(jī)和平板電腦。它包括一個(gè)操作系統(tǒng),中間件和一些重要的應(yīng)用程序。Beta版的Android SDK提供了在Android平臺(tái)上使用Java語(yǔ)言進(jìn)行Android應(yīng)用開(kāi)發(fā)必須的工具和API接口。
2、特性
• 應(yīng)用程序框架支持組件的重用與替換
• Dalvik D alvik 虛擬機(jī)專(zhuān)為移動(dòng)設(shè)備優(yōu)化
• 集成的瀏覽器基于開(kāi)源的WebKit引擎
• 優(yōu)化的圖形庫(kù)包括定制的2D圖形庫(kù),3D圖形庫(kù)基于OpenGL ES 1.0(硬件加速可選)
• SQLite SQLite SQLite用作結(jié)構(gòu)化的數(shù)據(jù)存儲(chǔ)
• 多媒體支持包括常見(jiàn)的音頻、視頻和靜態(tài)圖像格式(如MPEG4, H.264, MP3, AAC,AMR, JPG, PNG,
GIF)
• GSM電話(huà)技術(shù)(依賴(lài)于硬件)
• 藍(lán)牙Bluetooth, Bluetooth, Bluetooth, Bluetooth,EDGE, EDGE, EDGE, EDGE,3G, 3G,和WiFi WiFi WiFi W iFi (依賴(lài)于硬件)
• 照相機(jī),GPS,指南針,和加速度計(jì)(accelerometer accelerometer accelerometer)(依賴(lài)于硬件)
• 豐富的開(kāi)發(fā)環(huán)境包括設(shè)備模擬器,調(diào)試工具,內(nèi)存及性能分析圖表,和Eclipse集成開(kāi)發(fā)環(huán)境插件。
3、應(yīng)用程序
Android會(huì)同一系列核心應(yīng)用程序包一起發(fā)布,該應(yīng)用程序包包括email客戶(hù)端,SMS短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理程序等。所有的應(yīng)用程序都是使用JAVA語(yǔ)言編寫(xiě)的。
4、應(yīng)用程序框架
開(kāi)發(fā)人員也可以完全訪(fǎng)問(wèn)核心應(yīng)用程序所使用的API框架。該應(yīng)用程序的架構(gòu)設(shè)計(jì)簡(jiǎn)化了組件的重用;任何一個(gè)應(yīng)用程序都可以發(fā)布它的功能塊并且任何其它的應(yīng)用程序都可以使用其所發(fā)布的功能塊(不過(guò)得遵循框架的安全性限制)。同樣,該應(yīng)用程序重用機(jī)制也使用戶(hù)可以方便的替換程序組件。
隱藏在每個(gè)應(yīng)用后面的是一系列的服務(wù)和系統(tǒng), 其中包括;
• 豐富而又可擴(kuò)展的視圖(Views),可以用來(lái)構(gòu)建應(yīng)用程序,它包括列表(lists),網(wǎng)格(grids),文本框(text boxes),按鈕(buttons), 甚至可嵌入的web瀏覽器。
• 內(nèi)容提供器(Content Providers)使得應(yīng)用程序可以訪(fǎng)問(wèn)另一個(gè)應(yīng)用程序的數(shù)據(jù)(如聯(lián)系人數(shù)據(jù)庫(kù)),或者共享它們自己的數(shù)據(jù)
• 資源管理器(Resource Manager)提供非代碼資源的訪(fǎng)問(wèn),如本地字符串,圖形,和布局文件(layoutfiles )。
• 通知管理器 (Notification Manager)使得應(yīng)用程序可以在狀態(tài)欄中顯示自定義的提示信息。
• 活動(dòng)管理器(Activity Manager)用來(lái)管理應(yīng)用程序生命周期并提供常用的導(dǎo)航回退功能。
5、程序庫(kù)
Android包含一些C/C++庫(kù),這些庫(kù)能被Android系統(tǒng)中不同的組件使用。它們通過(guò)Android應(yīng)用程序框架為開(kāi)發(fā)者提供服務(wù)。以下是一些核心庫(kù):
• 系統(tǒng)C庫(kù)- 一個(gè)從BSD繼承來(lái)的標(biāo)準(zhǔn)C系統(tǒng)函數(shù)庫(kù)(libc ), 它是專(zhuān)門(mén)為基于embedded linux的設(shè)備定制的。
• 媒體庫(kù)- 基于PacketVideo OpenCORE;該庫(kù)支持多種常用的音頻、視頻格式回放和錄制,同時(shí)支持靜態(tài)圖像文件。編碼格式包括MPEG4, H.264,MP3,AAC,AMR, JPG, PNG。
• Surface Surface SurfaceManager Manager M anager - 對(duì)顯示子系統(tǒng)的管理,并且為多個(gè)應(yīng)用程序提 供了2D和3D圖層的無(wú)縫融合。
• LibWebCore LibWebCore LibWebCore- 一個(gè)最新的web瀏覽器引擎用,支持Android瀏覽器和一個(gè)可嵌入的web視圖。
• SGL- 底層的2D圖形引擎
• 3Dlibraries libraries libraries- 基于OpenGL ES 1.0APIs實(shí)現(xiàn);該庫(kù)可以使用硬件3D加速(如果可用)或者使用高度優(yōu)化的3D軟加速。
• FreeType FreeType FreeType-位圖(bitmap)和矢量(vector)字體顯示。
• SQLite SQLite SQLite- 一個(gè)對(duì)于所有應(yīng)用程序可用,功能強(qiáng)勁的輕型關(guān)系型數(shù)據(jù)庫(kù)引擎。
6、Android 運(yùn)行庫(kù)
Android包括了一個(gè)核心庫(kù),該核心庫(kù)提供了JAVA編程語(yǔ)言核心庫(kù)的大多數(shù)功能。
每一個(gè)Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,都擁有一個(gè)獨(dú)立的Dalvik虛擬 機(jī)實(shí)例。Dalvik被設(shè)計(jì)成一個(gè)設(shè)備可以同時(shí)高效地運(yùn)行多個(gè)虛擬系統(tǒng)。Dalvik虛擬機(jī)執(zhí)行(.dex)的Dalvik可執(zhí)行文件,該格式文件針對(duì)小內(nèi)存使用做了 優(yōu)化。同時(shí)虛擬機(jī)是基于寄存器的,所有的類(lèi)都經(jīng)由JAVA編譯器編譯,然后通過(guò)SDK中 的"dx" 工具轉(zhuǎn)化成.dex 格式由虛擬機(jī)執(zhí)行。
Dalvik虛擬機(jī)依賴(lài)于linux內(nèi)核的一些功能,比如線(xiàn)程機(jī)制和底層內(nèi)存管理機(jī)制。
7、Linux Linux Linux內(nèi)核
Android的核心系統(tǒng)服務(wù)依賴(lài)于Linux 2.6內(nèi)核,如安全性,內(nèi)存管理,進(jìn)程管理,網(wǎng)絡(luò)協(xié)議棧和驅(qū)動(dòng)模型。
Linux內(nèi)核也同時(shí)作為硬件和軟件棧之間的抽象層。
8、Android的系統(tǒng)架構(gòu)
8.1、Android內(nèi)核
Linux內(nèi)核版本2.6
位于硬件和軟件堆之間的抽象層
核心服務(wù):安全機(jī)制、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)、硬件驅(qū)動(dòng)。
Android依賴(lài)Linux內(nèi)核2.6提供核心服務(wù),比如安全、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)、硬件驅(qū)動(dòng)。在這里,Linux內(nèi)核扮演的是硬件層和系統(tǒng)其它層次之間的一個(gè)抽象層的概念。這個(gè)操作系統(tǒng)并非類(lèi)GNU/Linux的,因?yàn)槠湎到y(tǒng)庫(kù),系統(tǒng)初始化和編程接口都和標(biāo)準(zhǔn)的Linux系統(tǒng)是有所不同的。
從Google目前release的Linux系統(tǒng)來(lái)看,其沒(méi)有虛擬內(nèi)存文件系統(tǒng),系統(tǒng)所用的是yaffs2文件系統(tǒng),具體的映像也都位于SDK安裝目錄下。通過(guò)emulator -console命令,我們可以在host中斷下得到一個(gè)簡(jiǎn)單的可以控制Android的shell,這個(gè)系統(tǒng)包含了一個(gè)Toolbox,提供一些基本的命令工具,集中在/sbin,/system/sbin,/system/bin 中,但是很簡(jiǎn)陋,命令種類(lèi)也很少。
目前Android的程序安裝模式是靠Eclipse自動(dòng)進(jìn)行的,通過(guò)對(duì)底層的分析可知,大致步驟就是在/data/app和data/data下存放android底層和普通內(nèi)核沒(méi)有什么大的區(qū)別,我們可以將其作為一個(gè)Linux來(lái)進(jìn)行開(kāi)發(fā)和hacking。
8.2、Lib和運(yùn)行環(huán)境
lib
C/C++庫(kù):被各種Android組件使用通過(guò)應(yīng)用程序框架開(kāi)發(fā)者可以使用其功能包括:媒體庫(kù):MPEG4 H.264 MP3 JPG PNG .....WebKit/LibWebCore:Web瀏覽引擎SQLite關(guān)系數(shù)據(jù)庫(kù)引擎2D,3D圖形庫(kù)、引擎豐富的類(lèi)庫(kù)支持:2D和3D圖像庫(kù)OpenGL ES、數(shù)據(jù)庫(kù)SQLite、對(duì)象數(shù)據(jù)庫(kù)db4o類(lèi)庫(kù)、媒體庫(kù)、基于Linux底層系統(tǒng)C庫(kù)等等,讓?xiě)?yīng)用開(kāi)發(fā)更簡(jiǎn)單多樣。Google使用Apache的Harmony類(lèi)庫(kù),Harmony某些方面速度快于Sun的VM。Runtime在Dalvik Java VM上,Dalvik采用簡(jiǎn)練、高效的byte code格式運(yùn)行,它能夠在低資耗和沒(méi)有應(yīng)用相互干擾的情況下并行執(zhí)行多個(gè)應(yīng)用。
運(yùn)行時(shí)環(huán)境核心庫(kù)提供的Java功能Dalvik虛擬機(jī)依賴(lài)于Linux內(nèi)核,例如線(xiàn)程或底層內(nèi)存管理設(shè)備可以運(yùn)行多個(gè)Dalvik虛擬機(jī),每一個(gè)Android應(yīng)用程序在它自己的Dalvik VM實(shí)例中運(yùn)行VM執(zhí)行優(yōu)化的Dalvik可執(zhí)行文件(.dex)Dx-工具把編譯過(guò)的Java文件轉(zhuǎn)換為dex文件
8.3應(yīng)用和框架核心應(yīng)用,例如聯(lián)系人,電子郵件,電話(huà),瀏覽器,日歷,地圖,...
充分訪(fǎng)問(wèn)所有核心應(yīng)用框架API簡(jiǎn)化組件的重用用Java編寫(xiě)應(yīng)用程序