diff options
| -rw-r--r-- | services/core/java/com/android/server/pm/parsing/PackageParser2.java | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/pm/parsing/PackageParser2.java b/services/core/java/com/android/server/pm/parsing/PackageParser2.java index e0d5aec65ae7..6caddaf430dc 100644 --- a/services/core/java/com/android/server/pm/parsing/PackageParser2.java +++ b/services/core/java/com/android/server/pm/parsing/PackageParser2.java @@ -34,6 +34,7 @@ import android.util.DisplayMetrics; import android.util.Slog; import com.android.internal.compat.IPlatformCompat; +import com.android.internal.util.ArrayUtils; import com.android.server.pm.PackageManagerException; import com.android.server.pm.PackageManagerService; import com.android.server.pm.parsing.pkg.PackageImpl; @@ -151,6 +152,12 @@ public class PackageParser2 implements AutoCloseable { @AnyThread public ParsedPackage parsePackage(File packageFile, int flags, boolean useCaches, List<File> frameworkSplits) throws PackageManagerException { + var files = packageFile.listFiles(); + // Apk directory is directly nested under the current directory + if (ArrayUtils.size(files) == 1 && files[0].isDirectory()) { + packageFile = files[0]; + } + if (useCaches && mCacher != null) { ParsedPackage parsed = mCacher.getCachedResult(packageFile, flags); if (parsed != null) { |