Bp2build support for JNI deps of android_app.
Change-Id: I3f934ecb0323129e1bb1eb75527395e39467380d
Bug: 297405812
diff --git a/android/allowlists/allowlists.go b/android/allowlists/allowlists.go
index 5b77ba9..9997f54 100644
--- a/android/allowlists/allowlists.go
+++ b/android/allowlists/allowlists.go
@@ -852,6 +852,10 @@
"libstagefright_headers",
+ // Apps with JNI libs
+ "SimpleJNI",
+ "libsimplejni",
+
// aidl
"aidl",
"libaidl-common",
diff --git a/bp2build/android_app_conversion_test.go b/bp2build/android_app_conversion_test.go
index 0daa4fe..7f04e2a 100644
--- a/bp2build/android_app_conversion_test.go
+++ b/bp2build/android_app_conversion_test.go
@@ -16,6 +16,7 @@
import (
"android/soong/android"
+ "android/soong/cc"
"android/soong/java"
"testing"
@@ -29,6 +30,7 @@
func registerAndroidAppModuleTypes(ctx android.RegistrationContext) {
ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
ctx.RegisterModuleType("java_library", java.LibraryFactory)
+ ctx.RegisterModuleType("cc_library_shared", cc.LibrarySharedFactory)
}
func TestMinimalAndroidApp(t *testing.T) {
@@ -78,8 +80,9 @@
"manifest/AndroidManifest.xml": "",
"assets_/asset.png": "",
},
- StubbedBuildDefinitions: []string{"static_lib_dep"},
- Blueprint: simpleModule("android_app", "static_lib_dep") + `
+ StubbedBuildDefinitions: []string{"static_lib_dep", "jni_lib"},
+ Blueprint: simpleModule("android_app", "static_lib_dep") +
+ simpleModule("cc_library_shared", "jni_lib") + `
android_app {
name: "TestApp",
srcs: ["app.java"],
@@ -100,6 +103,7 @@
obfuscate: false,
ignore_warnings: true,
},
+ jni_libs: ["jni_lib"],
}
`,
ExpectedBazelTargets: []string{
@@ -110,10 +114,13 @@
"resa/res.png",
"resb/res.png",
]`,
- "assets": `["assets_/asset.png"]`,
- "assets_dir": `"assets_"`,
- "custom_package": `"com.google"`,
- "deps": `[":static_lib_dep"]`,
+ "assets": `["assets_/asset.png"]`,
+ "assets_dir": `"assets_"`,
+ "custom_package": `"com.google"`,
+ "deps": `[
+ ":static_lib_dep",
+ ":jni_lib",
+ ]`,
"java_version": `"7"`,
"sdk_version": `"current"`,
"certificate_name": `"foocert"`,
diff --git a/java/app.go b/java/app.go
index 2edd3f7..611d0a6 100755
--- a/java/app.go
+++ b/java/app.go
@@ -1716,6 +1716,20 @@
deps := depLabels.Deps
deps.Append(depLabels.StaticDeps)
+ var jniDeps bazel.LabelListAttribute
+ archVariantProps := a.GetArchVariantProperties(ctx, &appProperties{})
+ for axis, configToProps := range archVariantProps {
+ for config, _props := range configToProps {
+ if archProps, ok := _props.(*appProperties); ok {
+ archJniLibs := android.BazelLabelForModuleDeps(
+ ctx,
+ android.LastUniqueStrings(android.CopyOf(archProps.Jni_libs)))
+ jniDeps.SetSelectValue(axis, config, archJniLibs)
+ }
+ }
+ }
+ deps.Append(jniDeps)
+
if !bp2BuildInfo.hasKotlin {
appAttrs.javaCommonAttributes = commonAttrs
appAttrs.bazelAapt = aapt