Merge "Add Android.mk lines for package name overriding."
diff --git a/java/androidmk.go b/java/androidmk.go
index 089ed4f..d86e71f 100644
--- a/java/androidmk.go
+++ b/java/androidmk.go
@@ -203,6 +203,11 @@
 		Include:    "$(BUILD_SYSTEM)/soong_app_prebuilt.mk",
 		Extra: []android.AndroidMkExtraFunc{
 			func(w io.Writer, outputFile android.Path) {
+				// TODO(jungjw): This, outputting two LOCAL_MODULE lines, works, but is not ideal. Find a better solution.
+				if app.Name() != app.installApkName {
+					fmt.Fprintln(w, "# Overridden by PRODUCT_PACKAGE_NAME_OVERRIDES")
+					fmt.Fprintln(w, "LOCAL_MODULE :=", app.installApkName)
+				}
 				fmt.Fprintln(w, "LOCAL_SOONG_RESOURCE_EXPORT_PACKAGE :=", app.exportPackage.String())
 				if app.dexJarFile != nil {
 					fmt.Fprintln(w, "LOCAL_SOONG_DEX_JAR :=", app.dexJarFile.String())
@@ -247,8 +252,8 @@
 				}
 
 				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, " "))
+				if overriddenPkgs := app.getOverriddenPackages(); len(overriddenPkgs) > 0 {
+					fmt.Fprintln(w, "LOCAL_OVERRIDES_PACKAGES :=", strings.Join(overriddenPkgs, " "))
 				}
 
 				for _, jniLib := range app.installJniLibs {
@@ -262,6 +267,17 @@
 	}
 }
 
+func (a *AndroidApp) getOverriddenPackages() []string {
+	var overridden []string
+	if len(a.appProperties.Overrides) > 0 {
+		overridden = append(overridden, a.appProperties.Overrides...)
+	}
+	if a.Name() != a.installApkName {
+		overridden = append(overridden, a.Name())
+	}
+	return overridden
+}
+
 func (a *AndroidTest) AndroidMk() android.AndroidMkData {
 	data := a.AndroidApp.AndroidMk()
 	data.Extra = append(data.Extra, func(w io.Writer, outputFile android.Path) {