diff --git a/apex/apex.go b/apex/apex.go
index 8f89ca6..9ab5187 100644
--- a/apex/apex.go
+++ b/apex/apex.go
@@ -1006,7 +1006,10 @@
 		if ctx.Config().FlattenApex() {
 			for _, fi := range a.filesInfo {
 				dir := filepath.Join("apex", ctx.ModuleName(), fi.installDir)
-				ctx.InstallFile(android.PathForModuleInstall(ctx, dir), fi.builtFile.Base(), fi.builtFile)
+				target := ctx.InstallFile(android.PathForModuleInstall(ctx, dir), fi.builtFile.Base(), fi.builtFile)
+				for _, sym := range fi.symlinks {
+					ctx.InstallSymlink(android.PathForModuleInstall(ctx, dir), sym, target)
+				}
 			}
 		}
 	}
@@ -1045,6 +1048,9 @@
 			// /system/apex/<name>/{lib|framework|...}
 			fmt.Fprintln(w, "LOCAL_MODULE_PATH :=", filepath.Join("$(OUT_DIR)",
 				a.installDir.RelPathString(), name, fi.installDir))
+			if len(fi.symlinks) > 0 {
+				fmt.Fprintln(w, "LOCAL_MODULE_SYMLINKS :=", strings.Join(fi.symlinks, " "))
+			}
 		} else {
 			// /apex/<name>/{lib|framework|...}
 			fmt.Fprintln(w, "LOCAL_MODULE_PATH :=", filepath.Join("$(PRODUCT_OUT)",
diff --git a/cmd/soong_build/writedocs.go b/cmd/soong_build/writedocs.go
index de2182f..e86ef82 100644
--- a/cmd/soong_build/writedocs.go
+++ b/cmd/soong_build/writedocs.go
@@ -108,14 +108,9 @@
 	}
 
 	// Produce the top-level, package list page first.
-	tmpl, err := template.New("file").Parse(packageListTemplate)
-	if err != nil {
-		return err
-	}
+	tmpl := template.Must(template.Must(template.New("file").Parse(packageListTemplate)).Parse(copyBaseUrl))
 	buf := &bytes.Buffer{}
-	if err == nil {
-		err = tmpl.Execute(buf, packages)
-	}
+	err = tmpl.Execute(buf, packages)
 	if err == nil {
 		err = ioutil.WriteFile(filename, buf.Bytes(), 0666)
 	}
@@ -125,18 +120,16 @@
 		// We need a module name getter/setter function because I couldn't
 		// find a way to keep it in a variable defined within the template.
 		currentModuleName := ""
-		tmpl, err := template.New("file").Funcs(map[string]interface{}{
-			"setModule": func(moduleName string) string {
-				currentModuleName = moduleName
-				return ""
-			},
-			"getModule": func() string {
-				return currentModuleName
-			},
-		}).Parse(perPackageTemplate)
-		if err != nil {
-			return err
-		}
+		tmpl := template.Must(
+			template.Must(template.New("file").Funcs(map[string]interface{}{
+				"setModule": func(moduleName string) string {
+					currentModuleName = moduleName
+					return ""
+				},
+				"getModule": func() string {
+					return currentModuleName
+				},
+			}).Parse(perPackageTemplate)).Parse(copyBaseUrl))
 		buf := &bytes.Buffer{}
 		modules := moduleTypeDocsToTemplates(pkg.ModuleTypes)
 		data := perPackageTemplateData{Name: pkg.Name, Modules: modules}
@@ -173,6 +166,7 @@
   word-wrap:break-word;
 }
 </style>
+{{template "copyBaseUrl"}}
 </head>
 <body>
 <div id="main">
@@ -203,9 +197,7 @@
 </body>
 </html>
 `
-)
 
-const (
 	perPackageTemplate = `
 <html>
 <head>
@@ -243,6 +235,7 @@
   color: white;
 }
 </style>
+{{template "copyBaseUrl"}}
 </head>
 <body>
 {{- /* Fixed sidebar with module types */ -}}
@@ -309,4 +302,23 @@
 </script>
 </body>
 `
+
+	copyBaseUrl = `
+{{define "copyBaseUrl"}}
+<script type="text/javascript">
+window.addEventListener('message', (e) => {
+  if (e != null && e.data != null && e.data.type === "SET_BASE" && e.data.base != null) {
+    const existingBase = document.querySelector('base');
+    if (existingBase != null) {
+      existingBase.parentElement.removeChild(existingBase);
+    }
+
+    const base = document.createElement('base');
+    base.setAttribute('href', e.data.base);
+    document.head.appendChild(base);
+  }
+});
+</script>
+{{end}}
+`
 )
