diff options
| author | 2023-05-15 17:58:09 +0000 | |
|---|---|---|
| committer | 2023-05-15 17:58:09 +0000 | |
| commit | 95588dbd89f98652925fa47b7a9f8cfce9c85af8 (patch) | |
| tree | 6d40c76cdf814598cd3b602e4e18541ce8e2914b | |
| parent | 27778a6921b5644a0efa0870f2ca8ba06ac294c2 (diff) | |
| parent | 413bb027b1185f0bd1fd4db8cb589b18d0e87953 (diff) | |
Merge "Better error message in case of multiple splits." into udc-dev am: 413bb027b1
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23179125
Change-Id: I935560530493d3be1d4ce12f6ccfc0886e79683b
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | core/java/android/content/pm/parsing/ApkLiteParseUtils.java | 58 |
1 files changed, 31 insertions, 27 deletions
diff --git a/core/java/android/content/pm/parsing/ApkLiteParseUtils.java b/core/java/android/content/pm/parsing/ApkLiteParseUtils.java index 820bb1b84ce0..4f6bcb6f0be5 100644 --- a/core/java/android/content/pm/parsing/ApkLiteParseUtils.java +++ b/core/java/android/content/pm/parsing/ApkLiteParseUtils.java @@ -185,37 +185,41 @@ public class ApkLiteParseUtils { Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "parseApkLite"); try { for (File file : files) { - if (isApkFile(file)) { - final ParseResult<ApkLite> result = parseApkLite(input, file, flags); - if (result.isError()) { - return input.error(result); - } + if (!isApkFile(file)) { + continue; + } - final ApkLite lite = result.getResult(); - // Assert that all package names and version codes are - // consistent with the first one we encounter. - if (packageName == null) { - packageName = lite.getPackageName(); - versionCode = lite.getVersionCode(); - } else { - if (!packageName.equals(lite.getPackageName())) { - return input.error(PackageManager.INSTALL_PARSE_FAILED_BAD_MANIFEST, - "Inconsistent package " + lite.getPackageName() + " in " + file - + "; expected " + packageName); - } - if (versionCode != lite.getVersionCode()) { - return input.error(PackageManager.INSTALL_PARSE_FAILED_BAD_MANIFEST, - "Inconsistent version " + lite.getVersionCode() + " in " + file - + "; expected " + versionCode); - } - } + final ParseResult<ApkLite> result = parseApkLite(input, file, flags); + if (result.isError()) { + return input.error(result); + } - // Assert that each split is defined only oncuses-static-libe - if (apks.put(lite.getSplitName(), lite) != null) { + final ApkLite lite = result.getResult(); + // Assert that all package names and version codes are + // consistent with the first one we encounter. + if (packageName == null) { + packageName = lite.getPackageName(); + versionCode = lite.getVersionCode(); + } else { + if (!packageName.equals(lite.getPackageName())) { return input.error(PackageManager.INSTALL_PARSE_FAILED_BAD_MANIFEST, - "Split name " + lite.getSplitName() - + " defined more than once; most recent was " + file); + "Inconsistent package " + lite.getPackageName() + " in " + file + + "; expected " + packageName); } + if (versionCode != lite.getVersionCode()) { + return input.error(PackageManager.INSTALL_PARSE_FAILED_BAD_MANIFEST, + "Inconsistent version " + lite.getVersionCode() + " in " + file + + "; expected " + versionCode); + } + } + + // Assert that each split is defined only once + ApkLite prev = apks.put(lite.getSplitName(), lite); + if (prev != null) { + return input.error(PackageManager.INSTALL_PARSE_FAILED_BAD_MANIFEST, + "Split name " + lite.getSplitName() + + " defined more than once; most recent was " + file + + ", previous was " + prev.getPath()); } } baseApk = apks.remove(null); |