安卓工程的啟動過程

來源:互聯網
上載者:User

標籤:其他   處理   debug   共用記憶體   內容   packages   工作   過程   資料   

1、Eclipse將.java源檔案編譯成.class

2、使用dx工具將所有.class檔案轉換為.dex檔案

3、再將.dex檔案和所有資源打包成.apk檔案

4、將.apk檔案安裝到虛擬機器完成程式安裝

5、啟動程式 – 開啟進程 – 開啟主線程

6、建立Activity對象 – 執行OnCreate()方法

7、按照main.xml檔案初始化介面

 

應用程式啟動:

一、解析資訊清單檔並載入

應用程式的啟動需要從PackageManagerService說起,由於應用程式是有PackageManager管理的,可以簡單認為PackageManagerService是為應用程式啟動的做了一些準備工作,才能將應用程式開啟起來。

1、PackageManagerService(資料)讀取所有應用程式的Mainfest資訊,並且建立資訊庫儲存在系統級共用記憶體中

1)解析:

PackageManagerService在啟動後,會進行解析的工作,它會重點監控一些檔案:system/framework、system/app、data/app、data/app_private;一旦將資料存入到這些檔案中,就會去解析

2)許可權分配:

PackageManagerService會建立底層userids和groupids同上層permissions之間的映射,就會給一些底層使用者指派許可權,

進行許可權的映射,UID和GroupID,都會分配相應的許可權

3)儲存資料:

PackageManagerService還有重要的一個操作就是將解析的每個apk的資訊儲存到packages.xml和packages.list檔案裡,

在packages.list記錄了如下資料:pkgName,userId,debugFlag,dataPath(包的資料路徑)

【下次再開機的時候,不會再掃描每個apk了,只需要讀取packages.xml和packages.list檔案即可】

除了這兩個主要的工作外,還會進行一些其他的操作,如檢測檔案等

 

2、Launcher就將PackageManagerService已經解析並處理好的資料都載入到記憶體中,從記憶體中就能擷取到相應的資料,

並展示到手機上【之所以可以展示在手機案頭上,就是因為在資訊清單檔中配置了如下的內容:】

              <action android:name="android.intent.action.MAIN" />:應用程式的入口

<category android:name="android.intent.category.LAUNCHER" />:配置了這個屬性就可以顯示在列表中

點擊表徵圖,應用就被開啟起來了:

安卓工程的啟動過程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.