diff --git a/java/droiddoc.go b/java/droiddoc.go
index 6a66f45..df40d01 100644
--- a/java/droiddoc.go
+++ b/java/droiddoc.go
@@ -222,6 +222,8 @@
 	stubsSrcJar android.WritablePath
 
 	exportableStubsSrcJar android.WritablePath
+
+	runtimeStubsSrcJar android.WritablePath
 }
 
 func (j *Javadoc) OutputFiles(tag string) (android.Paths, error) {
diff --git a/java/droidstubs.go b/java/droidstubs.go
index 6ca59d1..b112614 100644
--- a/java/droidstubs.go
+++ b/java/droidstubs.go
@@ -214,6 +214,7 @@
 type annotationFlagsParams struct {
 	migratingNullability    bool
 	validatingNullability   bool
+	extractAnnotations      bool
 	nullabilityWarningsFile android.WritablePath
 	annotationsZip          android.WritablePath
 }
@@ -241,6 +242,7 @@
 	validatingNullability       bool
 	annotationsEnabled          bool
 	apiLevelsAnnotationsEnabled bool
+	extractAnnotations          bool
 }
 
 // droidstubs passes sources files through Metalava to generate stub .java files that only contain the API to be
@@ -525,7 +527,9 @@
 		cmd.FlagWithOutput("--nullability-warnings-txt ", params.nullabilityWarningsFile)
 	}
 
