android開(kāi)發(fā) - 應(yīng)用制作
android開(kāi)發(fā)是指android平臺(tái)上應(yīng)用的制作,Android早期由“Android之父”之稱的Andy?Rubin創(chuàng)辦,Google于2005年并購(gòu)了成立僅22個(gè)月的高科技企業(yè)Android,展開(kāi)了短信、手機(jī)檢索、定位等業(yè)務(wù),基于Linux的通用平臺(tái)進(jìn)入了開(kāi)發(fā)。
系統(tǒng)架構(gòu)
安卓平臺(tái)
Android 有豐富的功能,因此很容易與桌面操作系統(tǒng)混淆。Android 是一個(gè)分層的環(huán)境,構(gòu)建在 Linux 內(nèi)核的基礎(chǔ)上,它包括豐富的功能。UI子系統(tǒng)包括:
Android 包括一個(gè)構(gòu)建在 WebKit 基礎(chǔ)上的可嵌入瀏覽器,iPhone 的 Mobile Safari 瀏覽器同樣也是以 WebKit 為Android 提供多種連接選項(xiàng),包括 WiFi、藍(lán)牙和通過(guò)蜂窩(cellular)連接的無(wú)線數(shù)據(jù)傳輸(例如 GPRS、EDGE 和 3G)。Android 應(yīng)用程序中一項(xiàng)流行的技術(shù)是鏈接到 Google 地圖,以便在應(yīng)用程序中顯示地址。Android 軟件棧還提供對(duì)基于位置的服務(wù)(例如 GPS)和加速計(jì)的支持,不過(guò)并不是所有的 Android 設(shè)備都配備了必需的硬件。另外還有攝像支持。
過(guò)去,移動(dòng)應(yīng)用程序努力向桌面應(yīng)用程序看齊的兩個(gè)領(lǐng)域分別是圖形/媒體和數(shù)據(jù)存儲(chǔ)方法。Android 通過(guò)提供對(duì) 2D 和 3D 圖形的內(nèi)置支持,包括 OpenGL 庫(kù),解決了圖形方面的挑戰(zhàn)。由于 Android 平臺(tái)包括流行的開(kāi)源 SQLite 數(shù)據(jù)庫(kù),因此緩解了數(shù)據(jù)存儲(chǔ)的負(fù)擔(dān)。圖 1 顯示一個(gè)簡(jiǎn)化的 Android 軟件層次結(jié)構(gòu)。
應(yīng)用程序
Android以Java為編程語(yǔ)言,使接口到功能,都有層出不窮的變化,其中Activity等同于J2ME的MIDlet,一個(gè) Activity 類(class)負(fù)責(zé)創(chuàng)建視窗(window),一個(gè)活動(dòng)中的Activity就是在 foreground(前景)模式,背景運(yùn)行的程序叫做Service。兩者之間通過(guò)由ServiceConnection和AIDL連結(jié),達(dá)到復(fù)數(shù)程序同時(shí)運(yùn)行的效果。如果運(yùn)行中的 Activity 全部畫(huà)面被其他 Activity 取代時(shí),該 Activity 便被停止(stopped),甚至被系統(tǒng)清除(kill)。
View等同于J2ME的Displayable,程序人員可以通過(guò) View 類與“XML layout”檔將UI放置在視窗上,Android 1.5的版本可以利用 View 打造出所謂的 Widgets,其實(shí)Widget只是View的一種,所以可以使用xml來(lái)設(shè)計(jì)layout,HTC的Android Hero手機(jī)即含有大量的widget。至于ViewGroup 是各種layout 的基礎(chǔ)抽象類(abstract class),ViewGroup之內(nèi)還可以有ViewGroup。View的構(gòu)造函數(shù)不需要再Activity中調(diào)用,但是Displayable的是必須的,在Activity 中,要通過(guò)findViewById - 來(lái)從XML 中取得View,Android的View類的顯示很大程度上是從XML中讀取的。View 與事件(event)息息相關(guān),兩者之間通過(guò)Listener 結(jié)合在一起,每一個(gè)View都可以注冊(cè)一個(gè)event listener,例如:當(dāng)View要處理用戶觸碰(touch)的事件時(shí),就要向Android框架注冊(cè)View.OnClickListener。另外還有Image等同于J2ME的BitMap。
Android 應(yīng)用程序由一個(gè)或多個(gè)組件組成:
1、活動(dòng)Activity
具有可視 UI 的應(yīng)用程序是用活動(dòng)實(shí)現(xiàn)的。當(dāng)用戶從主屏幕或應(yīng)用程序啟動(dòng)器選擇一個(gè)應(yīng)用程序時(shí),就會(huì)開(kāi)始一個(gè)動(dòng)作。
2、服務(wù)
服務(wù)應(yīng)該用于任何需要持續(xù)較長(zhǎng)時(shí)間的應(yīng)用程序,例如網(wǎng)絡(luò)監(jiān)視器或更新檢查應(yīng)用程序。
3、內(nèi)容提供程序
可以將內(nèi)容提供程序看作數(shù)據(jù)庫(kù)服務(wù)器。內(nèi)容提供程序的任務(wù)是管理對(duì)持久數(shù)據(jù)的訪問(wèn),例如 SQLite 數(shù)據(jù)庫(kù)。如果應(yīng)用程序非常簡(jiǎn)單,那么可能不需要?jiǎng)?chuàng)建內(nèi)容提供程序。如果要構(gòu)建一個(gè)較大的應(yīng)用程序,或者構(gòu)建需要為多個(gè)活動(dòng)或應(yīng)用程序提供數(shù)據(jù)的應(yīng)用程序,那么可以使用內(nèi)容提供程序?qū)崿F(xiàn)數(shù)據(jù)訪問(wèn)。
4、廣播接收器
Android 應(yīng)用程序可用于處理一個(gè)數(shù)據(jù)元素,或者對(duì)一個(gè)事件(例如接收文本消息)做出響應(yīng)。Android 應(yīng)用程序是連同一個(gè)AndroidManifest.xml 文件一起部署到設(shè)備的。AndroidManifest.xml 包含必要的配置信息,以便將它適當(dāng)?shù)匕惭b到設(shè)備。它包括必需的類名和應(yīng)用程序能夠處理的事件類型,以及運(yùn)行應(yīng)用程序所需的許可。例如,如果應(yīng)用程序需要訪問(wèn)網(wǎng)絡(luò) — 例如為了下載一個(gè)文件 — 那么 manifest 文件中必須顯式地列出該許可。很多應(yīng)用程序可能啟用了這個(gè)特定的許可。這種聲明式安全性有助于減少惡意應(yīng)用程序損害設(shè)備的可能性。
中介軟件
操作系統(tǒng)與應(yīng)用程序的溝通橋梁,并用分為兩層:函數(shù)層(Library)和虛擬機(jī)(Virtual Machine)。 Bionic是 Android 改良libc的版本。Android 同時(shí)包含了Webkit,所謂的Webkit 就是Apple Safari 瀏覽器背后的引擎。Surface flinger 是就2D或3D的內(nèi)容顯示到屏幕上。Android使用工具鏈 - Toolchain為Google自制的Bionic Libc。
Android采用OpenCORE作為基礎(chǔ)多媒體框架。OpenCORE可分7大塊:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework - PVMF、Operating System Compatibility Library - OSCL、Common、OpenMAX。
Android 使用skia 為核心圖形引擎,搭配OpenGL/ES。skia與Linux Cairo功能相當(dāng),但相較于Linux Cairo, skia 功能還只是陽(yáng)春型的。2005年Skia公司被Google收購(gòu),2007年初,Skia GL源碼被公開(kāi),目前Skia 也是Google Chrome 的圖形引擎。
Android的多媒體數(shù)據(jù)庫(kù)采用SQLite數(shù)據(jù)庫(kù)系統(tǒng)。數(shù)據(jù)庫(kù)又分為共用數(shù)據(jù)庫(kù)及私用數(shù)據(jù)庫(kù)。用戶可通過(guò)ContentResolver類(Column)取得共用數(shù)據(jù)庫(kù)。
Android的中間層多以Java 實(shí)現(xiàn),并且采用特殊的Dalvik 虛擬機(jī)(Dalvik Virtual Machine)。Dalvik虛擬機(jī)是一種“暫存器型態(tài)”(Register Based)的Java虛擬機(jī),變量皆存放于暫存器中,虛擬機(jī)的指令相對(duì)減少。
Dalvik虛擬機(jī)可以有多個(gè)實(shí)例(instance), 每個(gè)Android應(yīng)用程序都用一個(gè)自屬的Dalvik虛擬機(jī)來(lái)運(yùn)行,讓系統(tǒng)在運(yùn)行程序時(shí)可達(dá)到優(yōu)化。Dalvik 虛擬機(jī)并非運(yùn)行Java字節(jié)碼(Bytecode),而是運(yùn)行一種稱為.dex格式的文件。
硬件抽像
Android 的 HAL(硬件抽像層)是能以封閉源碼形式提供硬件驅(qū)動(dòng)模塊。HAL 的目的是為了把 Android framework 與 Linux kernel 隔開(kāi),讓 Android 不至過(guò)度依賴 Linux kernel,以達(dá)成 kernel independent 的概念,也讓 Android framework 的開(kāi)發(fā)能在不考量驅(qū)動(dòng)程序?qū)崿F(xiàn)的前提下進(jìn)行發(fā)展。
HAL stub 是一種代理人(proxy)的概念,stub 是以 *.so 檔的形式存在。Stub 向 HAL“提供”操作函數(shù)(operations),并由 Android runtime 向 HAL 取得 stub 的 operations,再 callback 這些操作函數(shù)。HAL 里包含了許多的 stub(代理人)。Runtime 只要說(shuō)明“類型”,即 module ID,就可以取得操作函數(shù)。
編程語(yǔ)言
Android 是運(yùn)行于 Linux kernel之上,但并不是GNU/Linux。因?yàn)樵谝话鉍NU/Linux 里支持的功能,Android 大都沒(méi)有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。Android 為了達(dá)到商業(yè)應(yīng)用,必須移除被GNU GPL授權(quán)證所約束的部份,例如Android將驅(qū)動(dòng)程序移到 userspace,使得Linux driver 與 Linux kernel徹底分開(kāi)。bionic/libc/kernel/ 并非標(biāo)準(zhǔn)的kernel header files。Android 的 kernel header 是利用工具由 Linux kernel header 所產(chǎn)生的,這樣做是為了保留常數(shù)、數(shù)據(jù)結(jié)構(gòu)與宏。
目前Android 的 Linux kernel控制包括安全(Security),存儲(chǔ)器管理(Memory Managemeat),程序管理(Process Management),網(wǎng)絡(luò)堆棧(Network Stack),驅(qū)動(dòng)程序模型(Driver Model)等。下載Android源碼之前,先要安裝其構(gòu)建工具 Repo來(lái)初始化源碼。Repo 是 Android 用來(lái)輔助Git工作的一個(gè)工具。
相關(guān)專業(yè)
應(yīng)用開(kāi)發(fā)
隨著近年來(lái)手機(jī)的日漸普及,手機(jī)游戲已經(jīng)成為整個(gè)游戲領(lǐng)域發(fā)展速度最快的部分。截至2012年年底,中國(guó)手機(jī)游戲用戶累計(jì)規(guī)模已達(dá)2.86億,手機(jī)游戲用戶規(guī)模較上一年度增長(zhǎng)62.5%。武漢航海職業(yè)技術(shù)學(xué)院教改專業(yè)移動(dòng)終端應(yīng)用開(kāi)發(fā)專業(yè)培養(yǎng)移動(dòng)互聯(lián)高端開(kāi)發(fā)型人才。移動(dòng)應(yīng)用開(kāi)發(fā)方向?qū)⒆钚碌囊苿?dòng)開(kāi)發(fā)技術(shù)IOS和Android進(jìn)引入教學(xué)體系,通過(guò)以項(xiàng)目為中心,以學(xué)生為中心的教學(xué)理念,注重培養(yǎng)學(xué)生的實(shí)際完成項(xiàng)目能力和團(tuán)隊(duì)合作意識(shí),擁有在IOS和Android移動(dòng) 終端上設(shè)計(jì)、開(kāi)發(fā)和測(cè)試移動(dòng)應(yīng)用軟件和移動(dòng)終端游戲的能力。
未來(lái),隨著移動(dòng)互聯(lián)網(wǎng)運(yùn)營(yíng)環(huán)境的進(jìn)一步改善,游戲產(chǎn)品手機(jī)游戲開(kāi)發(fā)商研發(fā)創(chuàng)新能力的提升,產(chǎn)業(yè)鏈不斷優(yōu)化,中國(guó)手機(jī)游戲市場(chǎng)將穩(wěn)步發(fā)展,市場(chǎng)規(guī)模將穩(wěn)步提高,到2014年第四季度,手機(jī)游戲用戶規(guī)模將突破4億。
伴隨著互聯(lián)網(wǎng)的迅速崛起和通訊技術(shù)的不斷進(jìn)步,手機(jī)游戲開(kāi)始占據(jù)游戲市場(chǎng)的主流地位,越來(lái)越多的互聯(lián)網(wǎng)公司投入巨資研發(fā)手游,未來(lái)的手游市場(chǎng)前景也不斷被看好。
武漢航海職業(yè)技術(shù)學(xué)院移動(dòng)終端應(yīng)用開(kāi)發(fā)專業(yè)培養(yǎng)移動(dòng)互聯(lián)高端開(kāi)發(fā)型人才 。移動(dòng)應(yīng)用開(kāi)發(fā)方向?qū)⒆钚碌囊苿?dòng)開(kāi)發(fā)技術(shù)IOS和Android進(jìn)引入教學(xué)體系,通過(guò)以項(xiàng)目為中心,以學(xué)生為中心的教學(xué)理念,注重培養(yǎng)學(xué)生的實(shí)際完成項(xiàng)目能力和團(tuán)隊(duì)合作意識(shí),擁有在IOS和Android移動(dòng)終端上設(shè)計(jì)、開(kāi)發(fā)和測(cè)試移動(dòng)應(yīng)用軟件和移動(dòng)終端游戲的能力。
android與IOS差別
安卓與IOS都是現(xiàn)在兩大操作系統(tǒng),IOS是由蘋(píng)果公司開(kāi)發(fā)的,而Android是由Google公司開(kāi)發(fā)的,占據(jù)手機(jī)市場(chǎng)的大部分。那么Android和iOS哪個(gè)好?iOS與Android,兩個(gè)不同的開(kāi)發(fā)體系結(jié)構(gòu),一個(gè)封閉一個(gè)開(kāi)放,是所有開(kāi)發(fā)者繞不去的大山。而我們?cè)陂_(kāi)發(fā)過(guò)程中,也感受到了這其中的細(xì)枝末節(jié)。今天就從開(kāi)發(fā)者的角度來(lái)談?wù)劙沧亢蚷OS有哪些區(qū)別,以及它們各自的優(yōu)缺點(diǎn)。
一、開(kāi)發(fā)環(huán)境對(duì)比
首先在開(kāi)發(fā)環(huán)境的配置上,二者就表現(xiàn)出了極大的差異。
1、配置過(guò)程
iOS的開(kāi)發(fā)環(huán)境非常完美,下載完官方提供的X-CODE之后直接安裝即可就可以開(kāi)發(fā)了,而安卓則需要先下載JaVa環(huán)境,然后去windows里面做好配置環(huán)境,然后下載eclipse這個(gè)環(huán)境再在里面做各種復(fù)雜的配置操作,才可以配置好開(kāi)發(fā)環(huán)境。從配置過(guò)程來(lái)看,iOS簡(jiǎn)單,安卓極其復(fù)雜。
2、跨平臺(tái)適應(yīng)性
蘋(píng)果的開(kāi)發(fā)環(huán)境必須用mac電腦的macos系統(tǒng)才可以開(kāi)發(fā)iOS,而windows是無(wú)法做iOS開(kāi)發(fā)的,除非做虛擬機(jī),但是真正做iOS開(kāi)發(fā)的時(shí)候是不可能用虛擬機(jī)搭建mac os來(lái)做開(kāi)發(fā),這樣速度會(huì)及其緩慢。無(wú)法開(kāi)發(fā)任何大型系統(tǒng)。而安卓雖然安裝起來(lái)復(fù)雜,但是具有很好的適應(yīng)性,不僅能夠在windows上開(kāi)發(fā),還能在mac系統(tǒng)上開(kāi)發(fā),完全沒(méi)有任何問(wèn)題。
3、真機(jī)調(diào)試
安卓開(kāi)發(fā)者只需要打開(kāi)調(diào)試開(kāi)關(guān)然后就可以調(diào)試手機(jī)了,但是iOS需要證書(shū)、描述文件、APPLEID、開(kāi)發(fā)者賬號(hào),搞半天才可以進(jìn)行調(diào)試,過(guò)程實(shí)在吐血。在開(kāi)發(fā)環(huán)境的對(duì)比上,蘋(píng)果表現(xiàn)出了強(qiáng)硬的態(tài)度:“只準(zhǔn)用我的”,而安卓則表現(xiàn)出了很強(qiáng)的適應(yīng)性,順勢(shì)而為。
二、推送機(jī)制問(wèn)題
在推送問(wèn)題上,由于iOS和安卓推送機(jī)制各自為政,所以開(kāi)發(fā)者更希望有一個(gè)大一統(tǒng)的推送平臺(tái)來(lái)管理這二者。同時(shí)加上iOS和安卓在國(guó)內(nèi)推送上的水土不服,也給了第三方推送機(jī)會(huì),而在第三方推送正好抓住了這個(gè)機(jī)會(huì)。
三、適配尺寸,版本問(wèn)題
雖說(shuō)蘋(píng)果的真機(jī)調(diào)試比較復(fù)雜,但是蘋(píng)果一共需要適配的機(jī)型也就兩種尺寸,3.5和4.0英寸并且iOS的版本升級(jí)率遠(yuǎn)遠(yuǎn)大于安卓,所以在適配上,iOS的優(yōu)勢(shì)就明顯了,并且?guī)炜嗽诎l(fā)布會(huì)上也拿系統(tǒng)升級(jí)率向安卓開(kāi)火,安卓在這塊確實(shí)沒(méi)做好。
適配的問(wèn)題上iOS讓開(kāi)發(fā)者感受到了iOS的魅力。同時(shí),在版本和尺寸的配上,安卓機(jī)亂糟糟的生態(tài)讓開(kāi)發(fā)者們不得不只去選擇主流的機(jī)型去滿足而無(wú)法顧及更多邊緣需求。
四、應(yīng)用商店提交
由于安卓是開(kāi)放生態(tài),所以自然應(yīng)用商店也是一個(gè)開(kāi)放而混亂的生態(tài)環(huán)境。在應(yīng)用的提交上,iOS的提交雖然極其麻煩,但是只要提交過(guò)一次就可以大獲全勝,但是安卓則不同,由于其開(kāi)放而混亂的超級(jí)生態(tài),導(dǎo)致我們提交上的種種麻煩。
知識(shí)體系
1、Unix/Linux平臺(tái)技術(shù):基本命令,Linux下的開(kāi)發(fā)環(huán)境
2、企業(yè)級(jí)數(shù)據(jù)庫(kù)技術(shù):SQL語(yǔ)言、SQL語(yǔ)句調(diào)優(yōu)、Oracle數(shù)據(jù)庫(kù)技術(shù)
3、Java 語(yǔ)言核心技術(shù):Java語(yǔ)言基礎(chǔ)、Java面向?qū)ο缶幊?、JDK核心API、Java集合框架、Java網(wǎng)絡(luò)編 程、JavaI/O編程、Java多線程編程、Java異常機(jī)制、Java安全、JDBC、XML
4、軟件工程和設(shè)計(jì)模式:軟件工程概述、配置管理及SVN、UML、基本設(shè)計(jì)模式
5、Android應(yīng)用開(kāi)發(fā)基礎(chǔ):Android開(kāi)發(fā)平臺(tái)、Eclipse+ADT開(kāi)發(fā)環(huán)境、AVD及傳感模擬器調(diào)試、Android核心組件、Android常用組件、Android高級(jí)組件、文件及網(wǎng)絡(luò)訪問(wèn)、SQLite數(shù)據(jù)庫(kù)編程、后臺(tái)服務(wù)編程
6、互聯(lián)網(wǎng)核心技術(shù): HTML、CSS、JavaScript、JQuery、Ajax應(yīng)用
7、Android高級(jí)應(yīng)用開(kāi)發(fā):音頻//視頻//攝像頭、互聯(lián)網(wǎng)應(yīng)用、GPS和位置服務(wù)、Google Map、2D//3D繪制、傳感器開(kāi)發(fā)、游戲開(kāi)發(fā)、電話及SMS服務(wù)、網(wǎng)絡(luò)//Bluetooth//Wi-Fi等。
8、Android系統(tǒng)級(jí)開(kāi)發(fā):移植、驅(qū)動(dòng)、NDK(C方向)。
9、JavaEE核心技術(shù):Servlet核心技術(shù)、JSP核心技術(shù)、Struts、Spring、Hibernate框架。
學(xué)習(xí)內(nèi)容
Android基礎(chǔ)階段:平臺(tái)架構(gòu)特性 - JAVA/C Market/應(yīng)用程序組件 環(huán)境搭建與部署/打包與發(fā)布 AVD/DDMS/AAPT 調(diào)試與測(cè)試 相關(guān)資源訪問(wèn)/資源制作 Activity/Service/Broadcast Receiver/Content Provider/原理 - 生命周期及深層實(shí)現(xiàn)
Android進(jìn)階初級(jí):組件Widget/ 菜單Menu/ 布局Layout 詳解 Xml解析 - Pull/Dom/Sax/JNI 解析SQL數(shù)據(jù)庫(kù)原理, SQLite /SharedPreferences/File詳解 多媒體Audio/Video/Camera 詳解
Android進(jìn)階高級(jí):藍(lán)牙/WIFI SMS/MMS 應(yīng)用實(shí)現(xiàn) 深層次解析GPS原理,實(shí)現(xiàn)LocationManager/LocationProvider 進(jìn)行定位/跟蹤/查找/趨近警告以及Geocoder正逆向編解碼等技術(shù)細(xì)節(jié) 2D圖形庫(kù) - Graphics/View詳解 SDCARD/傳感器/手勢(shì) 應(yīng)用實(shí)現(xiàn)
