Loading services/core/java/com/android/server/pm/PackageInstallerSession.java +33 −8 Original line number Diff line number Diff line Loading @@ -189,6 +189,7 @@ import com.android.internal.util.IndentingPrintWriter; import com.android.internal.util.Preconditions; import com.android.modules.utils.TypedXmlPullParser; import com.android.modules.utils.TypedXmlSerializer; import com.android.server.IoThread; import com.android.server.LocalServices; import com.android.server.art.ArtManagedInstallFileHelper; import com.android.server.pm.Installer.InstallerException; Loading Loading @@ -236,6 +237,8 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { private static final int MSG_SESSION_VALIDATION_FAILURE = 5; private static final int MSG_PRE_APPROVAL_REQUEST = 6; private static final int MSG_ON_NATIVE_LIBS_EXTRACTED = 7; /** XML constants used for persisting a session */ static final String TAG_SESSION = "session"; static final String TAG_CHILD_SESSION = "childSession"; Loading Loading @@ -943,6 +946,8 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { case MSG_PRE_APPROVAL_REQUEST: handlePreapprovalRequest(); break; case MSG_ON_NATIVE_LIBS_EXTRACTED: handleOnNativeLibsExtracted(); } return true; Loading Loading @@ -2908,6 +2913,24 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } private void verify() { // Extract native libraries on the IO thread before proceeding to the verification runExtractNativeLibraries(); } @WorkerThread private void handleOnNativeLibsExtracted() { try { verifyNonStaged(); } catch (PackageManagerException e) { final String completeMsg = ExceptionUtils.getCompleteMessage(e); final String errorMsg = PackageManager.installStatusToString(e.error, completeMsg); setSessionFailed(e.error, errorMsg); onSessionVerificationFailure(e.error, errorMsg); } } private void runExtractNativeLibraries() { IoThread.getHandler().post(() -> { try { List<PackageInstallerSession> children = getChildSessions(); if (isMultiPackage()) { Loading @@ -2917,13 +2940,14 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } else { extractNativeLibraries(); } verifyNonStaged(); mHandler.obtainMessage(MSG_ON_NATIVE_LIBS_EXTRACTED).sendToTarget(); } catch (PackageManagerException e) { final String completeMsg = ExceptionUtils.getCompleteMessage(e); final String errorMsg = PackageManager.installStatusToString(e.error, completeMsg); setSessionFailed(e.error, errorMsg); onSessionVerificationFailure(e.error, errorMsg); } }); } private IntentSender getRemoteStatusReceiver() { Loading Loading @@ -3072,6 +3096,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } } @WorkerThread private void extractNativeLibraries() throws PackageManagerException { synchronized (mLock) { if (mPackageLite != null) { Loading Loading
services/core/java/com/android/server/pm/PackageInstallerSession.java +33 −8 Original line number Diff line number Diff line Loading @@ -189,6 +189,7 @@ import com.android.internal.util.IndentingPrintWriter; import com.android.internal.util.Preconditions; import com.android.modules.utils.TypedXmlPullParser; import com.android.modules.utils.TypedXmlSerializer; import com.android.server.IoThread; import com.android.server.LocalServices; import com.android.server.art.ArtManagedInstallFileHelper; import com.android.server.pm.Installer.InstallerException; Loading Loading @@ -236,6 +237,8 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { private static final int MSG_SESSION_VALIDATION_FAILURE = 5; private static final int MSG_PRE_APPROVAL_REQUEST = 6; private static final int MSG_ON_NATIVE_LIBS_EXTRACTED = 7; /** XML constants used for persisting a session */ static final String TAG_SESSION = "session"; static final String TAG_CHILD_SESSION = "childSession"; Loading Loading @@ -943,6 +946,8 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { case MSG_PRE_APPROVAL_REQUEST: handlePreapprovalRequest(); break; case MSG_ON_NATIVE_LIBS_EXTRACTED: handleOnNativeLibsExtracted(); } return true; Loading Loading @@ -2908,6 +2913,24 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } private void verify() { // Extract native libraries on the IO thread before proceeding to the verification runExtractNativeLibraries(); } @WorkerThread private void handleOnNativeLibsExtracted() { try { verifyNonStaged(); } catch (PackageManagerException e) { final String completeMsg = ExceptionUtils.getCompleteMessage(e); final String errorMsg = PackageManager.installStatusToString(e.error, completeMsg); setSessionFailed(e.error, errorMsg); onSessionVerificationFailure(e.error, errorMsg); } } private void runExtractNativeLibraries() { IoThread.getHandler().post(() -> { try { List<PackageInstallerSession> children = getChildSessions(); if (isMultiPackage()) { Loading @@ -2917,13 +2940,14 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } else { extractNativeLibraries(); } verifyNonStaged(); mHandler.obtainMessage(MSG_ON_NATIVE_LIBS_EXTRACTED).sendToTarget(); } catch (PackageManagerException e) { final String completeMsg = ExceptionUtils.getCompleteMessage(e); final String errorMsg = PackageManager.installStatusToString(e.error, completeMsg); setSessionFailed(e.error, errorMsg); onSessionVerificationFailure(e.error, errorMsg); } }); } private IntentSender getRemoteStatusReceiver() { Loading Loading @@ -3072,6 +3096,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } } @WorkerThread private void extractNativeLibraries() throws PackageManagerException { synchronized (mLock) { if (mPackageLite != null) { Loading