Loading cmds/installd/otapreopt_chroot.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -236,6 +236,18 @@ static int otapreopt_chroot(const int argc, char **arg) { // the Android Runtime APEX, as it is required by otapreopt to run dex2oat. std::vector<apex::ApexFile> active_packages = ActivateApexPackages(); // Check that an Android Runtime APEX has been activated; clean up and exit // early otherwise. if (std::none_of(active_packages.begin(), active_packages.end(), [](const apex::ApexFile& package){ return package.GetManifest().name() == "com.android.runtime"; })) { LOG(FATAL_WITHOUT_ABORT) << "No activated com.android.runtime APEX package."; DeactivateApexPackages(active_packages); exit(217); } // Now go on and run otapreopt. // Incoming: cmd + status-fd + target-slot + cmd... | Incoming | = argc Loading Loading
cmds/installd/otapreopt_chroot.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -236,6 +236,18 @@ static int otapreopt_chroot(const int argc, char **arg) { // the Android Runtime APEX, as it is required by otapreopt to run dex2oat. std::vector<apex::ApexFile> active_packages = ActivateApexPackages(); // Check that an Android Runtime APEX has been activated; clean up and exit // early otherwise. if (std::none_of(active_packages.begin(), active_packages.end(), [](const apex::ApexFile& package){ return package.GetManifest().name() == "com.android.runtime"; })) { LOG(FATAL_WITHOUT_ABORT) << "No activated com.android.runtime APEX package."; DeactivateApexPackages(active_packages); exit(217); } // Now go on and run otapreopt. // Incoming: cmd + status-fd + target-slot + cmd... | Incoming | = argc Loading