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