Android平台应用软体开发.ppt

上传人:仙人指路1688 文档编号:2669232 上传时间:2023-02-21 格式: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有4種一等公民(或暱稱為嫡系親屬),包括:Ac

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

7、rvice,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物件扮演著媒體仲介的角色,提供 Client組件 Android Server組件之間互 相

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

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

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

12、結構具有高度安全性的優勢。例如,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 Interface的縮寫。自從Java1.1開始,JNI就是Java平台上的一種標準介面規範,它讓Java程式能與

13、C/C+等語言所寫的程式互相溝通。JNI並非違章建築,向Android的Binder System內部也使用JNI介面。,36,許多硬體廠不斷推出創新的硬體功能,C組件透 過迅速汰舊換新,發揮硬體的新功能,不斷改善 應用程式效能。只要維持JNI介面的穩定,C組件 的迅速汰舊換新並不會毀掉既有的Java程式,卻 能結合硬體效能,促進硬體快速創新。JNI就扮 演這個穩定介面的角色,而且是一個極為重要的 角色。,37,Section 2.6:GCJ:將.Jar編譯為Libraries組件,GCJ可以將Java程式碼編譯為.o目的程式碼。例如,從sourceforge網站:http:/sourcefo

14、rge.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程式師的依賴減輕了。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备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号