diff --git a/services/core/java/com/android/server/pm/PackageDexOptimizer.java b/services/core/java/com/android/server/pm/PackageDexOptimizer.java index b29c147c3a2e0..f63dd41c89ab2 100644 --- a/services/core/java/com/android/server/pm/PackageDexOptimizer.java +++ b/services/core/java/com/android/server/pm/PackageDexOptimizer.java @@ -272,7 +272,8 @@ public class PackageDexOptimizer { dexMetadataPath, options.getCompilationReason(), newResult, - ArtStatsLogUtils.getApkType(path), + ArtStatsLogUtils.getApkType(path, pkg.getBaseApkPath(), + pkg.getSplitCodePaths()), dexCodeIsa, path); } finally { diff --git a/services/core/java/com/android/server/pm/dex/ArtStatsLogUtils.java b/services/core/java/com/android/server/pm/dex/ArtStatsLogUtils.java index 13798ba1b7232..ef37201b54b38 100644 --- a/services/core/java/com/android/server/pm/dex/ArtStatsLogUtils.java +++ b/services/core/java/com/android/server/pm/dex/ArtStatsLogUtils.java @@ -29,6 +29,7 @@ import com.android.internal.art.ArtStatsLog; import com.android.server.pm.PackageManagerService; import java.io.IOException; +import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -41,8 +42,6 @@ public class ArtStatsLogUtils { private static final String TAG = ArtStatsLogUtils.class.getSimpleName(); private static final String PROFILE_DEX_METADATA = "primary.prof"; private static final String VDEX_DEX_METADATA = "primary.vdex"; - private static final String BASE_APK= "base.apk"; - private static final int ART_COMPILATION_REASON_INSTALL_BULK_SECONDARY = ART_DATUM_REPORTED__COMPILATION_REASON__ART_COMPILATION_REASON_INSTALL_BULK_SECONDARY; @@ -187,11 +186,14 @@ public class ArtStatsLogUtils { isa); } - public static int getApkType(String path) { - if (path.equals(BASE_APK)) { + public static int getApkType(String path, String baseApkPath, String[] splitApkPaths) { + if (path.equals(baseApkPath)) { return ArtStatsLog.ART_DATUM_REPORTED__APK_TYPE__ART_APK_TYPE_BASE; + } else if(Arrays.stream(splitApkPaths).anyMatch(p->p.equals(path))) { + return ArtStatsLog.ART_DATUM_REPORTED__APK_TYPE__ART_APK_TYPE_SPLIT; + } else{ + return ArtStatsLog.ART_DATUM_REPORTED__APK_TYPE__ART_APK_TYPE_UNKNOWN; } - return ArtStatsLog.ART_DATUM_REPORTED__APK_TYPE__ART_APK_TYPE_SPLIT; } private static long getDexBytes(String apkPath) { diff --git a/services/tests/servicestests/src/com/android/server/pm/dex/ArtStatsLogUtilsTest.java b/services/tests/servicestests/src/com/android/server/pm/dex/ArtStatsLogUtilsTest.java index 7d6f4acfb7a0b..ef5f00bf8a3c2 100644 --- a/services/tests/servicestests/src/com/android/server/pm/dex/ArtStatsLogUtilsTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/dex/ArtStatsLogUtilsTest.java @@ -51,8 +51,9 @@ public final class ArtStatsLogUtilsTest { private static final String PROFILE_DEX_METADATA = "primary.prof"; private static final String VDEX_DEX_METADATA = "primary.vdex"; private static final String INSTRUCTION_SET = "arm64"; - private static final String BASE_APK = "base.apk"; - private static final String SPLIT_APK = "split.apk"; + private static final String BASE_APK_PATH = "/tmp/base.apk"; + private static final String[] SPLIT_APK_PATHS = + new String[]{"/tmp/split1.apk", "/tmp/split2.apk"}; private static final byte[] DEX_CONTENT = "dexData".getBytes(); private static final int COMPILATION_REASON = 1; private static final int RESULT_CODE = 222; @@ -248,12 +249,16 @@ public final class ArtStatsLogUtilsTest { @Test public void testGetApkType() { // Act - int result1 = ArtStatsLogUtils.getApkType(BASE_APK); - int result2 = ArtStatsLogUtils.getApkType(SPLIT_APK); + int result1 = ArtStatsLogUtils.getApkType("/tmp/base.apk", BASE_APK_PATH, SPLIT_APK_PATHS); + int result2 = ArtStatsLogUtils.getApkType("/tmp/split1.apk", BASE_APK_PATH, + SPLIT_APK_PATHS); + int result3 = ArtStatsLogUtils.getApkType("/tmp/none.apk", BASE_APK_PATH, SPLIT_APK_PATHS); // Assert Assert.assertEquals(result1, ArtStatsLog.ART_DATUM_REPORTED__APK_TYPE__ART_APK_TYPE_BASE); Assert.assertEquals(result2, ArtStatsLog.ART_DATUM_REPORTED__APK_TYPE__ART_APK_TYPE_SPLIT); + Assert.assertEquals(result3, + ArtStatsLog.ART_DATUM_REPORTED__APK_TYPE__ART_APK_TYPE_UNKNOWN); } private void verifyWrites(int dexMetadataType) {