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



















