Android平台应用软体开发.ppt

上传人:爱问知识人 文档编号:5015075 上传时间:2020-01-28 格式:PPT 页数:40 大小:5.63MB
返回 下载 相关 举报
Android平台应用软体开发.ppt_第1页
第1页 / 共40页
Android平台应用软体开发.ppt_第2页
第2页 / 共40页
Android平台应用软体开发.ppt_第3页
第3页 / 共40页
Android平台应用软体开发.ppt_第4页
第4页 / 共40页
Android平台应用软体开发.ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《Android平台应用软体开发.ppt》由会员分享,可在线阅读,更多相关《Android平台应用软体开发.ppt(40页珍藏版)》请在三一文库上搜索。

1、1,Android平台應用軟體開發,2010年11月,2,PART-1: Android平台軟體架構,3,Linux核心:Android依賴Linux 2.6來提供核心的服務,例如記憶體管理、進程(Process)管理、執行緒(Thread)管理等。 Android Runtime:Java語言層級的Virtual Machine。 Libraries:Android裡已經提供的C/C+庫存組件(或稱模組)。例如,SQLite資料庫系統、OpenGL 3D繪圖系統等。 應用框架(Application Framework, 簡稱AF):這是結合Applications與Libraries的幕後

2、主架構,讓Libraries組件能不斷地為Applications所重複使用(Reuse)。 應用程式(Applications):依據User的期望而將AF的組件及Libaraies組件組合而成的高階服務。,4,Android開放平台的客製化,5,跨語言的Android 應用軟體,6,以漢堡比喻Android 平台架構,7,與25年前的開放硬體架構比較,8,充分發揮應用架構平台之特性,應用框架與傳統AP或OS的區別在於:應用框架顧名思義,就是要去框住應用程式的”型”(Form),讓應用程式能擁有共同的介面,應用程式之間容易互通,與平台也容易互通,更能在不同硬體上跑。既然要框住應用程式,當然必

3、須要完整而穩定才能支援各式各樣的應用程式。所以不宜對 Android 的介面與架構進行各自為政的修改,否則就失去其身為應用框架之身分、角色和意義了。,9,如果Android不更改,有如何移植到既有的硬體和OS環境上呢? 為了延續自己的硬體和OS平台,又希望Android的穩定,豈不是硬碰硬了呢? 這可能是古典的嵌入式思維所致,把系統視為三個層級:硬體、OS和應用程式。然後把Android應用框架不是歸到應用程式層,不然就是歸到系統層。新的思維是:將應用框架視為獨立的一層,之上才是應用程式層。之下是可抽換的C/C+組件層,更往下是OS和硬體。,充分發揮應用架構平台之特性(續):,10,當我們基於

4、這個新觀點時,就能擅用應用框架的天職和特性,懂得應用框架是穩定的,而組件層是柔軟而易於抽換(PnP)的。認識到Android 設計的本意:構成虛實相依的美好架構。應用框架與OS/硬體層兩者皆是實的,不易(也最好不必)更動。而介於其中的組件層則是虛的,扮演Adapter的角色,來融合兩旁的實的層級。才不違背Android身為應用框架的本性和天職。,充分發揮應用架構平台之特性(續):,11,Summary:銜接AF與硬體的關鍵層,12,高煥堂 簡介: 技術專長:從事軟體開發長達30年,專精於物件導向技術,及大型系統架構設計。近來,專研Google Android技術,並提供教育訓練及技術顧問工作。

5、 書籍出版:目前已經出版3本Android書籍,並將於2008年12月出版第4本Android書籍。 教育訓練:2008年 12月初將開Android教育訓練課程新班,詳細請上網: 或 論壇。電話: (02)2739-8367 (高煥堂),13,PART-2: Android應用軟體開發要點,Android應用程式的4種嫡系組件。 Intent-based Programming。 跨進程的IPC溝通機制。 手機安全管理機制。 Java與C/C+溝通的JNI介面。 GCJ: 將.Jar編譯為Libraries組件。,14,Section 2.1: Android的4種嫡系組件,Android

6、有4種一等公民(或暱稱為嫡系親屬),包括: Activity: 處理UI互動的事情 ContentProvider: 儲存共享資料 IntentReceiver: 接收訊息及事件處理 Service:幕後服務(如硬體及Driver的服務),15,它們必須宣告於AndroidManifest.xml裡,如下: ,16,應用程式範例:以MP4播放為例,先選取影片,17,下載影片,18,播放影片,19,範例程式的狀態變化圖,20,內部進程(Process)的變化,選取影片:FirstActivity物件在獨立的 進程裡執行。,21,下載影片: FirstActivity啟動了LoadActivity

7、(在同一個進程裡執行) LoadActivity使用到LoadService,22,下載完畢:LoadActivity結束了。 LoadService可以持續執行。,23,播放影片: FirstActivity啟動了VideoActivity(在獨立的進程裡) 使用到System Process裡的組件,24,結束播放: 畫面回到FirstActivity,25,結束程式:,26,Section 2.2: Intent-based Programming。, Android的4種嫡系組件(即Activity、Service、IntentReceiver和ContentProvider)之間如何

