Loading apex/apex_test.go +6 −1 Original line number Diff line number Diff line Loading @@ -4542,7 +4542,12 @@ func TestPrebuiltExportDexImplementationJars(t *testing.T) { } func TestBootDexJarsFromSourcesAndPrebuilts(t *testing.T) { preparer := java.FixtureConfigureBootJars("myapex:libfoo", "myapex:libbar") preparer := android.GroupFixturePreparers( java.FixtureConfigureBootJars("myapex:libfoo", "myapex:libbar"), // Make sure that the frameworks/base/Android.bp file exists as otherwise hidden API encoding // is disabled. android.FixtureAddTextFile("frameworks/base/Android.bp", ""), ) checkBootDexJarPath := func(t *testing.T, ctx *android.TestContext, stem string, bootDexJarPath string) { t.Helper() Loading java/hiddenapi.go +7 −5 Original line number Diff line number Diff line Loading @@ -92,6 +92,12 @@ func (h *hiddenAPI) initHiddenAPI(ctx android.BaseModuleContext, configurationNa h.configurationName = configurationName // If the frameworks/base directories does not exist and no prebuilt hidden API flag files have // been configured then it is not possible to do hidden API encoding. if !ctx.Config().FrameworksBaseDirExists(ctx) && ctx.Config().PrebuiltHiddenApiDir(ctx) == "" { return } // It is important that hiddenapi information is only gathered for/from modules that are actually // on the boot jars list because the runtime only enforces access to the hidden API for the // bootclassloader. If information is gathered for modules not on the list then that will cause Loading Loading @@ -303,11 +309,7 @@ func hiddenAPIEncodeDex(ctx android.ModuleContext, output android.WritablePath, } enforceHiddenApiFlagsToAllMembers := true // If frameworks/base doesn't exist we must be building with the 'master-art' manifest. // Disable assertion that all methods/fields have hidden API flags assigned. if !ctx.Config().FrameworksBaseDirExists(ctx) { enforceHiddenApiFlagsToAllMembers = false } // b/149353192: when a module is instrumented, jacoco adds synthetic members // $jacocoData and $jacocoInit. Since they don't exist when building the hidden API flags, // don't complain when we don't find hidden API flags for the synthetic members. Loading java/hiddenapi_singleton.go +2 −34 Original line number Diff line number Diff line Loading @@ -117,7 +117,6 @@ func hiddenAPISingletonFactory() android.Singleton { } type hiddenAPISingleton struct { flags android.Path } // hiddenAPI singleton rules Loading @@ -136,17 +135,10 @@ func (h *hiddenAPISingleton) GenerateBuildActions(ctx android.SingletonContext) // consistency. if ctx.Config().PrebuiltHiddenApiDir(ctx) != "" { h.flags = prebuiltFlagsRule(ctx) prebuiltFlagsRule(ctx) prebuiltIndexRule(ctx) return } // These rules depend on files located in frameworks/base, skip them if running in a tree that doesn't have them. if ctx.Config().FrameworksBaseDirExists(ctx) { h.flags = flagsRule(ctx) } else { h.flags = emptyFlagsRule(ctx) } } // Checks to see whether the supplied module variant is in the list of boot jars. Loading Loading @@ -187,7 +179,7 @@ func isModuleInConfiguredList(ctx android.BaseModuleContext, module android.Modu return true } func prebuiltFlagsRule(ctx android.SingletonContext) android.Path { func prebuiltFlagsRule(ctx android.SingletonContext) { outputPath := hiddenAPISingletonPaths(ctx).flags inputPath := android.PathForSource(ctx, ctx.Config().PrebuiltHiddenApiDir(ctx), "hiddenapi-flags.csv") Loading @@ -196,8 +188,6 @@ func prebuiltFlagsRule(ctx android.SingletonContext) android.Path { Output: outputPath, Input: inputPath, }) return outputPath } func prebuiltIndexRule(ctx android.SingletonContext) { Loading @@ -211,28 +201,6 @@ func prebuiltIndexRule(ctx android.SingletonContext) { }) } // flagsRule is a placeholder that simply returns the location of the file, the generation of the // ninja rules is done in generateHiddenAPIBuildActions. func flagsRule(ctx android.SingletonContext) android.Path { outputPath := hiddenAPISingletonPaths(ctx).flags return outputPath } // emptyFlagsRule creates a rule to build an empty hiddenapi-flags.csv, which is needed by master-art-host builds that // have a partial manifest without frameworks/base but still need to build a boot image. func emptyFlagsRule(ctx android.SingletonContext) android.Path { rule := android.NewRuleBuilder(pctx, ctx) outputPath := hiddenAPISingletonPaths(ctx).flags rule.Command().Text("rm").Flag("-f").Output(outputPath) rule.Command().Text("touch").Output(outputPath) rule.Build("emptyHiddenAPIFlagsFile", "empty hiddenapi flags") return outputPath } // tempPathForRestat creates a path of the same type as the supplied type but with a name of // <path>.tmp. // Loading java/hiddenapi_singleton_test.go +1 −4 Original line number Diff line number Diff line Loading @@ -60,10 +60,7 @@ func TestHiddenAPISingleton(t *testing.T) { } func TestHiddenAPISingletonWithSourceAndPrebuiltPreferredButNoDex(t *testing.T) { expectedErrorMessage := "hiddenapi has determined that the source module \"foo\" should be ignored as it has been" + " replaced by the prebuilt module \"prebuilt_foo\" but unfortunately it does not provide a" + " suitable boot dex jar" expectedErrorMessage := "module prebuilt_foo{os:android,arch:common} does not provide a dex jar" android.GroupFixturePreparers( hiddenApiFixtureFactory, Loading Loading
apex/apex_test.go +6 −1 Original line number Diff line number Diff line Loading @@ -4542,7 +4542,12 @@ func TestPrebuiltExportDexImplementationJars(t *testing.T) { } func TestBootDexJarsFromSourcesAndPrebuilts(t *testing.T) { preparer := java.FixtureConfigureBootJars("myapex:libfoo", "myapex:libbar") preparer := android.GroupFixturePreparers( java.FixtureConfigureBootJars("myapex:libfoo", "myapex:libbar"), // Make sure that the frameworks/base/Android.bp file exists as otherwise hidden API encoding // is disabled. android.FixtureAddTextFile("frameworks/base/Android.bp", ""), ) checkBootDexJarPath := func(t *testing.T, ctx *android.TestContext, stem string, bootDexJarPath string) { t.Helper() Loading
java/hiddenapi.go +7 −5 Original line number Diff line number Diff line Loading @@ -92,6 +92,12 @@ func (h *hiddenAPI) initHiddenAPI(ctx android.BaseModuleContext, configurationNa h.configurationName = configurationName // If the frameworks/base directories does not exist and no prebuilt hidden API flag files have // been configured then it is not possible to do hidden API encoding. if !ctx.Config().FrameworksBaseDirExists(ctx) && ctx.Config().PrebuiltHiddenApiDir(ctx) == "" { return } // It is important that hiddenapi information is only gathered for/from modules that are actually // on the boot jars list because the runtime only enforces access to the hidden API for the // bootclassloader. If information is gathered for modules not on the list then that will cause Loading Loading @@ -303,11 +309,7 @@ func hiddenAPIEncodeDex(ctx android.ModuleContext, output android.WritablePath, } enforceHiddenApiFlagsToAllMembers := true // If frameworks/base doesn't exist we must be building with the 'master-art' manifest. // Disable assertion that all methods/fields have hidden API flags assigned. if !ctx.Config().FrameworksBaseDirExists(ctx) { enforceHiddenApiFlagsToAllMembers = false } // b/149353192: when a module is instrumented, jacoco adds synthetic members // $jacocoData and $jacocoInit. Since they don't exist when building the hidden API flags, // don't complain when we don't find hidden API flags for the synthetic members. Loading
java/hiddenapi_singleton.go +2 −34 Original line number Diff line number Diff line Loading @@ -117,7 +117,6 @@ func hiddenAPISingletonFactory() android.Singleton { } type hiddenAPISingleton struct { flags android.Path } // hiddenAPI singleton rules Loading @@ -136,17 +135,10 @@ func (h *hiddenAPISingleton) GenerateBuildActions(ctx android.SingletonContext) // consistency. if ctx.Config().PrebuiltHiddenApiDir(ctx) != "" { h.flags = prebuiltFlagsRule(ctx) prebuiltFlagsRule(ctx) prebuiltIndexRule(ctx) return } // These rules depend on files located in frameworks/base, skip them if running in a tree that doesn't have them. if ctx.Config().FrameworksBaseDirExists(ctx) { h.flags = flagsRule(ctx) } else { h.flags = emptyFlagsRule(ctx) } } // Checks to see whether the supplied module variant is in the list of boot jars. Loading Loading @@ -187,7 +179,7 @@ func isModuleInConfiguredList(ctx android.BaseModuleContext, module android.Modu return true } func prebuiltFlagsRule(ctx android.SingletonContext) android.Path { func prebuiltFlagsRule(ctx android.SingletonContext) { outputPath := hiddenAPISingletonPaths(ctx).flags inputPath := android.PathForSource(ctx, ctx.Config().PrebuiltHiddenApiDir(ctx), "hiddenapi-flags.csv") Loading @@ -196,8 +188,6 @@ func prebuiltFlagsRule(ctx android.SingletonContext) android.Path { Output: outputPath, Input: inputPath, }) return outputPath } func prebuiltIndexRule(ctx android.SingletonContext) { Loading @@ -211,28 +201,6 @@ func prebuiltIndexRule(ctx android.SingletonContext) { }) } // flagsRule is a placeholder that simply returns the location of the file, the generation of the // ninja rules is done in generateHiddenAPIBuildActions. func flagsRule(ctx android.SingletonContext) android.Path { outputPath := hiddenAPISingletonPaths(ctx).flags return outputPath } // emptyFlagsRule creates a rule to build an empty hiddenapi-flags.csv, which is needed by master-art-host builds that // have a partial manifest without frameworks/base but still need to build a boot image. func emptyFlagsRule(ctx android.SingletonContext) android.Path { rule := android.NewRuleBuilder(pctx, ctx) outputPath := hiddenAPISingletonPaths(ctx).flags rule.Command().Text("rm").Flag("-f").Output(outputPath) rule.Command().Text("touch").Output(outputPath) rule.Build("emptyHiddenAPIFlagsFile", "empty hiddenapi flags") return outputPath } // tempPathForRestat creates a path of the same type as the supplied type but with a name of // <path>.tmp. // Loading
java/hiddenapi_singleton_test.go +1 −4 Original line number Diff line number Diff line Loading @@ -60,10 +60,7 @@ func TestHiddenAPISingleton(t *testing.T) { } func TestHiddenAPISingletonWithSourceAndPrebuiltPreferredButNoDex(t *testing.T) { expectedErrorMessage := "hiddenapi has determined that the source module \"foo\" should be ignored as it has been" + " replaced by the prebuilt module \"prebuilt_foo\" but unfortunately it does not provide a" + " suitable boot dex jar" expectedErrorMessage := "module prebuilt_foo{os:android,arch:common} does not provide a dex jar" android.GroupFixturePreparers( hiddenApiFixtureFactory, Loading