diff options
| -rw-r--r-- | cmds/installd/dexopt.cpp | 13 | ||||
| -rw-r--r-- | cmds/installd/installd_constants.h | 4 | ||||
| -rw-r--r-- | cmds/installd/otapreopt.cpp | 4 |
3 files changed, 16 insertions, 5 deletions
diff --git a/cmds/installd/dexopt.cpp b/cmds/installd/dexopt.cpp index 25b6f64b4e..f281010e58 100644 --- a/cmds/installd/dexopt.cpp +++ b/cmds/installd/dexopt.cpp @@ -212,7 +212,7 @@ static void run_dex2oat(int zip_fd, int oat_fd, int input_vdex_fd, int output_vd const char* input_file_name, const char* output_file_name, int swap_fd, const char* instruction_set, const char* compiler_filter, bool debuggable, bool post_bootcomplete, bool background_job_compile, int profile_fd, - const char* class_loader_context, int target_sdk_version) { + const char* class_loader_context, int target_sdk_version, bool disable_hidden_api_checks) { static const unsigned int MAX_INSTRUCTION_SET_LEN = 7; if (strlen(instruction_set) >= MAX_INSTRUCTION_SET_LEN) { @@ -438,7 +438,8 @@ static void run_dex2oat(int zip_fd, int oat_fd, int input_vdex_fd, int output_vd + (have_dex2oat_large_app_threshold ? 1 : 0) + (disable_cdex ? 1 : 0) + (generate_minidebug_info ? 1 : 0) - + (target_sdk_version != 0 ? 2 : 0)]; + + (target_sdk_version != 0 ? 2 : 0) + + (disable_hidden_api_checks ? 2 : 0)]; int i = 0; argv[i++] = dex2oat_bin; argv[i++] = zip_fd_arg; @@ -512,6 +513,10 @@ static void run_dex2oat(int zip_fd, int oat_fd, int input_vdex_fd, int output_vd argv[i++] = RUNTIME_ARG; argv[i++] = target_sdk_version_arg; } + if (disable_hidden_api_checks) { + argv[i++] = RUNTIME_ARG; + argv[i++] = "-Xno-hidden-api-checks"; + } // Do not add after dex2oat_flags, they should override others for debugging. argv[i] = NULL; @@ -1796,6 +1801,7 @@ int dexopt(const char* dex_path, uid_t uid, const char* pkgname, const char* ins bool profile_guided = (dexopt_flags & DEXOPT_PROFILE_GUIDED) != 0; bool is_secondary_dex = (dexopt_flags & DEXOPT_SECONDARY_DEX) != 0; bool background_job_compile = (dexopt_flags & DEXOPT_IDLE_BACKGROUND_JOB) != 0; + bool disable_hidden_api_checks = (dexopt_flags & DEXOPT_DISABLE_HIDDEN_API_CHECKS) != 0; // Check if we're dealing with a secondary dex file and if we need to compile it. std::string oat_dir_str; @@ -1892,7 +1898,8 @@ int dexopt(const char* dex_path, uid_t uid, const char* pkgname, const char* ins background_job_compile, reference_profile_fd.get(), class_loader_context, - target_sdk_version); + target_sdk_version, + disable_hidden_api_checks); _exit(68); /* only get here on exec failure */ } else { int res = wait_child(pid); diff --git a/cmds/installd/installd_constants.h b/cmds/installd/installd_constants.h index b49057d392..9b6714d15b 100644 --- a/cmds/installd/installd_constants.h +++ b/cmds/installd/installd_constants.h @@ -52,6 +52,7 @@ constexpr int DEXOPT_STORAGE_DE = 1 << 8; // Tells the compiler that it is invoked from the background service. This // controls whether extra debugging flags can be used (taking more compile time.) constexpr int DEXOPT_IDLE_BACKGROUND_JOB = 1 << 9; +constexpr int DEXOPT_DISABLE_HIDDEN_API_CHECKS = 1 << 10; /* all known values for dexopt flags */ constexpr int DEXOPT_MASK = @@ -62,7 +63,8 @@ constexpr int DEXOPT_MASK = | DEXOPT_SECONDARY_DEX | DEXOPT_FORCE | DEXOPT_STORAGE_CE - | DEXOPT_STORAGE_DE; + | DEXOPT_STORAGE_DE + | DEXOPT_DISABLE_HIDDEN_API_CHECKS; // NOTE: keep in sync with StorageManager constexpr int FLAG_STORAGE_DE = 1 << 0; diff --git a/cmds/installd/otapreopt.cpp b/cmds/installd/otapreopt.cpp index 3909cb8d6c..1c78ff076d 100644 --- a/cmds/installd/otapreopt.cpp +++ b/cmds/installd/otapreopt.cpp @@ -78,8 +78,10 @@ static_assert(DEXOPT_SECONDARY_DEX == 1 << 5, "DEXOPT_SECONDARY_DEX unexpected. static_assert(DEXOPT_FORCE == 1 << 6, "DEXOPT_FORCE unexpected."); static_assert(DEXOPT_STORAGE_CE == 1 << 7, "DEXOPT_STORAGE_CE unexpected."); static_assert(DEXOPT_STORAGE_DE == 1 << 8, "DEXOPT_STORAGE_DE unexpected."); +static_assert(DEXOPT_DISABLE_HIDDEN_API_CHECKS == 1 << 10, + "DEXOPT_DISABLE_HIDDEN_API_CHECKS unexpected"); -static_assert(DEXOPT_MASK == 0x1fe, "DEXOPT_MASK unexpected."); +static_assert(DEXOPT_MASK == 0x5fe, "DEXOPT_MASK unexpected."); |