Support package_splits

Pass the package_splits list from the property to aapt2 as
--split arguments, sign the extra outputs, install them, and
add them as extra output files for SourceFileProducer.

Bug: 127921149
Test: TestAppSplits
Change-Id: Id94a53ae6a8a68ec81e98abba2fefc9c23feaa7a
diff --git a/java/app_test.go b/java/app_test.go
index 1784fc3..3942ecd 100644
--- a/java/app_test.go
+++ b/java/app_test.go
@@ -106,6 +106,30 @@
 	}
 }
 
+func TestAppSplits(t *testing.T) {
+	ctx := testApp(t, `
+				android_app {
+					name: "foo",
+					srcs: ["a.java"],
+					package_splits: ["v4", "v7,hdpi"],
+				}`)
+
+	foo := ctx.ModuleForTests("foo", "android_common")
+
+	expectedOutputs := []string{
+		filepath.Join(buildDir, ".intermediates/foo/android_common/foo.apk"),
+		filepath.Join(buildDir, ".intermediates/foo/android_common/foo_v4.apk"),
+		filepath.Join(buildDir, ".intermediates/foo/android_common/foo_v7_hdpi.apk"),
+	}
+	for _, expectedOutput := range expectedOutputs {
+		foo.Output(expectedOutput)
+	}
+
+	if g, w := foo.Module().(*AndroidApp).Srcs().Strings(), expectedOutputs; !reflect.DeepEqual(g, w) {
+		t.Errorf("want Srcs() = %q, got %q", w, g)
+	}
+}
+
 func TestResourceDirs(t *testing.T) {
 	testCases := []struct {
 		name      string