Fix the resolving of apk type.
Bug: 177694884 Test: m Change-Id: I0ca23a023ae5005288ac8f0b3289067b1d9e84f2
This commit is contained in:
@@ -272,7 +272,8 @@ public class PackageDexOptimizer {
|
||||
dexMetadataPath,
|
||||
options.getCompilationReason(),
|
||||
newResult,
|
||||
ArtStatsLogUtils.getApkType(path),
|
||||
ArtStatsLogUtils.getApkType(path, pkg.getBaseApkPath(),
|
||||
pkg.getSplitCodePaths()),
|
||||
dexCodeIsa,
|
||||
path);
|
||||
} finally {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user