Merge "Change position of R8/D8 flags on the command line." into main
diff --git a/genrule/allowlists.go b/genrule/allowlists.go
index d6620bc..9e37a09 100644
--- a/genrule/allowlists.go
+++ b/genrule/allowlists.go
@@ -40,7 +40,6 @@
"deqp_spvtools_update_build_version",
"gen_corrupt_rebootless_apex",
"gen_key_mismatch_capex",
- "libbssl_sys_src_nostd",
"libc_musl_sysroot_bits",
"libcore-non-cts-tests-txt",
"pvmfw_fdt_template_rs",
diff --git a/java/sdk_library.go b/java/sdk_library.go
index fb27812..fbfe509 100644
--- a/java/sdk_library.go
+++ b/java/sdk_library.go
@@ -1993,6 +1993,7 @@
Min_device_sdk *string
Max_device_sdk *string
Sdk_library_min_api_level *string
+ Uses_libs_dependencies []string
}{
Name: proptools.StringPtr(module.xmlPermissionsModuleName()),
Lib_name: proptools.StringPtr(module.BaseModuleName()),
@@ -2002,6 +2003,7 @@
Min_device_sdk: module.commonSdkLibraryProperties.Min_device_sdk,
Max_device_sdk: module.commonSdkLibraryProperties.Max_device_sdk,
Sdk_library_min_api_level: &moduleMinApiLevelStr,
+ Uses_libs_dependencies: module.usesLibraryProperties.Uses_libs,
}
mctx.CreateModule(sdkLibraryXmlFactory, &props)
@@ -2968,6 +2970,11 @@
//
// This value comes from the ApiLevel of the MinSdkVersion property.
Sdk_library_min_api_level *string
+
+ // Uses-libs dependencies that the shared library requires to work correctly.
+ //
+ // This will add dependency="foo:bar" to the <library> section.
+ Uses_libs_dependencies []string
}
// java_sdk_library_xml builds the permission xml file for a java_sdk_library.
@@ -3076,6 +3083,13 @@
return fmt.Sprintf(` %s=\"%s\"\n`, attrName, *value)
}
+func formattedDependenciesAttribute(dependencies []string) string {
+ if dependencies == nil {
+ return ""
+ }
+ return fmt.Sprintf(` dependency=\"%s\"\n`, strings.Join(dependencies, ":"))
+}
+
func (module *sdkLibraryXml) permissionsContents(ctx android.ModuleContext) string {
libName := proptools.String(module.properties.Lib_name)
libNameAttr := formattedOptionalAttribute("name", &libName)
@@ -3085,6 +3099,7 @@
implicitUntilAttr := formattedOptionalSdkLevelAttribute(ctx, "on-bootclasspath-before", module.properties.On_bootclasspath_before)
minSdkAttr := formattedOptionalSdkLevelAttribute(ctx, "min-device-sdk", module.properties.Min_device_sdk)
maxSdkAttr := formattedOptionalSdkLevelAttribute(ctx, "max-device-sdk", module.properties.Max_device_sdk)
+ dependenciesAttr := formattedDependenciesAttribute(module.properties.Uses_libs_dependencies)
// <library> is understood in all android versions whereas <apex-library> is only understood from API T (and ignored before that).
// similarly, min_device_sdk is only understood from T. So if a library is using that, we need to use the apex-library to make sure this library is not loaded before T
var libraryTag string
@@ -3118,6 +3133,7 @@
implicitUntilAttr,
minSdkAttr,
maxSdkAttr,
+ dependenciesAttr,
` />\n`,
`</permissions>\n`}, "")
}
diff --git a/java/sdk_library_test.go b/java/sdk_library_test.go
index 82f8a4d..a136818 100644
--- a/java/sdk_library_test.go
+++ b/java/sdk_library_test.go
@@ -1665,3 +1665,35 @@
}
`)
}
+
+func TestSdkLibraryDependency(t *testing.T) {
+ result := android.GroupFixturePreparers(
+ prepareForJavaTest,
+ PrepareForTestWithJavaSdkLibraryFiles,
+ FixtureWithPrebuiltApis(map[string][]string{
+ "30": {"bar", "foo"},
+ }),
+ ).RunTestWithBp(t,
+ `
+ java_sdk_library {
+ name: "foo",
+ srcs: ["a.java", "b.java"],
+ api_packages: ["foo"],
+ }
+
+ java_sdk_library {
+ name: "bar",
+ srcs: ["c.java", "b.java"],
+ libs: [
+ "foo",
+ ],
+ uses_libs: [
+ "foo",
+ ],
+ }
+`)
+
+ barPermissions := result.ModuleForTests("bar.xml", "android_common").Rule("java_sdk_xml")
+
+ android.AssertStringDoesContain(t, "bar.xml java_sdk_xml command", barPermissions.RuleParams.Command, `dependency=\"foo\"`)
+}