com.android.server.pm.Settings
mSettingsFilename: /data/system/packages.xml
updated-package:
com.android.server.pm.Settings#readDisabledSysPackageLPw()
com.android.server.pm.PackageInstallerService
client call com.android.server.pm.PackageInstallerService#createSession
allocate session id:
private int allocateSessionIdLocked() {
int n = 0;
int sessionId;
do {
sessionId = mRandom.nextInt(Integer.MAX_VALUE - 1) + 1;
if (!mAllocatedSessions.get(sessionId, false)) {
mAllocatedSessions.put(sessionId, true);
return sessionId;
}
} while (n++ < 32);
throw new IllegalStateException("Failed to allocate session ID");
}
stageDir : /data/app/vmdl934142613.tmp
create a InstallSource:
create a session , put into mSessions ,
@GuardedBy("mSessions")
private final SparseArray<PackageInstallerSession> mSessions = new SparseArray<>();
when remove item from mSessions:
dispatchSessionFinished
onSessionFinished
removeActiveSession
com.android.server.pm.PackageInstallerSession#install() when future completes calls dispatchSessionFinished().