Support overrides for android_app

Test: use it
Change-Id: I61b933b757081f08a417e66a8c02d62916bd3f8b
diff --git a/java/androidmk.go b/java/androidmk.go
index 04e92c9..544322e 100644
--- a/java/androidmk.go
+++ b/java/androidmk.go
@@ -232,6 +232,9 @@
 				}
 
 				fmt.Fprintln(w, "LOCAL_CERTIFICATE :=", app.certificate.pem.String())
+				if len(app.appProperties.Overrides) > 0 {
+					fmt.Fprintln(w, "LOCAL_OVERRIDES_PACKAGES := "+strings.Join(app.appProperties.Overrides, " "))
+				}
 			},
 		},
 	}
diff --git a/java/app.go b/java/app.go
index 9e7530e..ef591b7 100644
--- a/java/app.go
+++ b/java/app.go
@@ -51,6 +51,13 @@
 
 	// list of resource labels to generate individual resource packages
 	Package_splits []string
+
+	// Names of modules to be overridden. Listed modules can only be other binaries
+	// (in Make or Soong).
+	// This does not completely prevent installation of the overridden binaries, but if both
+	// binaries would be installed by default (in PRODUCT_PACKAGES) the other binary will be removed
+	// from PRODUCT_PACKAGES.
+	Overrides []string
 }
 
 type AndroidApp struct {