From 15cb53846bd69dc43a32f62b099b1d83dab666e0 Mon Sep 17 00:00:00 2001 From: Elias Nahum Date: Wed, 29 Sep 2021 13:22:52 -0300 Subject: [PATCH] Enable wdb-jsi on Android (#5702) --- android/app/build.gradle | 6 +++++- .../com/mattermost/rnbeta/MainApplication.java | 18 +++++++++++++++++- android/settings.gradle | 6 +++--- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index efcda1a4f..c2db15fd5 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -129,6 +129,10 @@ android { targetCompatibility JavaVersion.VERSION_1_8 } + packagingOptions { + pickFirst '**/libc++_shared.so' + } + defaultConfig { applicationId "com.mattermost.rnbeta" minSdkVersion rootProject.ext.minSdkVersion @@ -275,7 +279,7 @@ dependencies { androidTestImplementation('com.wix:detox:+') - implementation project(':watermelondb') + implementation project(':watermelondb-jsi') } // Run this once to be able to run the application with BUCK diff --git a/android/app/src/main/java/com/mattermost/rnbeta/MainApplication.java b/android/app/src/main/java/com/mattermost/rnbeta/MainApplication.java index e6dfc819b..04b0e5c9b 100644 --- a/android/app/src/main/java/com/mattermost/rnbeta/MainApplication.java +++ b/android/app/src/main/java/com/mattermost/rnbeta/MainApplication.java @@ -1,11 +1,14 @@ package com.mattermost.rnbeta; +import com.facebook.react.bridge.JSIModuleSpec; +import com.facebook.react.bridge.JavaScriptContextHolder; import com.mattermost.rnbeta.generated.BasePackageList; import android.content.Context; import android.os.Bundle; import android.util.Log; import java.io.File; +import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -42,6 +45,7 @@ import org.unimodules.adapters.react.ReactModuleRegistryProvider; import com.mattermost.networkclient.RCTOkHttpClientFactory; import com.swmansion.reanimated.ReanimatedJSIModulePackage; +import com.nozbe.watermelondb.jsi.WatermelonDBJSIPackage; public class MainApplication extends NavigationApplication implements INotificationsApplication, INotificationsDrawerApplication { public static MainApplication instance; @@ -107,7 +111,19 @@ public class MainApplication extends NavigationApplication implements INotificat @Override protected JSIModulePackage getJSIModulePackage() { - return new ReanimatedJSIModulePackage(); + return new JSIModulePackage() { + @Override + public List getJSIModules( + final ReactApplicationContext reactApplicationContext, + final JavaScriptContextHolder jsContext + ) { + List modules = Arrays.asList(); + modules.addAll(new WatermelonDBJSIPackage().getJSIModules(reactApplicationContext, jsContext)); + modules.addAll(new ReanimatedJSIModulePackage().getJSIModules(reactApplicationContext, jsContext)); + + return modules; + } + }; } @Override diff --git a/android/settings.gradle b/android/settings.gradle index c38a83407..864823a50 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -4,6 +4,6 @@ project(':reactnativenotifications').projectDir = new File(rootProject.projectDi apply from: '../node_modules/react-native-unimodules/gradle.groovy'; includeUnimodulesProjects() apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) include ':app' -include ':watermelondb' -project(':watermelondb').projectDir = - new File(rootProject.projectDir, '../node_modules/@nozbe/watermelondb/native/android') +include ':watermelondb-jsi' +project(':watermelondb-jsi').projectDir = + new File(rootProject.projectDir, '../node_modules/@nozbe/watermelondb/native/android-jsi')