diff --git a/api/api.go b/api/api.go
index 14fe09e..3b0e300 100644
--- a/api/api.go
+++ b/api/api.go
@@ -21,6 +21,7 @@
 
 	"android/soong/android"
 	"android/soong/genrule"
+	"android/soong/java"
 )
 
 const art = "art.module.public.api"
@@ -73,6 +74,13 @@
 	Visibility []string
 }
 
+type libraryProps struct {
+	Name        *string
+	Sdk_version *string
+	Static_libs []string
+	Visibility  []string
+}
+
 // Struct to pass parameters for the various merged [current|removed].txt file modules we create.
 type MergedTxtDefinition struct {
 	// "current.txt" or "removed.txt"
@@ -169,6 +177,25 @@
 	ctx.CreateModule(genrule.GenRuleFactory, &props)
 }
 
+func createMergedModuleLibStubs(ctx android.LoadHookContext, modules []string) {
+	// The user of this module compiles against the "core" SDK, so remove core libraries to avoid dupes.
+	modules = removeAll(modules, []string{art, conscrypt, i18n})
+	props := libraryProps{}
+	props.Name = proptools.StringPtr("framework-updatable-stubs-module_libs_api")
+	props.Static_libs = appendStr(modules, ".stubs.module_lib")
+	props.Sdk_version = proptools.StringPtr("module_current")
+	props.Visibility = []string{"//frameworks/base"}
+	ctx.CreateModule(java.LibraryFactory, &props)
+}
+
+func appendStr(modules []string, s string) []string {
+	a := make([]string, 0, len(modules))
+	for _, module := range modules {
+		a = append(a, module+s)
+	}
+	return a
+}
+
 func createSrcs(base string, modules []string, tag string) []string {
 	a := make([]string, 0, len(modules)+1)
 	a = append(a, base)
@@ -246,6 +273,8 @@
 
 	createMergedStubsSrcjar(ctx, bootclasspath)
 
+	createMergedModuleLibStubs(ctx, bootclasspath)
+
 	createMergedAnnotations(ctx, bootclasspath)
 
 	createFilteredApiVersions(ctx, bootclasspath)
