OSDN Git Service

Merge "Support dexopting shared libraries." am: 3275a6b245 am: 2e07ca0f15
authorNicolas Geoffray <ngeoffray@google.com>
Fri, 1 Mar 2019 15:16:31 +0000 (07:16 -0800)
committerandroid-build-merger <android-build-merger@google.com>
Fri, 1 Mar 2019 15:16:31 +0000 (07:16 -0800)
am: adcb9fd8c8

Change-Id: I419d04436685772e187c87292a8143910e56ceaf

1  2 
services/core/java/com/android/server/pm/PackageDexOptimizer.java
services/core/java/com/android/server/pm/PackageManagerService.java
services/tests/servicestests/src/com/android/server/pm/dex/DexoptUtilsTest.java

@@@ -9452,24 -9500,16 +9461,22 @@@ public class PackageManagerService exte
          if (getInstantAppPackageName(Binder.getCallingUid()) != null) {
              return false;
          }
 -        return BackgroundDexOptService.runIdleOptimizationsNow(this, mContext, packageNames);
 +        enforceSystemOrRootOrShell("runBackgroundDexoptJob");
 +        final long identity = Binder.clearCallingIdentity();
 +        try {
 +            return BackgroundDexOptService.runIdleOptimizationsNow(this, mContext, packageNames);
 +        } finally {
 +            Binder.restoreCallingIdentity(identity);
 +        }
      }
  
-     List<PackageParser.Package> findSharedNonSystemLibraries(PackageParser.Package p) {
-         if (p.usesLibraries != null || p.usesOptionalLibraries != null
-                 || p.usesStaticLibraries != null) {
-             ArrayList<PackageParser.Package> retValue = new ArrayList<>();
+     private static List<SharedLibraryInfo> findSharedLibraries(PackageParser.Package p) {
+         if (p.usesLibraryInfos != null) {
+             ArrayList<SharedLibraryInfo> retValue = new ArrayList<>();
              Set<String> collectedNames = new HashSet<>();
-             findSharedNonSystemLibrariesRecursive(p, retValue, collectedNames);
-             retValue.remove(p);
+             for (SharedLibraryInfo info : p.usesLibraryInfos) {
+                 findSharedLibrariesRecursive(info, retValue, collectedNames);
+             }
              return retValue;
          } else {
              return Collections.emptyList();