Embed NOTICE output as an APEX asset.

Instead of outputting an aggregated NOTICE file as an intermediate build
resource to allow Make to include it in the final system-wide NOTICE,
process and embed it as an asset in the final APEX. This allows us to
update the NOTICE contents automatically when an APEX is updated.

Fixes: 135218846
Test: Built mainline modules, apex_test.go
Change-Id: Ic851b330fe93be1f602907d44ecc7886c3b0171b
diff --git a/apex/apex_test.go b/apex/apex_test.go
index f73be20..5332f6b 100644
--- a/apex/apex_test.go
+++ b/apex/apex_test.go
@@ -27,8 +27,11 @@
 	"android/soong/java"
 )
 
+var buildDir string
+
 func testApex(t *testing.T, bp string) *android.TestContext {
-	config, buildDir := setup(t)
+	var config android.Config
+	config, buildDir = setup(t)
 	defer teardown(buildDir)
 
 	ctx := android.NewTestArchContext()
@@ -310,6 +313,8 @@
 
 	optFlags := apexRule.Args["opt_flags"]
 	ensureContains(t, optFlags, "--pubkey vendor/foo/devkeys/testkey.avbpubkey")
+	// Ensure that the NOTICE output is being packaged as an asset.
+	ensureContains(t, optFlags, "--assets_dir "+buildDir+"/.intermediates/myapex/android_common_myapex/NOTICE")
 
 	copyCmds := apexRule.Args["copy_commands"]
 
@@ -349,8 +354,8 @@
 
 	mergeNoticesRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("mergeNoticesRule")
 	noticeInputs := mergeNoticesRule.Inputs.Strings()
-	if len(noticeInputs) != 4 {
-		t.Errorf("number of input notice files: expected = 4, actual = %q", len(noticeInputs))
+	if len(noticeInputs) != 2 {
+		t.Errorf("number of input notice files: expected = 2, actual = %q", len(noticeInputs))
 	}
 	ensureListContains(t, noticeInputs, "NOTICE")
 	ensureListContains(t, noticeInputs, "custom_notice")