diff --git a/apex/apex_test.go b/apex/apex_test.go index babc27b43..5468c77bf 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -168,6 +168,7 @@ func testApexContext(t *testing.T, bp string, handlers ...testCustomizer) (*andr "vendor/foo/devkeys/testkey.pem": nil, "NOTICE": nil, "custom_notice": nil, + "custom_notice_for_static_lib": nil, "testkey2.avbpubkey": nil, "testkey2.pem": nil, "myapex-arm64.apex": nil, @@ -372,6 +373,20 @@ func TestBasicApex(t *testing.T) { system_shared_libs: [], stl: "none", notice: "custom_notice", + static_libs: ["libstatic"], + // TODO: remove //apex_available:platform + apex_available: [ + "//apex_available:platform", + "myapex", + ], + } + + cc_library_static { + name: "libstatic", + srcs: ["mylib.cpp"], + system_shared_libs: [], + stl: "none", + notice: "custom_notice_for_static_lib", // TODO: remove //apex_available:platform apex_available: [ "//apex_available:platform", @@ -470,11 +485,12 @@ func TestBasicApex(t *testing.T) { mergeNoticesRule := ctx.ModuleForTests("myapex", "android_common_myapex_image").Rule("mergeNoticesRule") noticeInputs := mergeNoticesRule.Inputs.Strings() - if len(noticeInputs) != 2 { - t.Errorf("number of input notice files: expected = 2, actual = %q", len(noticeInputs)) + if len(noticeInputs) != 3 { + t.Errorf("number of input notice files: expected = 3, actual = %q", len(noticeInputs)) } ensureListContains(t, noticeInputs, "NOTICE") ensureListContains(t, noticeInputs, "custom_notice") + ensureListContains(t, noticeInputs, "custom_notice_for_static_lib") depsInfo := strings.Split(ctx.ModuleForTests("myapex", "android_common_myapex_image").Output("myapex-deps-info.txt").Args["content"], "\\n") ensureListContains(t, depsInfo, "myjar <- myapex") diff --git a/apex/builder.go b/apex/builder.go index 40adfcab7..67bc20603 100644 --- a/apex/builder.go +++ b/apex/builder.go @@ -228,19 +228,15 @@ func (a *apexBundle) buildManifest(ctx android.ModuleContext, provideNativeLibs, } func (a *apexBundle) buildNoticeFiles(ctx android.ModuleContext, apexFileName string) android.NoticeOutputs { - noticeFiles := []android.Path{} - for _, f := range a.filesInfo { - if f.module != nil { - notices := f.module.NoticeFiles() - if len(notices) > 0 { - noticeFiles = append(noticeFiles, notices...) - } + var noticeFiles android.Paths + + a.walkPayloadDeps(ctx, func(ctx android.ModuleContext, from blueprint.Module, to android.ApexModule, externalDep bool) { + if externalDep { + return } - } - // append the notice file specified in the apex module itself - if len(a.NoticeFiles()) > 0 { - noticeFiles = append(noticeFiles, a.NoticeFiles()...) - } + notices := to.NoticeFiles() + noticeFiles = append(noticeFiles, notices...) + }) if len(noticeFiles) == 0 { return android.NoticeOutputs{}