Skip to content

Commit 58f6bfc

Browse files
committed
Copy fbjni .so files to prefab_package directory
- extract .so files from fbjni AAR to build/intermediates/prefab_package/ - ensure find_package(fbjni REQUIRED CONFIG) works correctly
1 parent d39e32a commit 58f6bfc

1 file changed

Lines changed: 26 additions & 9 deletions

File tree

packages/react-native/ReactAndroid/build.gradle.kts

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -455,27 +455,44 @@ val prepareFbjni by
455455
tasks.registering {
456456
dependsOn(downloadFbjniAar)
457457
val inputAar = downloadFbjniAarDest
458-
val outputDir = File(prefabHeadersDir, "fbjni")
459-
outputs.dir(outputDir)
458+
val headersOutputDir = File(prefabHeadersDir, "fbjni")
459+
val libsOutputDir = buildDir.resolve("intermediates/prefab_package/debug/prefab/modules/fbjni/libs")
460+
outputs.dir(headersOutputDir)
461+
outputs.dir(libsOutputDir)
460462
doLast {
461-
outputDir.mkdirs()
463+
headersOutputDir.mkdirs()
464+
libsOutputDir.mkdirs()
462465
// Extract only the fbjni headers from the AAR
463466
val zip = java.util.zip.ZipFile(inputAar)
464467
try {
465-
zip.entries().asSequence().filter { it.name.startsWith("prefab/modules/fbjni/include/fbjni/") }
466-
.forEach { entry ->
467-
val destFile = File(outputDir, entry.name.removePrefix("prefab/modules/fbjni/include/"))
468+
zip.entries().asSequence().forEach { entry ->
469+
when {
470+
entry.name.startsWith("prefab/modules/fbjni/include/fbjni/") -> {
471+
// Extract headers
472+
val destFile = File(headersOutputDir, entry.name.removePrefix("prefab/modules/fbjni/include/"))
468473
destFile.parentFile.mkdirs()
469-
if (entry.isDirectory) {
470-
destFile.mkdirs()
471-
} else {
474+
if (!entry.isDirectory) {
472475
destFile.outputStream().use { output ->
473476
zip.getInputStream(entry).use { input ->
474477
input.copyTo(output)
475478
}
476479
}
477480
}
478481
}
482+
entry.name.startsWith("prefab/modules/fbjni/libs/android.") -> {
483+
// Extract .so files to prefab_package directory
484+
val destFile = File(libsOutputDir, entry.name.substringAfter("android."))
485+
destFile.parentFile.mkdirs()
486+
if (!entry.isDirectory) {
487+
destFile.outputStream().use { output ->
488+
zip.getInputStream(entry).use { input ->
489+
input.copyTo(output)
490+
}
491+
}
492+
}
493+
}
494+
}
495+
}
479496
} finally {
480497
zip.close()
481498
}

0 commit comments

Comments
 (0)