1 / 49

NGN 期末報告 Google Android 介紹及程式撰寫

NGN 期末報告 Google Android 介紹及程式撰寫. 學生:徐志浩,張家豪 政治大學 / 資訊科學系 2009/05/27. Outline. Android 來由與目的 架構說明 安裝及實作說明 應用程式展示 結論. Outline. Android 來由與目的 架構說明 安裝及實作說明 應用程式展示 結論. Android 是 …. Google 併購 Android 後所推出的手機 Linux 平台 目的是推廣一種手機應用程式開發架構,允許 OEM 手段大量製造手機服務. 其它特性.

juana
Download Presentation

NGN 期末報告 Google Android 介紹及程式撰寫

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. NGN期末報告Google Android介紹及程式撰寫 學生:徐志浩,張家豪 政治大學/資訊科學系 2009/05/27

  2. Outline • Android 來由與目的 • 架構說明 • 安裝及實作說明 • 應用程式展示 • 結論

  3. Outline • Android 來由與目的 • 架構說明 • 安裝及實作說明 • 應用程式展示 • 結論

  4. Android 是… • Google 併購 Android 後所推出的手機Linux平台 • 目的是推廣一種手機應用程式開發架構,允許OEM手段大量製造手機服務

  5. 其它特性 • 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專案的外掛程式。

  6. Outline • Android 來由與目的 • 架構說明 • 安裝及實作說明 • 應用程式展示 • 結論

  7. Android 架構 • Android本身是一套軟體堆疊(Software Stack) • 應用程式及應用程式框架 (藍) • 關鍵函式庫(綠) • 作業系統(紅)

  8. 應用程式層(Applications) • Android出貨時整套的基礎應用程式可供使用 • 包含有:電子郵件程式,短訊程式,日曆,地圖,瀏覽器,通訊程式…等等 • 所有的應用程式皆必需以Java的程式語言撰寫

  9. 應用程式框架層(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透過此服務得知手機的位置。

  10. 函式庫層(Libraries) • System C Library • Media Libraries :以OpenCORE為基礎所發展成,該函式庫可以播放、錄製多種普遍常見的影音格式 • Surface Manager:在同時執行多個應用程式時,外觀管理員會負責管理「顯示」與「存取操作」間的對應、互動 • LibWebCore:一套網頁瀏覽器的軟體引擎 • SGL:Android在2D繪圖方面的繪圖引擎 • 3D libraries:依據OpenGL ES 1.0 API標準來實做其3D繪圖函式庫 • FreeType:提供點陣字、向量字的描繪顯示 • SQLite:輕量性的資料庫引擎

  11. 執行層(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的方式,變數皆存放於暫存器中,指令就會少一點,速度也就會再加快一點。

  12. 作業系統層(Linux Kernel) • 平台作業系統是Linux,其核心版本為2.6版, • Android所用的Linux核心,其包含的功效包括:安全 (Security)、記憶體管理(Memory Management)、行程管理(Process Management)、網路堆疊(Network Stack,大陸方面稱為:網絡堆棧)、驅動程式模型(Driver Model)等,另外也在前述的軟體堆疊與硬體間建立起一個抽象層(Abstraction Layer)。

  13. Outline • Android 來由與目的 • 架構說明 • 安裝及實作說明 • 應用程式展示 • 結論

  14. 安裝與實作預備知識 • 開發目前以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

  15. Android開發環境 • 所需開發環境 • Sun – Java Development Toolkit (不介紹) • Eclipse – 以及ADT plug-in • Android SDK

  16. IDE-Eclipse • Java Integrated Development Environment • Download Site: • http://www.eclipse.org/downloads/

  17. Eclipse plug-in for Android-ADT • Update Plug-in from Eclipse Site: • [Software]->[add site]->[location] 加入https://dl-ssl.google.com/android/eclipse/

  18. Operation • Play Emulator • Programming and Setting • Remove Application

  19. Play Emulator • "File -> New -> Project "

  20. 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

  21. http://code.google.com/android/intro/tutorial.html

  22. Play Emulator • "Run -> Open Run Dialog"

  23. 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

  24. Android SDK 下載處 http://developer.android.com/sdk/1.5_r2/index.html

  25. Android SDK • Googel Android SDK包括以下幾個部份 • Android平台Linux作業系統 • Android模擬器 • Eclipse圖形開發環境 • Android Development Tools (ADT) • 函式庫 • API • Sample Code • 目前大致分為1.1版及1.5版

  26. 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購買軟體

  27. Android模擬器 • 使用x86平台模擬ARM處理器 • 提供遠端telnet至模擬器, 發送訊息至手機。 • 提供adb除錯功能(Android Debug Bridge) • DDMS (Dalvik Debug Monitor Service)

  28. 模擬器執行方式 • 需先將%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%>

  29. 簡單指令介紹 • 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, 網路, 網路資料轉向)

  30. 語言環境簡介 • 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

  31. 開始撰寫: 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資料庫,或其它的機制儲存起來。 達到資料共享。

  32. Android Application • Android 軟體副檔名為.apk, 可以使用adb進行安裝. • 可至Android Market購買軟體

  33. Android 開發簡介 • Application是由許多的繼承Activity的類別所組成. • Application的界面(UI)與資源定義(Res)是獨立於程式之外.

  34. Android Project • 在Eclipse開啟一個新的Android Project後,包含以下檔案結構 • AndroidManifest.xml Android project設定 • src/ (java原始檔) • res/anim (動畫設定檔) • res/drawable/ (應用程式圖檔) • res/layout (視窗佈局檔) • res/values (字串定義檔, 顏色定義檔)

  35. Android Application Lifecycle 1.Foreground process(前景模式) - 正在運行的程式 2. visible process(可見模式) - 畫面變透明時 3.Background process(背景模式) 4. empty process(空白模式) 5. service process(服務模式)

  36. Android模擬器-觀看應用程式展示 • 使用x86平台模擬ARM處理器 • 提供遠端telnet至模擬器, 發送訊息至手機。 • 提供adb除錯功能(Android Debug Bridge) • DDMS (Dalvik Debug Monitor Service)

  37. 模擬器執行方式 • 需先將%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%>

  38. 關鍵指令介紹 • 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, 網路, 網路資料轉向)

  39. Outline • Android 來由與目的 • 架構說明 • 安裝及實作說明 • 應用程式展示 • 結論

  40. 應用程式展示 • 程式撰寫示範 • BMI(體脂肪計算) • SOAP呼叫 (Android網路服務) • 進階程式說明展示 • LBS之地頭王服務

  41. 程式撰寫示範 • BMI(體脂肪計算) • SOAP呼叫 (Android網路服務) …SDK展示說明

  42. LBS之地頭王服務 • 結合地圖日記概念與即時通訊軟體的機制解決適地性&即時性的Q&A需求

  43. 情境 step 1

  44. 情境 step 2

  45. 情境 step 3

  46. 情境 step 4

  47. Outline • Android 來由與目的 • 架構說明 • 安裝及實作說明 • 應用程式展示 • 結論

  48. 結論 • Google (Open Handset Alliance)帶來的後續衝擊 • Nokia併購Symbian及Qt • WinME號稱考慮逐步開放原始碼? • LiMo Foundation 的競爭態度 • 終端產品最大競爭者iPhone開始提供開放部分api,並且提供開放服務交換平台 • 其它問題: • Google Android目前不支援adobe flash? • Android View package 的功能不足? • 版本眾多導致前後版本相容性不佳? • … • 結論:時勢所趨,靜待渠成

  49. 謝謝! 請指教!

More Related