標籤:其他 處理 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" />:配置了這個屬性就可以顯示在列表中
點擊表徵圖,應用就被開啟起來了:
安卓工程的啟動過程