490 likes | 603 Views
NGN 期末報告 Google Android 介紹及程式撰寫. 學生:徐志浩,張家豪 政治大學 / 資訊科學系 2009/05/27. Outline. Android 來由與目的 架構說明 安裝及實作說明 應用程式展示 結論. Outline. Android 來由與目的 架構說明 安裝及實作說明 應用程式展示 結論. Android 是 …. Google 併購 Android 後所推出的手機 Linux 平台 目的是推廣一種手機應用程式開發架構,允許 OEM 手段大量製造手機服務. 其它特性.
E N D
NGN期末報告Google Android介紹及程式撰寫 學生:徐志浩,張家豪 政治大學/資訊科學系 2009/05/27
Outline • Android 來由與目的 • 架構說明 • 安裝及實作說明 • 應用程式展示 • 結論
Outline • Android 來由與目的 • 架構說明 • 安裝及實作說明 • 應用程式展示 • 結論
Android 是… • Google 併購 Android 後所推出的手機Linux平台 • 目的是推廣一種手機應用程式開發架構,允許OEM手段大量製造手機服務
其它特性 • Application framework:提供可重覆使用及改寫的元件 • Dalvik virtual machine:提供給行動裝置一個最佳化過的Java虛擬機器 • Integrated browser:基於一個WebKit引擎開放源碼的瀏灠器 • Optimized graphics:最佳化過的繪圖函式庫,包含了SGL的2D繪圖函式庫及基於OpenGL ES 1.0規範的3D繪圖函式庫 • SQLite:一個結構化的資料庫系統 • Media support:多媒體影音格式支援包含了MPEG4,H.264,MP3,AAC,AMR,JPG,PNG,GIF • GSM:GSM手機的通話能力其實必須在硬體電路層次實現,軟體層次無法實現,只是Android平台要求必須要有GSM通話能力,此項功效特點與其說是特點,不如說是訂立出最低的硬體要求規範。 • Bluetooth,EDGE,3G,and WiFi,Camera,GPS,compass,and accelerometer:同GSM它必需由實際硬體決定是否支援 • Rich development environment:包含了裝置模擬器,除錯工具,記憶體及效能評估分析工具及讓Eclipse IDE支援Android專案的外掛程式。
Outline • Android 來由與目的 • 架構說明 • 安裝及實作說明 • 應用程式展示 • 結論
Android 架構 • Android本身是一套軟體堆疊(Software Stack) • 應用程式及應用程式框架 (藍) • 關鍵函式庫(綠) • 作業系統(紅)
應用程式層(Applications) • Android出貨時整套的基礎應用程式可供使用 • 包含有:電子郵件程式,短訊程式,日曆,地圖,瀏覽器,通訊程式…等等 • 所有的應用程式皆必需以Java的程式語言撰寫
應用程式框架層(Application Framework) • 統一的應用程式標準介面,這個應用程式框架的架構是可以很容易的去重覆使用各個原件。這樣子的統一機制,有助於開發者去改寫自己新 的軟體原件。 • 主要框架說明: • Views System:用來建構一個應用程式的基本原件,包含了有lists,grids,text boxes,buttons,甚至是一個嵌入式的瀏覽器。 • Content Providers(內容提供者):它可以用來讓程式跟程式之間互相存取/分享資料。例如某一個應用程式可以去存取通訊錄應用程式內的聯絡人資料。或者呼用Resource Manager可存取的非程式碼資源,例如:當地性設定(該地貨幣、語言、時間格式)、圖像…等。 • Resource Manager(資源管理員):提供各種資源讓程式去使用,比如:區域性的字串,圖片,排版檔(layout files)。 • Notification Manager(訊息管理員):提供程式在狀態列(status bar)的地方顯示應用程式自有的警示(alert)訊息。 狀態列Android設定在手機的頂部,像短訊(short message),voice mail皆會出現在此。 • Activity Manager(活動管理員):管理所有的應用程式生命週期及一般性的回溯導航(navigation backstack )。 • Window Manager(視窗管理員):管理所有的視窗程式 • Location Manager:應該是用來做地圖服務的功能。 • Telephony Manager:用來管理所有的移動設備(電話)的功能,就是提供使用者撥打與接收電話的功能啦。 • Package Manager:Android系統內所有安裝的程式管理。 • XMMP Service:ineXtensible Messaging and Presence Protocol透過此服務得知手機的位置。
函式庫層(Libraries) • System C Library • Media Libraries :以OpenCORE為基礎所發展成,該函式庫可以播放、錄製多種普遍常見的影音格式 • Surface Manager:在同時執行多個應用程式時,外觀管理員會負責管理「顯示」與「存取操作」間的對應、互動 • LibWebCore:一套網頁瀏覽器的軟體引擎 • SGL:Android在2D繪圖方面的繪圖引擎 • 3D libraries:依據OpenGL ES 1.0 API標準來實做其3D繪圖函式庫 • FreeType:提供點陣字、向量字的描繪顯示 • SQLite:輕量性的資料庫引擎
執行層(Android Runtime) • Core Libraries • 包含了絕大多數Java程式語言所需要呼用的功效函式, • 不是用一個Dalvik虛擬機器來同時執行多個Android應用程式,而是每個Android應用程式都用一個自屬的Dalvik虛擬機 器來執行。 • Dalvik Virtual Machine • Dalvik虛擬機器是一種暫存器型態的虛擬機器。在撰寫開發時就已經設想用最少的記憶體資源來執行,以及前述的「同時可執行多個VM個體」。 • Dalvik虛擬機器所執行的中介碼並非是Java虛擬機器所執行的Java Bytecode,同時也不直接執行Java的類別檔(Java Class File), • 而是轉為Dalvik VM執行時特有的dex(Dalvik EXcutable)格式,稱為.dex。 • Dalvik VM相較於Java VM最大的不同在於Java VM為Stack-based,而Dalvik是register-based。 • 技術層面考量Register-based VM的特性就是對於現有主流的硬體架構,很容易與現有系統整合且最佳化,而所需要的資源也相對較少。 甚至在硬體實作VM上會比較容易實現。 • 正常的Java比較慢因為Java的程式編釋成bytecode的也是關鍵因素之一,因Java VM採用了Stack Based的方式產生指令,所以所有的變數皆需push,pop到stack裏去,所以就會多出不少指令,而Delvik VM則改用register based的方式,變數皆存放於暫存器中,指令就會少一點,速度也就會再加快一點。
作業系統層(Linux Kernel) • 平台作業系統是Linux,其核心版本為2.6版, • Android所用的Linux核心,其包含的功效包括:安全 (Security)、記憶體管理(Memory Management)、行程管理(Process Management)、網路堆疊(Network Stack,大陸方面稱為:網絡堆棧)、驅動程式模型(Driver Model)等,另外也在前述的軟體堆疊與硬體間建立起一個抽象層(Abstraction Layer)。
Outline • Android 來由與目的 • 架構說明 • 安裝及實作說明 • 應用程式展示 • 結論
安裝與實作預備知識 • 開發目前以Eclipse為配套開發工具 • 下載plug-in同時亦配備相關的模擬器及開發工具 • OS: Linux kernel - version 2.6 • Emulator: on Mac, Windows, Linux • Hardware support: • GSM Telephony • Bluetooth, 3G, and WiFi • Camera, GPS and accelerometer
Android開發環境 • 所需開發環境 • Sun – Java Development Toolkit (不介紹) • Eclipse – 以及ADT plug-in • Android SDK
IDE-Eclipse • Java Integrated Development Environment • Download Site: • http://www.eclipse.org/downloads/
Eclipse plug-in for Android-ADT • Update Plug-in from Eclipse Site: • [Software]->[add site]->[location] 加入https://dl-ssl.google.com/android/eclipse/
Operation • Play Emulator • Programming and Setting • Remove Application
Play Emulator • "File -> New -> Project "
Play Emulator This is the name of the directory that you want to contain the project must be unique on an API a class can run and work thetitle for the application
Play Emulator • "Run -> Open Run Dialog"
Remove Application • 命令提示字元- • 啟動 adb shell • # adb shell • 切換目錄 • # cd data/app/ • # ls (查看檔案) • NotesList.apk • ApiDemos.apk • 移除檔案 • # rm NotesList.apk • 還原模擬器環境 • C:\Documents and Settings\使用者帳號目錄\Local Settings\Application Data\Android\userdata.img
Android SDK 下載處 http://developer.android.com/sdk/1.5_r2/index.html
Android SDK • Googel Android SDK包括以下幾個部份 • Android平台Linux作業系統 • Android模擬器 • Eclipse圖形開發環境 • Android Development Tools (ADT) • 函式庫 • API • Sample Code • 目前大致分為1.1版及1.5版
Android平台Linux作業系統 • Android Linux Kernel是以Linux 2.6 kernel修改而來. • Android SDK 1.1版為2.6.25版本 • CPU為ARM架構 • 目前釋出手機(T-Mobile G1)使用Qualcomm 528MHz處理器及256MB ROM與192MB RAM • Android Linux Kernel 原始碼修改可至 • http://android.git.kernel.org • Android 軟體副檔名為.apk, 可以使用adb進行安裝. • 可至Android Market購買軟體
Android模擬器 • 使用x86平台模擬ARM處理器 • 提供遠端telnet至模擬器, 發送訊息至手機。 • 提供adb除錯功能(Android Debug Bridge) • DDMS (Dalvik Debug Monitor Service)
模擬器執行方式 • 需先將%android%\tools路徑加至%path%之中 • Android1.1版 開啟Console, 鍵入emulator –skin HVGA-P • Android1.5版 先建立AVD (Android Virtural Device) 開啟console, 鍵入 android create avd --target 2 --name <%name%> Emulator –avd <%name%>
簡單指令介紹 • ADB (Android Debug Bridge) • adb shell (同Linux console) • adb install (adb install Hunter.apk) • adb push / pull (adb push 1.jpg /sdcard) • adb device • DDMS (Dalvik Debug Monitor Service) • 效能監管, Android檔案管理, 畫面擷取 • telnet • 執行基本操作指令(ls, rm, cd等等) • 模擬Android執行環境, (撥打電話, 簡訊傳送, GPS, 網路, 網路資料轉向)
語言環境簡介 • Android開發使用Java語言, 但Virtual Machine卻是自己Porting的版本, 而非使用Sun官方版本. 包含以下兩個核心 • Core Libraries • Dalvik Virtual Machine Sun Runtime (Virtual Machine) Java SRC Compile Java Bytecode Dalvik Runtime (Virtual Machine) Dalvik Bytecode (.dex) Java SRC Java Bytecode Compile
開始撰寫: Android Building Blocks • AndroidManifest.xml • 所有你在應用程式裡面會用到的最高階定義,得在這邊先行描述 。以下為一個activity的範例: • <?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.my_domain.app.helloactivity"> <application android:label="@string/app_name"> <activity android:name=".HelloActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application></manifest> • Activity • 每個Activity都會實作出一個類別,而且這個類別是繼承自Activity這個基礎類別。 • Broadcast Intent Receiver • 對外部的事件做些處理 ,如:電話響時,網路資料可以使用時,或半夜來臨時。Broadcast Intent Receiver它並不能拿來顯示UI畫面,它必需利用NotificationManager來通知使用者他們感興趣的事件發生了。 • Service • Service就是一段程式,它並沒有UI呈現畫面,但它可以長期的存在系統內執行。 例如持續撥歌的服務 • Content Provider • 可以將它們的資料儲存起來到一個檔案,存到SQLite資料庫,或其它的機制儲存起來。 達到資料共享。
Android Application • Android 軟體副檔名為.apk, 可以使用adb進行安裝. • 可至Android Market購買軟體
Android 開發簡介 • Application是由許多的繼承Activity的類別所組成. • Application的界面(UI)與資源定義(Res)是獨立於程式之外.
Android Project • 在Eclipse開啟一個新的Android Project後,包含以下檔案結構 • AndroidManifest.xml Android project設定 • src/ (java原始檔) • res/anim (動畫設定檔) • res/drawable/ (應用程式圖檔) • res/layout (視窗佈局檔) • res/values (字串定義檔, 顏色定義檔)
Android Application Lifecycle 1.Foreground process(前景模式) - 正在運行的程式 2. visible process(可見模式) - 畫面變透明時 3.Background process(背景模式) 4. empty process(空白模式) 5. service process(服務模式)
Android模擬器-觀看應用程式展示 • 使用x86平台模擬ARM處理器 • 提供遠端telnet至模擬器, 發送訊息至手機。 • 提供adb除錯功能(Android Debug Bridge) • DDMS (Dalvik Debug Monitor Service)
模擬器執行方式 • 需先將%android%\tools路徑加至%path%之中 • Android1.1版 開啟Console, 鍵入emulator –skin HVGA-P • Android1.5版 先建立AVD (Android Virtural Device) 開啟console, 鍵入 android create avd --target 2 --name <%name%> Emulator –avd <%name%>
關鍵指令介紹 • ADB (Android Debug Bridge) • adb shell (同Linux console) • adb install (adb install Hunter.apk) • adb push / pull (adb push 1.jpg /sdcard) • adb device • DDMS (Dalvik Debug Monitor Service) • 效能監管, Android檔案管理, 畫面擷取 • telnet • 執行基本操作指令(ls, rm, cd等等) • 模擬Android執行環境, (撥打電話, 簡訊傳送, GPS, 網路, 網路資料轉向)
Outline • Android 來由與目的 • 架構說明 • 安裝及實作說明 • 應用程式展示 • 結論
應用程式展示 • 程式撰寫示範 • BMI(體脂肪計算) • SOAP呼叫 (Android網路服務) • 進階程式說明展示 • LBS之地頭王服務
程式撰寫示範 • BMI(體脂肪計算) • SOAP呼叫 (Android網路服務) …SDK展示說明
LBS之地頭王服務 • 結合地圖日記概念與即時通訊軟體的機制解決適地性&即時性的Q&A需求
Outline • Android 來由與目的 • 架構說明 • 安裝及實作說明 • 應用程式展示 • 結論
結論 • Google (Open Handset Alliance)帶來的後續衝擊 • Nokia併購Symbian及Qt • WinME號稱考慮逐步開放原始碼? • LiMo Foundation 的競爭態度 • 終端產品最大競爭者iPhone開始提供開放部分api,並且提供開放服務交換平台 • 其它問題: • Google Android目前不支援adobe flash? • Android View package 的功能不足? • 版本眾多導致前後版本相容性不佳? • … • 結論:時勢所趨,靜待渠成