Add new system APK locations.
Add /system/priv-app and /oem/app paths to system paths. Also allow
rmdex on system apps, and quietly ignore when it was already removed.
Also relax logging when clearing code cache, since it's optional.
Bug: 17205122
Change-Id: I4fc4d0f63a3596937c4defbd64e1f8a1c563f02d
diff --git a/cmds/installd/installd.c b/cmds/installd/installd.c
index c7fdf7a..3078f20 100644
--- a/cmds/installd/installd.c
+++ b/cmds/installd/installd.c
@@ -328,7 +328,7 @@
}
// Take note of the system and vendor directories.
- android_system_dirs.count = 2;
+ android_system_dirs.count = 4;
android_system_dirs.dirs = calloc(android_system_dirs.count, sizeof(dir_rec_t));
if (android_system_dirs.dirs == NULL) {
@@ -336,22 +336,24 @@
return -1;
}
- // system
- if (get_path_from_env(&android_system_dirs.dirs[0], "ANDROID_ROOT") < 0) {
- free_globals();
+ dir_rec_t android_root_dir;
+ if (get_path_from_env(&android_root_dir, "ANDROID_ROOT") < 0) {
+ ALOGE("Missing ANDROID_ROOT; aborting\n");
return -1;
}
- // append "app/" to dirs[0]
- char *system_app_path = build_string2(android_system_dirs.dirs[0].path, APP_SUBDIR);
- android_system_dirs.dirs[0].path = system_app_path;
- android_system_dirs.dirs[0].len = strlen(system_app_path);
+ android_system_dirs.dirs[0].path = build_string2(android_root_dir.path, APP_SUBDIR);
+ android_system_dirs.dirs[0].len = strlen(android_system_dirs.dirs[0].path);
- // vendor
- // TODO replace this with an environment variable (doesn't exist yet)
- android_system_dirs.dirs[1].path = "/vendor/app/";
+ android_system_dirs.dirs[1].path = build_string2(android_root_dir.path, PRIV_APP_SUBDIR);
android_system_dirs.dirs[1].len = strlen(android_system_dirs.dirs[1].path);
+ android_system_dirs.dirs[2].path = "/vendor/app/";
+ android_system_dirs.dirs[2].len = strlen(android_system_dirs.dirs[2].path);
+
+ android_system_dirs.dirs[3].path = "/oem/app/";
+ android_system_dirs.dirs[3].len = strlen(android_system_dirs.dirs[3].path);
+
return 0;
}