Expose ART Services APIs.
Bug: 225827974
Test: m
Ignore-AOSP-First: ART Services
Change-Id: I9c903448d9037848794e5d1a49a6bef760abc6b3
diff --git a/libartservice/service/api/system-server-current.txt b/libartservice/service/api/system-server-current.txt
index afa5aa2..d35f8c7 100644
--- a/libartservice/service/api/system-server-current.txt
+++ b/libartservice/service/api/system-server-current.txt
@@ -3,8 +3,39 @@
public final class ArtManagerLocal {
ctor public ArtManagerLocal();
+ method @NonNull public com.android.server.art.model.DeleteResult deleteOptimizedArtifacts(@NonNull com.android.server.pm.snapshot.PackageDataSnapshot, @NonNull String);
+ method @NonNull public com.android.server.art.model.DeleteResult deleteOptimizedArtifacts(@NonNull com.android.server.pm.snapshot.PackageDataSnapshot, @NonNull String, int);
+ method @NonNull public com.android.server.art.model.OptimizationStatus getOptimizationStatus(@NonNull com.android.server.pm.snapshot.PackageDataSnapshot, @NonNull String);
+ method @NonNull public com.android.server.art.model.OptimizationStatus getOptimizationStatus(@NonNull com.android.server.pm.snapshot.PackageDataSnapshot, @NonNull String, int);
method public int handleShellCommand(@NonNull android.os.Binder, @NonNull android.os.ParcelFileDescriptor, @NonNull android.os.ParcelFileDescriptor, @NonNull android.os.ParcelFileDescriptor, @NonNull String[]);
}
}
+package com.android.server.art.model {
+
+ public class ArtFlags {
+ method public static int defaultDeleteFlags();
+ method public static int defaultGetStatusFlags();
+ field public static final int FLAG_FOR_PRIMARY_DEX = 1; // 0x1
+ field public static final int FLAG_FOR_SECONDARY_DEX = 2; // 0x2
+ }
+
+ public class DeleteResult {
+ method public long getFreedBytes();
+ }
+
+ public class OptimizationStatus {
+ method @NonNull public java.util.List<com.android.server.art.model.OptimizationStatus.DexFileOptimizationStatus> getDexFileOptimizationStatuses();
+ }
+
+ public static class OptimizationStatus.DexFileOptimizationStatus {
+ method @NonNull public String getCompilationReason();
+ method @NonNull public String getCompilerFilter();
+ method @NonNull public String getDexFile();
+ method @NonNull public String getInstructionSet();
+ method @NonNull public String getLocationDebugString();
+ }
+
+}
+
diff --git a/libartservice/service/java/com/android/server/art/ArtManagerLocal.java b/libartservice/service/java/com/android/server/art/ArtManagerLocal.java
index 03a1deb..3a6bdc9 100644
--- a/libartservice/service/java/com/android/server/art/ArtManagerLocal.java
+++ b/libartservice/service/java/com/android/server/art/ArtManagerLocal.java
@@ -98,8 +98,17 @@
*
* @throws IllegalArgumentException if the package is not found or the flags are illegal
* @throws IllegalStateException if an internal error occurs
+ */
+ @NonNull
+ public DeleteResult deleteOptimizedArtifacts(
+ @NonNull PackageDataSnapshot snapshot, @NonNull String packageName) {
+ return deleteOptimizedArtifacts(snapshot, packageName, ArtFlags.defaultDeleteFlags());
+ }
+
+ /**
+ * Same as above, but allows to specify flags.
*
- * @hide
+ * @see #deleteOptimizedArtifacts(PackageDataSnapshot, String)
*/
@NonNull
public DeleteResult deleteOptimizedArtifacts(@NonNull PackageDataSnapshot snapshot,
@@ -141,25 +150,21 @@
}
/**
- * Same as above, but with default flags.
- *
- * @see #deleteOptimizedArtifacts(PackageDataSnapshot, String, int)
- *
- * @hide
- */
- @NonNull
- public DeleteResult deleteOptimizedArtifacts(
- @NonNull PackageDataSnapshot snapshot, @NonNull String packageName) {
- return deleteOptimizedArtifacts(snapshot, packageName, ArtFlags.defaultDeleteFlags());
- }
-
- /**
* Returns the optimization status of a package.
*
* @throws IllegalArgumentException if the package is not found or the flags are illegal
* @throws IllegalStateException if an internal error occurs
+ */
+ @NonNull
+ public OptimizationStatus getOptimizationStatus(
+ @NonNull PackageDataSnapshot snapshot, @NonNull String packageName) {
+ return getOptimizationStatus(snapshot, packageName, ArtFlags.defaultGetStatusFlags());
+ }
+
+ /**
+ * Same as above, but allows to specify flags.
*
- * @hide
+ * @see #getOptimizationStatus(PackageDataSnapshot, String)
*/
@NonNull
public OptimizationStatus getOptimizationStatus(@NonNull PackageDataSnapshot snapshot,
@@ -204,19 +209,6 @@
}
}
- /**
- * Same as above, but with default flags.
- *
- * @see #getOptimizationStatus(PackageDataSnapshot, String, int)
- *
- * @hide
- */
- @NonNull
- public OptimizationStatus getOptimizationStatus(
- @NonNull PackageDataSnapshot snapshot, @NonNull String packageName) {
- return getOptimizationStatus(snapshot, packageName, ArtFlags.defaultGetStatusFlags());
- }
-
private PackageState getPackageStateOrThrow(
@NonNull PackageDataSnapshot snapshot, @NonNull String packageName) {
PackageState pkgState = mInjector.getPackageManagerLocal().getPackageState(
diff --git a/libartservice/service/java/com/android/server/art/model/ArtFlags.java b/libartservice/service/java/com/android/server/art/model/ArtFlags.java
index c53f3e3..0ecad74 100644
--- a/libartservice/service/java/com/android/server/art/model/ArtFlags.java
+++ b/libartservice/service/java/com/android/server/art/model/ArtFlags.java
@@ -17,11 +17,13 @@
package com.android.server.art.model;
import android.annotation.IntDef;
+import android.annotation.SystemApi;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/** @hide */
+@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
public class ArtFlags {
/** Whether the operation is applied for primary dex'es. */
public static final int FLAG_FOR_PRIMARY_DEX = 1 << 0;
diff --git a/libartservice/service/java/com/android/server/art/model/DeleteResult.java b/libartservice/service/java/com/android/server/art/model/DeleteResult.java
index 6866069..fc40cbc 100644
--- a/libartservice/service/java/com/android/server/art/model/DeleteResult.java
+++ b/libartservice/service/java/com/android/server/art/model/DeleteResult.java
@@ -16,10 +16,14 @@
package com.android.server.art.model;
+import android.annotation.SystemApi;
+
/** @hide */
+@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
public class DeleteResult {
private long mFreedBytes;
+ /** @hide */
public DeleteResult(long freedBytes) {
mFreedBytes = freedBytes;
}
diff --git a/libartservice/service/java/com/android/server/art/model/OptimizationStatus.java b/libartservice/service/java/com/android/server/art/model/OptimizationStatus.java
index 4b6bae2..724b0dd 100644
--- a/libartservice/service/java/com/android/server/art/model/OptimizationStatus.java
+++ b/libartservice/service/java/com/android/server/art/model/OptimizationStatus.java
@@ -17,6 +17,7 @@
package com.android.server.art.model;
import android.annotation.NonNull;
+import android.annotation.SystemApi;
import com.android.internal.annotations.Immutable;
@@ -28,6 +29,7 @@
*
* @hide
*/
+@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
@Immutable
public class OptimizationStatus {
private final @NonNull List<DexFileOptimizationStatus> mDexFileOptimizationStatuses;