8、互相溝通呢?就像我們打手機去車行叫計程車,而不是直接到街道上叫車。我們送給行一個簡訊或一通電話,表明我們的意圖(Intent),當車行經理接到此意圖,就依據你的意圖的內含條件而去挑選最合適的計程車,然後派遣它去接你。,27,28, 意圖(Intent)本身是定義為一個類別(Class),一個Intent物件表達一個目的(Goal)或期望(Expectation),敘述其所期望的服務或動作、與動作有關的資料等。Android則根據此Intent物件之敘述,負責配對,找出相配的組件,然後將 Intent物件傳遞給所找到的組件,Android的媒婆任務就完成了。,29, 因此,Intent物件扮演著

9、媒體仲介的角色,提供 Client組件 Android Server組件之間互 相溝通的相關資訊,實現了Client組件與Server 組件之間不知而亦能用之效果,這又稱為 疏結合(Loosely-coupled)效果。其創造了Server 組件抽換的自由度,這又稱為PnP(Plug and Play)。,30,Section 2.3: 跨進程的IPC溝通機制, 在Android裡,一個Package可以含有多個Activity,這些Activity可以在同一個進程(Process)裡執行;也可以在不同的進程裡執行。基於Linux的安全限制,以及進程的基本特性(例如,不同進程的位址空間是獨立的

10、),Activity-a與Activity-b在同一個進程裡執行時,兩者溝通方便也快速。但是,當Activity-a與Activity-b分別在不同的進程裡執行時,兩者溝通就屬於IPC跨進程溝通了,不如前者方便,也慢些。,31, Android的Binder System負責高效率的IPC(跨 進程之溝通)。 Binder系統是在Native層的C/C+組件。Java 應用程式(如Activity體系之類別)是透過JNI介面 去呼叫Binder系統(或稱組件)。 Binder類別體系的物件內含有Proxy和Stub標準 的遠距溝通結構,由ServiceManager在Client端 誕生一個P

11、roxy物件,給讓Client端(如Activity)能 透過IBinder介面或由AIDL語言所定義的介面來 呼叫Proxy物件,再由Proxy來與C/C+層的遠距 Service物件進行高效率的通訊。,32,Section 2.4: 手機安全管理機制, 在傳統電腦上,UID是跟隨著人(例如電腦的使用者或用戶)。Android裡的UID是跟隨著軟體(例如Android應用程式)。 由於每個應用程式都有個UID,只有帶著此UID,才能存取該UID所涵蓋的有關資料。所以如果AP-1與AP-2的UID不同,則在預設(Default)情況下,雙方都無法讀取對方的資料。這種分而治之的方式,可以減輕駭客

12、軟體的惡意傷害資料,提升手機的安全性。,33, 由於手機系統的安全性越來越受重視,Android 的結構具有高度安全性的優勢。例如,Activity 與Service在不同的進程裡執行,Activity能依賴 Intent去請求Android啟動所需要的Service。 在Service類別裡,可以做權限的檢查。例如下 圖:,34,當Service確認了對方的善意,才將IBinder 介面參考傳給Activity,讓Activity使用 Binder(實質的Service)的服務了。,35,Section 2.5: Java與C/C+溝通的JNI介面, JNI是Java Native Inte

13、rface的縮寫。自從Java1.1開始,JNI就是Java平台上的一種標準介面規範,它讓Java程式能與C/C+等語言所寫的程式互相溝通。JNI並非違章建築,向Android的Binder System內部也使用JNI介面。,36, 許多硬體廠不斷推出創新的硬體功能,C組件透 過迅速汰舊換新,發揮硬體的新功能,不斷改善 應用程式效能。只要維持JNI介面的穩定,C組件 的迅速汰舊換新並不會毀掉既有的Java程式,卻 能結合硬體效能,促進硬體快速創新。JNI就扮 演這個穩定介面的角色,而且是一個極為重要的 角色。,37,Section 2.6: GCJ: 將.Jar編譯為Libraries組件,

14、 GCJ可以將Java程式碼編譯為.o目的程式碼。例如,從sourceforge網站: http:/sourceforge.jp/projects/qrcode 下載了qrcode.jar 程式檔。此時可選擇: 1. 直接在Android的java程式裡直接含入 qrcode.jar。 2. 動手將此qrcode.jar重新以C語言改寫之。 3. 使用GCJ將qrcode.jar編譯為.o程式碼,以及連結為.so,最後放進Android模擬器裡。,38, 這GCJ途徑帶給Android開發者許多益處: 各式各樣的.jar模組,都能迅速成為Android平台上的應用程式組件。 Java程式師對C

15、程式師的依賴減輕了。 3. 由於Android應用程式將UI部分分離開來,大多可單純由Java程式來擔任,而幕後的服務(例如qrcode.jar)就沒有UI的成分,這對GCJ而言更容易轉譯為.o目的程式,可減輕對Android資源的壓力,又能擺脫JRE的依賴,因而大幅提升幕後服務的執行效率。,39,總結: Android軟體開發之特色,Android是應用框架不是OS。 Android應用程式是跨語言的。 Android像桌面,C組件像桌腳,硬體像地面。而Java應用程式像桌上的水果。 不修地面、只修桌腳、維持桌面、穩定桌上的水果。 呈現軟硬體產業的大結合。,40, Q&A 願你好事多著落 (“Android”的諧音: 願(An)你好事多著落(droid),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1