Skip to content

Commit 8dfeb2a

Browse files
isaacrowntreeclaude
andcommitted
fix(android): fix build — add prefab, NitroModules dep, remove memorySize
Three issues preventing Android compilation: 1. build.gradle missing `prefab true` — CMake couldn't find fbjni via find_package() because prefab integration wasn't enabled 2. build.gradle missing `implementation project(":react-native-nitro-modules")` — Kotlin couldn't resolve com.margelo.nitro.core.* imports 3. HybridUnzip/UnzipTask/ZipTask had `override val memorySize` but the Nitro 0.34 generated specs don't declare this property Modeled after react-native-mmkv's working Android build.gradle. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 56a0569 commit 8dfeb2a

6 files changed

Lines changed: 28 additions & 9 deletions

File tree

android/build.gradle

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ android {
3030
externalNativeBuild {
3131
cmake {
3232
cppFlags "-O2 -frtti -fexceptions -Wall -fstack-protector-all"
33+
arguments "-DANDROID_STL=c++_shared"
3334
abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
3435
}
3536
}
@@ -43,6 +44,29 @@ android {
4344
jvmTarget = '17'
4445
}
4546

47+
packagingOptions {
48+
excludes = [
49+
"META-INF",
50+
"META-INF/**",
51+
"**/libNitroModules.so",
52+
"**/libc++_shared.so",
53+
"**/libfbjni.so",
54+
"**/libjsi.so",
55+
"**/libfolly_json.so",
56+
"**/libfolly_runtime.so",
57+
"**/libglog.so",
58+
"**/libhermes.so",
59+
"**/libreactnative.so",
60+
"**/libreactnativejni.so",
61+
"**/libturbomodulejsijni.so",
62+
"**/libreact_nativemodule_core.so",
63+
]
64+
}
65+
66+
buildFeatures {
67+
prefab true
68+
}
69+
4670
sourceSets {
4771
main {
4872
java.srcDirs += ['src/main/java']
@@ -64,6 +88,7 @@ repositories {
6488
dependencies {
6589
implementation "com.facebook.react:react-android:+"
6690
implementation "com.facebook.react:react-native:+"
91+
implementation project(":react-native-nitro-modules")
6792
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3"
6893
// zip4j — needed for password-protected zip/unzip (java.util.zip has no password API)
6994
implementation "net.lingala.zip4j:zip4j:2.11.5"

android/src/main/java/com/margelo/nitro/unzip/HybridUnzip.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ import com.facebook.proguard.annotations.DoNotStrip
99
@DoNotStrip
1010
@Keep
1111
class HybridUnzip : HybridUnzipSpec() {
12-
override val memorySize: Long = 0L
13-
1412
override fun extract(zipPath: String, destinationPath: String): HybridUnzipTaskSpec {
1513
return HybridUnzipTask(zipPath, destinationPath)
1614
}

android/src/main/java/com/margelo/nitro/unzip/HybridUnzipTask.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@ class HybridUnzipTask(
2929
private val password: String? = null
3030
) : HybridUnzipTaskSpec() {
3131

32-
override val memorySize: Long = 0L
33-
3432
override val taskId: String = "unzip_${System.nanoTime()}_${(Math.random() * 1e9).toLong()}"
3533

3634
private var progressCallback: ((UnzipProgress) -> Unit)? = null

android/src/main/java/com/margelo/nitro/unzip/HybridZipTask.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ class HybridZipTask(
2626
private val password: String? = null
2727
) : HybridZipTaskSpec() {
2828

29-
override val memorySize: Long = 0L
30-
3129
override val taskId: String = "zip_${System.nanoTime()}_${(Math.random() * 1e9).toLong()}"
3230

3331
private var progressCallback: ((ZipProgress) -> Unit)? = null

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-native-nitro-unzip",
3-
"version": "0.2.5",
3+
"version": "0.2.6",
44
"description": "High-performance ZIP extraction for React Native, powered by Nitro Modules",
55
"main": "lib/commonjs/index.js",
66
"module": "lib/module/index.js",

0 commit comments

Comments
 (0)