diff options
-rw-r--r-- | java/com/android/modules/utils/pm/PackageStateModulesUtils.java | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/java/com/android/modules/utils/pm/PackageStateModulesUtils.java b/java/com/android/modules/utils/pm/PackageStateModulesUtils.java index 34fd16b..2944592 100644 --- a/java/com/android/modules/utils/pm/PackageStateModulesUtils.java +++ b/java/com/android/modules/utils/pm/PackageStateModulesUtils.java @@ -22,6 +22,7 @@ import android.text.TextUtils; import androidx.annotation.RequiresApi; +import com.android.server.pm.pkg.AndroidPackage; import com.android.server.pm.pkg.AndroidPackageSplit; import com.android.server.pm.pkg.PackageState; @@ -35,8 +36,7 @@ public class PackageStateModulesUtils { */ @RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static boolean isDexoptable(@NonNull PackageState packageState) { - if (packageState.isApex() || "android".equals(packageState.getPackageName()) - || packageState.getAppId() <= 0) { + if (packageState.isApex() || "android".equals(packageState.getPackageName())) { return false; } @@ -45,6 +45,10 @@ public class PackageStateModulesUtils { return false; } + if ((packageState.getAppId() <= 0) && !isSdkLibrary(pkg)) { + return false; + } + List<AndroidPackageSplit> splits = pkg.getSplits(); for (int index = 0; index < splits.size(); index++) { if (splits.get(index).isHasCode()) { @@ -76,7 +80,7 @@ public class PackageStateModulesUtils { return true; } - if (!TextUtils.isEmpty(pkg.getSdkLibraryName())) { + if (isSdkLibrary(pkg)) { return true; } @@ -86,4 +90,9 @@ public class PackageStateModulesUtils { return !codeOnly && pkg.isResourceOverlay(); } + + @RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE) + private static boolean isSdkLibrary(AndroidPackage pkg) { + return !TextUtils.isEmpty(pkg.getSdkLibraryName()); + } } |