Revert "Refactor how jni_libs dependencies are added"

Revert submission 3088867

Reason for revert: On cf_auto build, we are seeing a symlink of jni lib pointing to lib64/libcarservicejni.so, which does not exist on the device.

Reverted changes: /q/submissionid:3088867
Bug: b/341335305

Change-Id: Ibda68b268e74ffca1840faae01a2f3fe2e00be30
diff --git a/java/app.go b/java/app.go
index 377851e..441091b 100644
--- a/java/app.go
+++ b/java/app.go
@@ -274,37 +274,16 @@
 		variation := append(jniTarget.Variations(),
 			blueprint.Variation{Mutator: "link", Variation: "shared"})
 
-		// Test whether to use the SDK variant or the non-SDK variant of JNI dependencies.
-		// Many factors are considered here.
-		// 1. Basically, the selection follows whether the app has sdk_version set or not.
-		jniUsesSdkVariant := usesSDK
-		// 2. However, jni_uses_platform_apis and jni_uses_sdk_apis can override it
-		if Bool(a.appProperties.Jni_uses_sdk_apis) {
-			jniUsesSdkVariant = true
-		}
-		if Bool(a.appProperties.Jni_uses_platform_apis) {
-			jniUsesSdkVariant = false
-		}
-		// 3. Then the use of SDK variant is again prohibited for the following cases:
-		// 3.1. the app is shipped on unbundled partitions like vendor. Since the entire
-		// partition (not only the app) is considered unbudled, there's no need to use the
-		// SDK variant.
-		// 3.2. the app doesn't support embedding the JNI libs
-		if a.RequiresStableAPIs(ctx) || !a.shouldEmbedJnis(ctx) {
-			jniUsesSdkVariant = false
-		}
-		if jniUsesSdkVariant {
+		// If the app builds against an Android SDK use the SDK variant of JNI dependencies
+		// unless jni_uses_platform_apis is set.
+		// Don't require the SDK variant for apps that are shipped on vendor, etc., as they already
+		// have stable APIs through the VNDK.
+		if (usesSDK && !a.RequiresStableAPIs(ctx) &&
+			!Bool(a.appProperties.Jni_uses_platform_apis)) ||
+			Bool(a.appProperties.Jni_uses_sdk_apis) {
 			variation = append(variation, blueprint.Variation{Mutator: "sdk", Variation: "sdk"})
 		}
-
-		// Use the installable dep tag when the JNIs are not embedded
-		var tag dependencyTag
-		if a.shouldEmbedJnis(ctx) {
-			tag = jniLibTag
-		} else {
-			tag = jniInstallTag
-		}
-		ctx.AddFarVariationDependencies(variation, tag, a.appProperties.Jni_libs...)
+		ctx.AddFarVariationDependencies(variation, jniLibTag, a.appProperties.Jni_libs...)
 	}
 	for _, aconfig_declaration := range a.aaptProperties.Flags_packages {
 		ctx.AddDependency(ctx.Module(), aconfigDeclarationTag, aconfig_declaration)
@@ -862,9 +841,7 @@
 
 	dexJarFile, packageResources := a.dexBuildActions(ctx)
 
-	// No need to check the SDK version of the JNI deps unless we embed them
-	checkNativeSdkVersion := a.shouldEmbedJnis(ctx) && !Bool(a.appProperties.Jni_uses_platform_apis)
-	jniLibs, prebuiltJniPackages, certificates := collectAppDeps(ctx, a, a.shouldEmbedJnis(ctx), checkNativeSdkVersion)
+	jniLibs, prebuiltJniPackages, certificates := collectAppDeps(ctx, a, a.shouldEmbedJnis(ctx), !Bool(a.appProperties.Jni_uses_platform_apis))
 	jniJarFile := a.jniBuildActions(jniLibs, prebuiltJniPackages, ctx)
 
 	if ctx.Failed() {
@@ -955,6 +932,10 @@
 				archStr := jniLib.target.Arch.ArchType.String()
 				symlinkDir := a.installDir.Join(ctx, "lib", archStr)
 				for _, installedLib := range jniLib.installPaths {
+					// install the symlink target along with the app
+					extraInstalledPaths = append(extraInstalledPaths, installedLib)
+					ctx.PackageFile(installedLib, "", jniLib.path)
+
 					// install the symlink itself
 					symlinkName := installedLib.Base()
 					symlinkTarget := android.InstallPathToOnDevicePath(ctx, installedLib)