Update modules-utils-package-state to fit ART's use cases.
- Change min_sdk_version to 31.
- Make methods static.
- Rename "isOptimizable" to "isDexoptable".
Bug: 177273468
Bug: 265248684
Test: atest ArtServiceTests
Ignore-AOSP-First: ART Services.
Change-Id: I26c3bd60c78367ae01391049283c75c63789f432
diff --git a/java/com/android/modules/utils/pm/Android.bp b/java/com/android/modules/utils/pm/Android.bp
index 39f498b..1b705ca 100644
--- a/java/com/android/modules/utils/pm/Android.bp
+++ b/java/com/android/modules/utils/pm/Android.bp
@@ -22,6 +22,8 @@
srcs: ["PackageStateModulesUtils.java"],
defaults: ["modules-utils-defaults"],
sdk_version: "system_server_current",
- min_sdk_version: "UpsideDownCake",
- libs: ["framework-annotations-lib"],
+ min_sdk_version: "31",
+ libs: [
+ "androidx.annotation_annotation",
+ ],
}
diff --git a/java/com/android/modules/utils/pm/PackageStateModulesUtils.java b/java/com/android/modules/utils/pm/PackageStateModulesUtils.java
index ec4b39f..34fd16b 100644
--- a/java/com/android/modules/utils/pm/PackageStateModulesUtils.java
+++ b/java/com/android/modules/utils/pm/PackageStateModulesUtils.java
@@ -17,19 +17,24 @@
package com.android.modules.utils.pm;
import android.annotation.NonNull;
+import android.os.Build;
import android.text.TextUtils;
+import androidx.annotation.RequiresApi;
+
import com.android.server.pm.pkg.AndroidPackageSplit;
import com.android.server.pm.pkg.PackageState;
import java.util.List;
public class PackageStateModulesUtils {
+ private PackageStateModulesUtils() {}
/**
- * @return True if the package is optimizable by dexopt.
+ * @return True if the package is dexoptable.
*/
- public boolean isOptimizable(@NonNull PackageState packageState) {
+ @RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
+ public static boolean isDexoptable(@NonNull PackageState packageState) {
if (packageState.isApex() || "android".equals(packageState.getPackageName())
|| packageState.getAppId() <= 0) {
return false;
@@ -59,8 +64,9 @@
* @param codeOnly Whether to filter to only code usages, ignoring resource only usages.
* @return True if the package is loadable.
*/
- public boolean isLoadableInOtherProcesses(@NonNull PackageState packageState,
- boolean codeOnly) {
+ @RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
+ public static boolean isLoadableInOtherProcesses(
+ @NonNull PackageState packageState, boolean codeOnly) {
var pkg = packageState.getAndroidPackage();
if (pkg == null) {
return false;