@@ -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