diff options
Diffstat (limited to 'java')
| -rw-r--r-- | java/androidmk.go | 12 | ||||
| -rw-r--r-- | java/app.go | 18 | ||||
| -rw-r--r-- | java/app_test.go | 16 |
3 files changed, 31 insertions, 15 deletions
diff --git a/java/androidmk.go b/java/androidmk.go index 39c2d1342..90fdd0f77 100644 --- a/java/androidmk.go +++ b/java/androidmk.go @@ -327,6 +327,18 @@ func (app *AndroidApp) AndroidMk() android.AndroidMkData { install := "$(LOCAL_MODULE_PATH)/" + strings.TrimSuffix(app.installApkName, ".apk") + split.suffix + ".apk" fmt.Fprintln(w, "LOCAL_SOONG_BUILT_INSTALLED +=", split.path.String()+":"+install) } + if app.noticeOutputs.Merged.Valid() { + fmt.Fprintf(w, "$(call dist-for-goals,%s,%s:%s)\n", + app.installApkName, app.noticeOutputs.Merged.String(), app.installApkName+"_NOTICE") + } + if app.noticeOutputs.TxtOutput.Valid() { + fmt.Fprintf(w, "$(call dist-for-goals,%s,%s:%s)\n", + app.installApkName, app.noticeOutputs.TxtOutput.String(), app.installApkName+"_NOTICE.txt") + } + if app.noticeOutputs.HtmlOutput.Valid() { + fmt.Fprintf(w, "$(call dist-for-goals,%s,%s:%s)\n", + app.installApkName, app.noticeOutputs.HtmlOutput.String(), app.installApkName+"_NOTICE.html") + } }, }, } diff --git a/java/app.go b/java/app.go index f58b0f836..e12b56c58 100644 --- a/java/app.go +++ b/java/app.go @@ -141,6 +141,8 @@ type AndroidApp struct { installApkName string additionalAaptFlags []string + + noticeOutputs android.NoticeOutputs } func (a *AndroidApp) ExportedProguardFlagFiles() android.Paths { @@ -357,11 +359,7 @@ func (a *AndroidApp) jniBuildActions(jniLibs []jniLib, ctx android.ModuleContext return jniJarFile } -func (a *AndroidApp) noticeBuildActions(ctx android.ModuleContext, installDir android.OutputPath) android.OptionalPath { - if !Bool(a.appProperties.Embed_notices) && !ctx.Config().IsEnvTrue("ALWAYS_EMBED_NOTICES") { - return android.OptionalPath{} - } - +func (a *AndroidApp) noticeBuildActions(ctx android.ModuleContext, installDir android.OutputPath) { // Collect NOTICE files from all dependencies. seenModules := make(map[android.Module]bool) noticePathSet := make(map[android.Path]bool) @@ -391,7 +389,7 @@ func (a *AndroidApp) noticeBuildActions(ctx android.ModuleContext, installDir an } if len(noticePathSet) == 0 { - return android.OptionalPath{} + return } var noticePaths []android.Path for path := range noticePathSet { @@ -400,9 +398,8 @@ func (a *AndroidApp) noticeBuildActions(ctx android.ModuleContext, installDir an sort.Slice(noticePaths, func(i, j int) bool { return noticePaths[i].String() < noticePaths[j].String() }) - noticeFile := android.BuildNoticeOutput(ctx, installDir, a.installApkName+".apk", noticePaths) - return android.OptionalPathForPath(noticeFile) + a.noticeOutputs = android.BuildNoticeOutput(ctx, installDir, a.installApkName+".apk", noticePaths) } // Reads and prepends a main cert from the default cert dir if it hasn't been set already, i.e. it @@ -455,7 +452,10 @@ func (a *AndroidApp) generateAndroidBuildActions(ctx android.ModuleContext) { installDir = android.PathForModuleInstall(ctx, "app", a.installApkName) } - a.aapt.noticeFile = a.noticeBuildActions(ctx, installDir) + a.noticeBuildActions(ctx, installDir) + if Bool(a.appProperties.Embed_notices) || ctx.Config().IsEnvTrue("ALWAYS_EMBED_NOTICES") { + a.aapt.noticeFile = a.noticeOutputs.HtmlGzOutput + } // Process all building blocks, from AAPT to certificates. a.aaptBuildActions(ctx) diff --git a/java/app_test.go b/java/app_test.go index c7ea338b1..721dd4dc2 100644 --- a/java/app_test.go +++ b/java/app_test.go @@ -1479,16 +1479,20 @@ func TestEmbedNotice(t *testing.T) { // bar has NOTICE files to process, but embed_notices is not set. bar := ctx.ModuleForTests("bar", "android_common") - mergeNotices = bar.MaybeRule("mergeNoticesRule") - if mergeNotices.Rule != nil { - t.Errorf("mergeNotices shouldn't have run for bar") + res = bar.Output("package-res.apk") + aapt2Flags = res.Args["flags"] + e = "-A " + buildDir + "/.intermediates/bar/android_common/NOTICE" + if strings.Contains(aapt2Flags, e) { + t.Errorf("bar shouldn't have the asset dir flag for NOTICE: %q", e) } // baz's embed_notice is true, but it doesn't have any NOTICE files. baz := ctx.ModuleForTests("baz", "android_common") - mergeNotices = baz.MaybeRule("mergeNoticesRule") - if mergeNotices.Rule != nil { - t.Errorf("mergeNotices shouldn't have run for baz") + res = baz.Output("package-res.apk") + aapt2Flags = res.Args["flags"] + e = "-A " + buildDir + "/.intermediates/baz/android_common/NOTICE" + if strings.Contains(aapt2Flags, e) { + t.Errorf("baz shouldn't have the asset dir flag for NOTICE: %q", e) } } |
