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

Commit 72e35e6a authored by Yan Wang's avatar Yan Wang Committed by Android (Google) Code Review
Browse files

Merge "Fix the resolving of apk type." into sc-dev

parents 2775c48d fd15990a
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) {