Collect transitve deps of jni libs only for bundled apps

We do this because otherwise we will be embedding platform libs in the
bundled apps bloating their size.

Bug: 330276359
Test: Build Galery2 and check if libc++.so is not included there.
Change-Id: Ie866b192e9816bcb71b7ca3d74331d14d85592a4
diff --git a/java/app.go b/java/app.go
index 0170ea1..254fbf4 100644
--- a/java/app.go
+++ b/java/app.go
@@ -440,6 +440,21 @@
 	return true
 }
 
+func (a *AndroidApp) shouldCollectRecursiveNativeDeps(ctx android.ModuleContext) bool {
+	// JNI libs are always embedded, but whether to embed their transitive dependencies as well
+	// or not is determined here. For most of the apps built here (using the platform build
+	// system), we don't need to collect the transitive deps because they will anyway be
+	// available in the partition image where the app will be installed to.
+	//
+	// Collecting transitive dependencies is required only for unbundled apps.
+	apexInfo, _ := android.ModuleProvider(ctx, android.ApexInfoProvider)
+	apkInApex := !apexInfo.IsForPlatform()
+	testApp := a.appProperties.AllowCompressingNativeLibs
+	unbundledApp := ctx.Config().UnbundledBuild() || apkInApex || testApp
+
+	return a.shouldEmbedJnis(ctx) && unbundledApp
+}
+
 func generateAaptRenamePackageFlags(packageName string, renameResourcesPackage bool) []string {
 	aaptFlags := []string{"--rename-manifest-package " + packageName}
 	if renameResourcesPackage {
@@ -831,7 +846,7 @@
 
 	dexJarFile, packageResources := a.dexBuildActions(ctx)
 
-	jniLibs, prebuiltJniPackages, certificates := collectAppDeps(ctx, a, a.shouldEmbedJnis(ctx), !Bool(a.appProperties.Jni_uses_platform_apis))
+	jniLibs, prebuiltJniPackages, certificates := collectAppDeps(ctx, a, a.shouldCollectRecursiveNativeDeps(ctx), !Bool(a.appProperties.Jni_uses_platform_apis))
 	jniJarFile := a.jniBuildActions(jniLibs, prebuiltJniPackages, ctx)
 
 	if ctx.Failed() {