android應用程式一旦裝進裝置,每個程式會在它自己安全的沙盒裡執行。
1.android作業系統是乙個多使用者linux系統,每乙個應用程式是乙個使用者。
2.預設情況下,系統會為每個app分配唯一的linux使用者id(這個id只會被系統使用,並且只會被這個app知道),系統為每個app的所有檔案都設定了許可權,只有被分配了這個app使用者id的程式可以訪問它。
3.每個程序有它自己的vm,乙個app的**和其他的是隔離執行的。
4.預設情況下,每個app執行在它自己的liunx程序下。當app的任何乙個元件需要被執行的時候,android會開啟程序,當它不在需要或者系統必須為其他app恢復記憶體時,程序就會被關閉。
android用這種方法,實現了最少特權原則。那就是:每個app預設情況下只能訪問它需要的控制項來工作而不需要其他多餘的。這樣建立了乙個非常安全的環境:app不能訪問系統其他未被授權的部分。
但是,有些方法可以用來和其他app共享資料和訪問系統服務:
1.安排兩個app來共享相同的linux使用者id是可以的,這種情況下他們可以訪問各自的檔案,為了保持系統資源,擁有相同userid的app可以在乙個linux程序中執行並共享乙個vm(應用必須使用相同的證書)。
2.乙個app可以請求許可權來訪問裝置資料,比如使用者聯絡人,簡訊等。所有的app許可權必須在應用被安裝的時候被使用者確認。
以上解釋app存在於系統的基本資訊,本文件剩餘內容向你介紹:
1.在你app中定義的核心框架元件。
2.宣告元件並且要求裝置特徵的manifest檔案。
3.那些從你app**中分離的資源,允許你的程式要優雅地優化其行為的各種裝置的配置。
app元件
app元件是android應用的基本
activities,services(後天長時間的執行或為遠端程序工作),contentprivider,broadcast receiver.
當系統start乙個元件,那系統會為那個app start乙個程序(若還沒執行),而且例項化那個元件需要的類,比如:當你的應用想通過系統照相來得到**,那麼程序中跑得activity是屬於camera app的而不是你的app的。因此,不想其他的大部分系統,android應用沒有乙個入點(比方說main()).
啟用的元件
manifest檔案
在android系統開始乙個元件前,系統在讀manifest檔案時必須知道該元件存在。你的app必須在這個存在於app工程根目錄的檔案中宣告所有的元件。
宣告元件能力
比如:你想建立乙個email應用,你可以宣告乙個intent filter來響應send intent像這樣:
...然後,如果另乙個app建立乙個攜帶action_send的intent而且傳給startactivity(),此時系統也許會啟動你的activity,這樣使用者就可以拖拽和發郵件了。
宣告app需求
為了保護你的應用程式能被安裝在那些缺少你的app必須的特徵的裝置上,你通過在manifest檔案中明確的宣告乙個你的應用可以安裝在哪些裝置上的簡介是非常重要的。大多數的資訊系統都不會讀取,但是外部的裝置比如google play為了那些從自己裝置搜尋app的使用者提供過濾。
比如你的應用需要乙個照相機而且需要android2.1,你應該在你的manifest檔案中這樣宣告:
...這時候,那些沒有照相機,而且android版本低於2.1的裝置就不能從googleplay安裝你的應用。
但是,當你的應用使用camera但不是必須擁有乙個camera,這時候你應將 required 這個屬性設定為false.而且在執行時判斷時候於camera,適當的禁止任何相機的特徵。
app資源
從**中分離開來來提供資源的乙個重要方面是能使你給不同的裝置配置提供可選的資源。比如在xml中定義ui strings你可以將文字翻譯成不同的語言並儲存到分離的檔案中
android 應用程式框架
在進行android軟體開發時,開發者所開發的android應用程式都是通過應用程式框架來與android底層進行互動的,所以開發中接觸到最多的部分就是應用程式框架。在整合應用程式框架 中有4個重要的元件,介紹如下。activities 乙個activities就表示乙個程式的顯示介面,在乙個應用程...
Android應用程式框架
應用程式框架可以說是乙個應用程式的核心,是所有參與開發的程式設計師共同使用和遵守的約定,大家在其約定上進行必要的擴充套件,但程式始終保持主體結構的一致性。其作用是讓程式保持清晰和一目了然,在滿足不同需求的同時又不互相影響。開發應用時都是通過框架來與android底層進行互動,接觸最多的就是應用框架層...
有關android 應用的plugin框架調研
1.借助android提供的shareduserid屬性使多個不同的apt共用乙個userid,以掃除許可權壁壘,獲取外掛程式context,繼而獲取view並載入外掛程式。這樣的方式是建立在已經安裝完畢的apt基礎上的。樣例和參考 1 工作原理介紹 2 xcombine 工作原理介紹 2.不安裝外...