Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fd15990a authored by yawanng's avatar yawanng
Browse files

Fix the resolving of apk type.

Bug: 177694884
Test: m

Change-Id: I0ca23a023ae5005288ac8f0b3289067b1d9e84f2
parent 7ff8faf4
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -272,7 +272,8 @@ public class PackageDexOptimizer {
                                dexMetadataPath,
                                options.getCompilationReason(),
                                newResult,
                                ArtStatsLogUtils.getApkType(path),
                                ArtStatsLogUtils.getApkType(path, pkg.getBaseApkPath(),
                                        pkg.getSplitCodePaths()),
                                dexCodeIsa,
                                path);
                    } finally {
+7 −5
Original line number Diff line number Diff line
@@ -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;
        }
    }

    private static long getDexBytes(String apkPath) {
+9 −4
Original line number Diff line number Diff line
@@ -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) {