aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--java/com/android/modules/utils/pm/PackageStateModulesUtils.java15
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());
+ }
}