Correctly serialize class loader context for "any" SDK version to JSON.
Previously "any" was serialized as its numeric value, 10000. But other code in makefiles and scripts expects string "any", and dexpreopt.config files generated by Make (for Android.mk modules) have "any" not 10000. Bug: 214255490 Test: lunch aosp_cf_x86_64_phone-userdebug && m && launch_cvd \ && adb wait-for-device && adb root \ && adb logcat | grep -E 'ClassLoaderContext [a-z ]+ mismatch' # empty output, no errors at boot Change-Id: Id5e80eb8a90d9786b5cb999c172aaecb44952f76
This commit is contained in:
@@ -678,6 +678,9 @@ func toJsonClassLoaderContext(clcMap ClassLoaderContextMap) jsonClassLoaderConte
|
||||
jClcMap := make(jsonClassLoaderContextMap)
|
||||
for sdkVer, clcs := range clcMap {
|
||||
sdkVerStr := fmt.Sprintf("%d", sdkVer)
|
||||
if sdkVer == AnySdkVersion {
|
||||
sdkVerStr = "any"
|
||||
}
|
||||
jClcMap[sdkVerStr] = toJsonClassLoaderContextRec(clcs)
|
||||
}
|
||||
return jClcMap
|
||||
|
@@ -389,6 +389,38 @@ func TestCLCMExcludeLibs(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
// Test that CLC is correctly serialized to JSON.
|
||||
func TestCLCtoJSON(t *testing.T) {
|
||||
ctx := testContext()
|
||||
optional := false
|
||||
implicit := true
|
||||
m := make(ClassLoaderContextMap)
|
||||
m.AddContext(ctx, 28, "a", optional, implicit, buildPath(ctx, "a"), installPath(ctx, "a"), nil)
|
||||
m.AddContext(ctx, AnySdkVersion, "b", optional, implicit, buildPath(ctx, "b"), installPath(ctx, "b"), nil)
|
||||
android.AssertStringEquals(t, "output CLCM ", `{
|
||||
"28": [
|
||||
{
|
||||
"Name": "a",
|
||||
"Optional": false,
|
||||
"Implicit": true,
|
||||
"Host": "out/soong/a.jar",
|
||||
"Device": "/system/a.jar",
|
||||
"Subcontexts": []
|
||||
}
|
||||
],
|
||||
"any": [
|
||||
{
|
||||
"Name": "b",
|
||||
"Optional": false,
|
||||
"Implicit": true,
|
||||
"Host": "out/soong/b.jar",
|
||||
"Device": "/system/b.jar",
|
||||
"Subcontexts": []
|
||||
}
|
||||
]
|
||||
}`, m.Dump())
|
||||
}
|
||||
|
||||
func checkError(t *testing.T, have error, want string) {
|
||||
if have == nil {
|
||||
t.Errorf("\nwant error: '%s'\nhave: none", want)
|
||||
|
Reference in New Issue
Block a user