/frameworks/base/cmds/installd和/frameworks/base/services/java/com/android/server/PackageManagerService.java負責新程式的安裝,檢查,最佳化等,父進程等最佳化完畢後。
關於/data/dalvik-cache/
當Android啟動時,DalvikVM監視所有的程式(APK檔案)和架構,並且為他們建立一個依存關係樹。DalvikVM通過這個依存關係樹來為每個程式最佳化代碼並儲存在Dalvik緩衝中。這樣,所有程式在運行時都會使用最佳化過的代碼。這就是當你刷一個新的ROM時,有時候第一次啟動時間非常非常長的原因。當一個程式(或者架構庫)發生變更,DalvikVM將會重新最佳化代碼並且再次將其存在緩衝中。
下面是安裝一個APK的過程看到的LOG:
I/ActivityManager( 129): Starting: Intent { dat=/sdcard/apk/Tank Hero.apk cmp=com.android.packageinstaller/.InstallAppProgress (has extras) } from pid 1414
W/ActivityManager( 129): No content provider found for: null
I/ActivityManager( 129): Displayed com.android.packageinstaller/.InstallAppProgress: +339ms
W/ActivityManager( 129): No content provider found for: null
D/PackageParser( 129): Scanning package: /data/app/vmdl-491066460.tmp
D/PackageManager( 129): Scanning package com.clapfootgames.tankhero
I/PackageManager( 129): Unpacking native libraries for /data/app/com.clapfootgames.tankhero-1.apk
D/installd( 100): DexInv: --- BEGIN '/data/app/com.clapfootgames.tankhero-1.apk' ---
D/dalvikvm( 2151): DexOpt: load 77ms, verify+opt 269ms
D/installd( 100): DexInv: --- END '/data/app/com.clapfootgames.tankhero-1.apk' (success) ---
D/PackageManager( 129): Receivers: com.admob.android.ads.analytics.InstallReceiver
D/PackageManager( 129): Activities: com.clapfootgames.tankhero.Application com.admob.android.ads.AdMobActivity
I/installd( 100): move /data/dalvik-cache/data@app@com.clapfootgames.tankhero-1.apk@classes.dex -> /data/dalvik-cache/data@app@com.clapfootgames.tankhero-1.apk@classes.dex
D/PackageManager( 129): New package installed in /data/app/com.clapfootgames.tankhero-1.apk