Merge "Better error message in case of multiple splits." into udc-dev am: 413bb027b1 am: b7a162e5c8
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23179125
Change-Id: I2466c97ed4a14314b747d68179fb16e236279ad3
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/core/java/android/content/pm/parsing/ApkLiteParseUtils.java b/core/java/android/content/pm/parsing/ApkLiteParseUtils.java
index 820bb1b..4f6bcb6 100644
--- a/core/java/android/content/pm/parsing/ApkLiteParseUtils.java
+++ b/core/java/android/content/pm/parsing/ApkLiteParseUtils.java
@@ -185,37 +185,41 @@
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);