-	cmd.FlagWithOutput("--extract-annotations ", params.annotationsZip)
+	if params.extractAnnotations {
+		cmd.FlagWithOutput("--extract-annotations ", params.annotationsZip)
+	}
 
 	if len(d.properties.Merge_annotations_dirs) != 0 {
 		d.mergeAnnoDirFlags(ctx, cmd)
@@ -571,7 +575,9 @@
 				} else if stubsType == Exportable {
 					apiVersions = s.exportableArtifacts.apiVersionsXml
 				} else {
-					ctx.ModuleErrorf("%s stubs type does not generate api-versions.xml file", stubsType.String())
+					// if the stubs type does not generate api-versions.xml file, default to using the
+					// everything artifacts
+					apiVersions = s.everythingArtifacts.apiVersionsXml
 				}
 			} else {
 				ctx.PropertyErrorf("api_levels_module",
@@ -805,6 +811,7 @@
 	annotationParams := annotationFlagsParams{
 		migratingNullability:    params.stubConfig.migratingNullability,
 		validatingNullability:   params.stubConfig.validatingNullability,
+		extractAnnotations:      params.stubConfig.extractAnnotations,
 		nullabilityWarningsFile: params.nullabilityWarningsFile,
 		annotationsZip:          params.annotationsZip,
 	}
@@ -1053,6 +1060,38 @@
 	d.optionalStubCmd(ctx, optionalCmdParams)
 }
 
+// Sandbox rule for generating runtime stubs
+func (d *Droidstubs) runtimeStubCmd(ctx android.ModuleContext, params stubsCommandConfigParams) {
+
+	// We are only interested in generating the stubs srcjar,
+	// not other artifacts for the runtime stubs
+	params.checkApi = false
+	params.writeSdkValues = false
+	params.validatingNullability = false
+	params.extractAnnotations = false
+	params.apiLevelsAnnotationsEnabled = false
+
+	optionalCmdParams := stubsCommandParams{
+		stubConfig: params,
+	}
+
+	d.Javadoc.runtimeStubsSrcJar = android.PathForModuleOut(ctx, params.stubsType.String(), ctx.ModuleName()+"-"+"stubs.srcjar")
+	optionalCmdParams.stubsSrcJar = d.Javadoc.runtimeStubsSrcJar
+
+	// If aconfig_declarations property is not defined, all flagged apis symbols are stripped
+	// as no aconfig flags are enabled. In such case, the runtime stubs are identical to the
+	// exportable stubs, thus no additional metalava invocation is needed.
+	if len(d.properties.Aconfig_declarations) == 0 {
+		rule := android.NewRuleBuilder(pctx, ctx)
+		rule.Command().
+			Text("cp").Flag("-f").
+			Input(d.exportableStubsSrcJar).Output(d.runtimeStubsSrcJar)
+		rule.Build(fmt.Sprintf("metalava_%s", params.stubsType.String()), "metalava merged")
+	} else {
+		d.optionalStubCmd(ctx, optionalCmdParams)
+	}
+}
+
 func (d *Droidstubs) optionalStubCmd(ctx android.ModuleContext, params stubsCommandParams) {
 
 	params.srcJarDir = android.PathForModuleOut(ctx, params.stubConfig.stubsType.String(), "srcjars")
@@ -1124,6 +1163,8 @@
 
 	annotationsEnabled := Bool(d.properties.Annotations_enabled)
 
+	extractAnnotations := annotationsEnabled
+
 	migratingNullability := annotationsEnabled && String(d.properties.Previous_api) != ""
 	validatingNullability := annotationsEnabled && (strings.Contains(String(d.Javadoc.properties.Args), "--validate-nullability-from-merged-stubs") ||
 		String(d.properties.Validate_nullability_from_list) != "")
@@ -1145,17 +1186,26 @@
 		validatingNullability:       validatingNullability,
 		annotationsEnabled:          annotationsEnabled,
 		apiLevelsAnnotationsEnabled: apiLevelsAnnotationsEnabled,
+		extractAnnotations:          extractAnnotations,
 	}
 	stubCmdParams.stubsType = Everything
 	// Create default (i.e. "everything" stubs) rule for metalava
 	d.everythingStubCmd(ctx, stubCmdParams)
 
-	// The module generates "exportable" (and "runtime" eventually) stubs regardless of whether
+	// The module generates "exportable" stubs regardless of whether
 	// aconfig_declarations property is defined or not. If the property is not defined, the module simply
 	// strips all flagged apis to generate the "exportable" stubs
 	stubCmdParams.stubsType = Exportable
 	d.exportableStubCmd(ctx, stubCmdParams)
 
+	// "runtime" stubs do not generate any other artifacts than the stubs.
+	// Therefore, metalava does not have to run for "runtime" configuration
+	// when the module does not generate stubs.
+	if stubCmdParams.generateStubs {
+		stubCmdParams.stubsType = Runtime
+		d.runtimeStubCmd(ctx, stubCmdParams)
+	}
+
 	if apiCheckEnabled(ctx, d.properties.Check_api.Current, "current") {
 
 		if len(d.Javadoc.properties.Out) > 0 {
diff --git a/java/droidstubs_test.go b/java/droidstubs_test.go
index e5ffd28..ca34e0e 100644
--- a/java/droidstubs_test.go
+++ b/java/droidstubs_test.go
@@ -396,23 +396,47 @@
 			"bar",
 		],
 	}
+	droidstubs {
+		name: "baz",
+		srcs: ["a/A.java"],
+		api_surface: "public",
+		check_api: {
+			current: {
+				api_file: "a/current.txt",
+				removed_api_file: "a/removed.txt",
+			}
+		},
+	}
 	`)
 
 	// Check that droidstubs depend on aconfig_declarations
 	android.AssertBoolEquals(t, "foo expected to depend on bar",
 		CheckModuleHasDependency(t, result.TestContext, "foo", "android_common", "bar"), true)
 
-	m := result.ModuleForTests("foo", "android_common")
+	fooModule := result.ModuleForTests("foo", "android_common")
 	android.AssertStringDoesContain(t, "foo generates revert annotations file",
-		strings.Join(m.AllOutputs(), ""), "revert-annotations-exportable.txt")
+		strings.Join(fooModule.AllOutputs(), ""), "revert-annotations-exportable.txt")
 
 	// revert-annotations.txt passed to exportable stubs generation metalava command
-	manifest := m.Output("metalava_exportable.sbox.textproto")
-	cmdline := String(android.RuleBuilderSboxProtoForTests(t, result.TestContext, manifest).Commands[0].Command)
-	android.AssertStringDoesContain(t, "flagged api hide command not included", cmdline, "revert-annotations-exportable.txt")
+	exportableManifest := fooModule.Output("metalava_exportable.sbox.textproto")
+	exportableCmdline := String(android.RuleBuilderSboxProtoForTests(t, result.TestContext, exportableManifest).Commands[0].Command)
+	android.AssertStringDoesContain(t, "flagged api hide command not included", exportableCmdline, "revert-annotations-exportable.txt")
 
 	android.AssertStringDoesContain(t, "foo generates exportable stubs jar",
-		strings.Join(m.AllOutputs(), ""), "exportable/foo-stubs.srcjar")
+		strings.Join(fooModule.AllOutputs(), ""), "exportable/foo-stubs.srcjar")
+
+	// revert-annotations.txt passed to runtime stubs generation metalava command
+	runtimeManifest := fooModule.Output("metalava_runtime.sbox.textproto")
+	runtimeCmdline := String(android.RuleBuilderSboxProtoForTests(t, result.TestContext, runtimeManifest).Commands[0].Command)
+	android.AssertStringDoesContain(t, "flagged api hide command not included", runtimeCmdline, "revert-annotations-runtime.txt")
+
+	android.AssertStringDoesContain(t, "foo generates runtime stubs jar",
+		strings.Join(fooModule.AllOutputs(), ""), "runtime/foo-stubs.srcjar")
+
+	// If aconfig_declarations property is not defined, the runtime stubs is a copy of the exportable stubs
+	bazModule := result.ModuleForTests("baz", "android_common")
+	bazRuntimeCmdline := bazModule.Rule("metalava_runtime").RuleParams.Command
+	android.AssertStringDoesContain(t, "copy command should include the input stub", bazRuntimeCmdline, "exportable/baz-stubs.srcjar")
 }
 
 func TestReleaseExportRuntimeApis(t *testing.T) {
