From 8fa2407ad2dcdc98c493a95dd9738ac0e888c18f Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Tue, 17 Nov 2020 12:26:48 -0700 Subject: [PATCH] Adjust "services.core" defaults for Error Prone. It ends up that "services.core" itself doesn't catch Error Prone issues, since it works with JAR output from a previous stage. To resolve this, we need to move up to "services.core.unboosted" where the source code is still available. Fix one instance of AndroidFrameworkCompatChange that had leaked into the source tree recently. Disable other checks since there are hundreds of failures inside the actual "services.core" code. Bug: 155703208 Test: manual Exempt-From-Owner-Approval: trivial refactoring Change-Id: I13f15db61bbcf5f74023147a95551b541d0a8845 --- Android.bp | 5 ++-- services/core/Android.bp | 2 +- .../com/android/server/am/ActiveServices.java | 2 ++ .../server/pm/PackageManagerService.java | 28 +++++++++++-------- 4 files changed, 22 insertions(+), 15 deletions(-) diff --git a/Android.bp b/Android.bp index 9b8e01829c6fa..5abbf68f338fd 100644 --- a/Android.bp +++ b/Android.bp @@ -22,9 +22,9 @@ java_defaults { ], errorprone: { javacflags: [ - "-Xep:AndroidFrameworkBinderIdentity:ERROR", + // "-Xep:AndroidFrameworkBinderIdentity:ERROR", "-Xep:AndroidFrameworkCompatChange:ERROR", - "-Xep:AndroidFrameworkUid:ERROR", + // "-Xep:AndroidFrameworkUid:ERROR", // NOTE: only enable to generate local patchfiles // "-XepPatchChecks:refaster:frameworks/base/errorprone/refaster/EfficientXml.java.refaster", // "-XepPatchLocation:/tmp/refaster/", @@ -44,6 +44,7 @@ java_defaults { "-Xep:AndroidFrameworkEfficientCollections:OFF", "-Xep:AndroidFrameworkEfficientParcelable:OFF", "-Xep:AndroidFrameworkEfficientStrings:OFF", + "-Xep:AndroidFrameworkEfficientXml:OFF", ], }, } diff --git a/services/core/Android.bp b/services/core/Android.bp index 4bde31fc2f05d..3a137263d182d 100644 --- a/services/core/Android.bp +++ b/services/core/Android.bp @@ -61,6 +61,7 @@ genrule { java_library_static { name: "services.core.unboosted", + defaults: ["platform_service_defaults"], srcs: [ ":services.core.protologsrc", ":dumpstate_aidl", @@ -146,7 +147,6 @@ java_genrule { java_library { name: "services.core", - defaults: ["platform_service_defaults"], static_libs: ["services.core.priorityboosted"], } diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index 01e77f8afdf3a..d6f72990e4ac8 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -1630,6 +1630,8 @@ public final class ActiveServices { } } + // TODO: remove as part of fixing b/173627642 + @SuppressWarnings("AndroidFrameworkCompatChange") private void postFgsNotificationLocked(ServiceRecord r) { boolean showNow = !mAm.mConstants.mFlagFgsNotificationDeferralEnabled; if (!showNow) { diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index a03c405c79f0c..57d082bf7ecf6 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -17718,6 +17718,17 @@ public class PackageManagerService extends IPackageManager.Stub } } + /* + * Cannot properly check CANNOT_INSTALL_WITH_BAD_PERMISSION_GROUPS using CompatChanges + * as this only works for packages that are installed + * + * TODO: Move logic for permission group compatibility into PermissionManagerService + */ + @SuppressWarnings("AndroidFrameworkCompatChange") + private static boolean cannotInstallWithBadPermissionGroups(ParsedPackage parsedPackage) { + return parsedPackage.getTargetSdkVersion() >= Build.VERSION_CODES.S; + } + @GuardedBy("mInstallLock") private PrepareResult preparePackageLI(InstallArgs args, PackageInstalledInfo res) throws PrepareFailure { @@ -17760,7 +17771,7 @@ public class PackageManagerService extends IPackageManager.Stub | (onExternal ? PackageParser.PARSE_EXTERNAL_STORAGE : 0); Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "parsePackage"); - ParsedPackage parsedPackage; + final ParsedPackage parsedPackage; try (PackageParser2 pp = new PackageParser2(mSeparateProcesses, false, mMetrics, null, mPackageParserCallback)) { parsedPackage = pp.parsePackage(tmpPackageFile, parseFlags, false); @@ -17876,15 +17887,6 @@ public class PackageManagerService extends IPackageManager.Stub } } - /* - * Cannot properly check CANNOT_INSTALL_WITH_BAD_PERMISSION_GROUPS using CompatChanges - * as this only works for packages that are installed - * - * TODO: Move logic for permission group compatibility into PermissionManagerService - */ - boolean cannotInstallWithBadPermissionGroups = - parsedPackage.getTargetSdkVersion() >= Build.VERSION_CODES.S; - PackageSetting ps = mSettings.mPackages.get(pkgName); if (ps != null) { if (DEBUG_INSTALL) Slog.d(TAG, "Existing package: " + ps); @@ -17942,7 +17944,8 @@ public class PackageManagerService extends IPackageManager.Stub parsedPackage.getPermissionGroups().get(groupNum); final PermissionGroupInfo sourceGroup = getPermissionGroupInfo(group.getName(), 0); - if (sourceGroup != null && cannotInstallWithBadPermissionGroups) { + if (sourceGroup != null + && cannotInstallWithBadPermissionGroups(parsedPackage)) { final String sourcePackageName = sourceGroup.packageName; if ((replace || !parsedPackage.getPackageName().equals(sourcePackageName)) @@ -18017,7 +18020,8 @@ public class PackageManagerService extends IPackageManager.Stub } } - if (perm.getGroup() != null && cannotInstallWithBadPermissionGroups) { + if (perm.getGroup() != null + && cannotInstallWithBadPermissionGroups(parsedPackage)) { boolean isPermGroupDefinedByPackage = false; for (int groupNum = 0; groupNum < numGroups; groupNum++) { if (parsedPackage.getPermissionGroups().get(groupNum).getName()