mrousavy / react-native-mmkv

⚡️ The fastest key/value storage for React Native. ~30x faster than AsyncStorage!
https://mrousavy.com
MIT License
5.88k stars 253 forks source link

Android Studio Build Failed. #162

Closed smallzZz8 closed 2 years ago

smallzZz8 commented 3 years ago

Hello I am getting this error when I try to build in Android Studio.

Error while executing process E:\AndroidStudioSDK\cmake\3.10.2.4988404\bin\ninja.exe with arguments {-C C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\react-native-mmkv\android\.cxx\cmake\debug\armeabi-v7a reactnativemmkv}
ninja: Entering directory `C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\react-native-mmkv\android\.cxx\cmake\debug\armeabi-v7a'

ninja: error: '../../../../build/react-native-0.63.4.aar/jni/armeabi-v7a/libreactnativejni.so', needed by '../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/libreactnativemmkv.so', missing and no known rule to make it

I have tried adding

    packagingOptions {
        pickFirst '**/*.so'
        if (!enableHermes) {
            exclude "**/libhermes*.so"
        }
    }

to my app/build.gradle but it still fails.

I am on an expo ejected app with expo 42.

mrousavy commented 2 years ago

A clean and rebuild usually fixes this issue for me 🤔

cd android
./gradlew clean
./gradlew buildDebug
smallzZz8 commented 2 years ago

I went ahead and cleaned and then ran again and this is my log

C:\Users\The Clone Trooper\Desktop\MyApp\Git>react-native run-android --variant devDebug --appIdSuffix dev
info Running jetifier to migrate libraries to AndroidX. You can disable it using "--no-jetifier" flag.
(node:18612) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
Jetifier found 1686 file(s) to forward-jetify. Using 8 workers...
info Starting JS server...
info Installing the app...

> Configure project :app

Installing unimodules:
 unimodules-core@7.1.2 from C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@unimodules\core
 unimodules-react-native-adapter@6.3.7 from C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@unimodules\react-native-adapter
 expo-application@3.2.0 from C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-application
 expo-constants@11.0.2 from C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-constants
 expo-device@3.3.0 from C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-device
 expo-error-recovery@2.2.0 from C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-error-recovery
 expo-file-system@11.1.3 from C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-file-system
 expo-font@9.2.1 from C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-font
 expo-haptics@10.1.0 from C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-haptics
 expo-image-loader@2.2.0 from C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-image-loader
 expo-image-manipulator@9.2.2 from C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-image-manipulator
 expo-image-picker@10.2.3 from C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-image-picker
 expo-keep-awake@9.2.0 from C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-keep-awake
 expo-location@12.1.2 from C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-location
 expo-modules-core@0.2.0 from C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-modules-core
 expo-notifications@0.12.3 from C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-notifications
 expo-permissions@12.1.1 from C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-permissions
 expo-splash-screen@0.11.4 from C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-splash-screen
 expo-store-review@4.1.0 from C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-store-review
 expo-structured-headers@1.1.1 from C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-structured-headers
 expo-updates-interface@0.2.2 from C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-updates-interface
 expo-updates@0.8.5 from C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-updates
 expo-web-browser@9.2.0 from C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-web-browser
 unimodules-app-loader@2.2.0 from C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\unimodules-app-loader
 unimodules-task-manager-interface@6.2.0 from C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\unimodules-task-manager-interface

Found some duplicated unimodule packages. Installed the ones with the highest version number.
Make sure following dependencies of your project are resolving to one specific version:
 expo-constants
Crashlytics could not find NDK build tasks on which to depend. You many need to manually enforce task dependencies for generateCrashlyticsSymbolFileDevRelease
Crashlytics could not find NDK build tasks on which to depend. You many need to manually enforce task dependencies for generateCrashlyticsSymbolFileProdRelease

> Configure project :expo-structured-headers
Warning: The 'kotlin-android-extensions' Gradle plugin is deprecated. Please use this migration guide (https://goo.gle/kotlin-android-extensions-deprecation) to start working with View Binding (https://developer.android.com/topic/libraries/view-binding) and the 'kotlin-parcelize' plugin.

> Configure project :react-native-firebase_analytics
:react-native-firebase_analytics package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\analytics\package.json
:react-native-firebase_app package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\app\package.json
:react-native-firebase_analytics:firebase.bom using default value: 26.8.0
:react-native-firebase_analytics package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\analytics\package.json
:react-native-firebase_analytics:version set from package.json: 11.5.0 (11,5,0 - 11005000)
:react-native-firebase_analytics:android.compileSdk using custom value: 30
:react-native-firebase_analytics:android.targetSdk using custom value: 30
:react-native-firebase_analytics:android.minSdk using custom value: 24
:react-native-firebase_analytics:reactNativeAndroidDir C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\react-native\android

> Configure project :react-native-firebase_app
:react-native-firebase_app package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\app\package.json
:react-native-firebase_app:firebase.bom using default value: 26.8.0
:react-native-firebase_app:play.play-services-auth using default value: 19.0.0
:react-native-firebase_app package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\app\package.json
:react-native-firebase_app:version set from package.json: 11.5.0 (11,5,0 - 11005000)
:react-native-firebase_app:android.compileSdk using custom value: 30
:react-native-firebase_app:android.targetSdk using custom value: 30
:react-native-firebase_app:android.minSdk using custom value: 24
:react-native-firebase_app:reactNativeAndroidDir C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\react-native\android

> Configure project :react-native-firebase_auth
:react-native-firebase_auth package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\auth\package.json
:react-native-firebase_app package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\app\package.json
:react-native-firebase_auth:firebase.bom using default value: 26.8.0
:react-native-firebase_auth package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\auth\package.json
:react-native-firebase_auth:version set from package.json: 11.5.0 (11,5,0 - 11005000)
:react-native-firebase_auth:android.compileSdk using custom value: 30
:react-native-firebase_auth:android.targetSdk using custom value: 30
:react-native-firebase_auth:android.minSdk using custom value: 24
:react-native-firebase_auth:reactNativeAndroidDir C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\react-native\android

> Configure project :react-native-firebase_crashlytics
:react-native-firebase_crashlytics package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\crashlytics\package.json
:react-native-firebase_app package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\app\package.json
:react-native-firebase_crashlytics:firebase.bom using default value: 26.8.0
:react-native-firebase_crashlytics package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\crashlytics\package.json
:react-native-firebase_crashlytics:version set from package.json: 11.5.0 (11,5,0 - 11005000)
:react-native-firebase_crashlytics:android.compileSdk using custom value: 30
:react-native-firebase_crashlytics:android.targetSdk using custom value: 30
:react-native-firebase_crashlytics:android.minSdk using custom value: 24
:react-native-firebase_crashlytics:reactNativeAndroidDir C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\react-native\android

> Configure project :react-native-firebase_database
:react-native-firebase_database package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\database\package.json
:react-native-firebase_app package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\app\package.json
:react-native-firebase_database:firebase.bom using default value: 26.8.0
:react-native-firebase_database package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\database\package.json
:react-native-firebase_database:version set from package.json: 11.5.0 (11,5,0 - 11005000)
:react-native-firebase_database:android.compileSdk using custom value: 30
:react-native-firebase_database:android.targetSdk using custom value: 30
:react-native-firebase_database:android.minSdk using custom value: 24
:react-native-firebase_database:reactNativeAndroidDir C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\react-native\android

> Configure project :react-native-firebase_dynamic-links
:react-native-firebase_dynamic-links package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\dynamic-links\package.json
:react-native-firebase_app package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\app\package.json
:react-native-firebase_dynamic-links:firebase.bom using default value: 26.8.0
:react-native-firebase_dynamic-links package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\dynamic-links\package.json
:react-native-firebase_dynamic-links:version set from package.json: 11.5.0 (11,5,0 - 11005000)
:react-native-firebase_dynamic-links:android.compileSdk using custom value: 30
:react-native-firebase_dynamic-links:android.targetSdk using custom value: 30
:react-native-firebase_dynamic-links:android.minSdk using custom value: 24
:react-native-firebase_dynamic-links:reactNativeAndroidDir C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\react-native\android

> Configure project :react-native-firebase_functions
:react-native-firebase_functions package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\functions\package.json
:react-native-firebase_app package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\app\package.json
:react-native-firebase_functions:firebase.bom using default value: 26.8.0
:react-native-firebase_functions package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\functions\package.json
:react-native-firebase_functions:version set from package.json: 11.5.0 (11,5,0 - 11005000)
:react-native-firebase_functions:android.compileSdk using custom value: 30
:react-native-firebase_functions:android.targetSdk using custom value: 30
:react-native-firebase_functions:android.minSdk using custom value: 24
:react-native-firebase_functions:reactNativeAndroidDir C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\react-native\android

> Configure project :react-native-firebase_perf
:react-native-firebase_perf package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\perf\package.json
:react-native-firebase_app package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\app\package.json
:react-native-firebase_perf:firebase.bom using default value: 26.8.0
:react-native-firebase_perf package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\perf\package.json
:react-native-firebase_perf:version set from package.json: 11.5.0 (11,5,0 - 11005000)
:react-native-firebase_perf:android.compileSdk using custom value: 30
:react-native-firebase_perf:android.targetSdk using custom value: 30
:react-native-firebase_perf:android.minSdk using custom value: 24
:react-native-firebase_perf:reactNativeAndroidDir C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\react-native\android

> Configure project :react-native-firebase_remote-config
:react-native-firebase_remote-config package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\remote-config\package.json
:react-native-firebase_app package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\app\package.json
:react-native-firebase_remote-config:firebase.bom using default value: 26.8.0
:react-native-firebase_remote-config package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\remote-config\package.json
:react-native-firebase_remote-config:version set from package.json: 11.5.0 (11,5,0 - 11005000)
:react-native-firebase_remote-config:android.compileSdk using custom value: 30
:react-native-firebase_remote-config:android.targetSdk using custom value: 30
:react-native-firebase_remote-config:android.minSdk using custom value: 24
:react-native-firebase_remote-config:reactNativeAndroidDir C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\react-native\android

> Configure project :react-native-firebase_storage
:react-native-firebase_storage package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\storage\package.json
:react-native-firebase_app package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\app\package.json
:react-native-firebase_storage:firebase.bom using default value: 26.8.0
:react-native-firebase_storage package.json found at C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\storage\package.json
:react-native-firebase_storage:version set from package.json: 11.5.0 (11,5,0 - 11005000)
:react-native-firebase_storage:android.compileSdk using custom value: 30
:react-native-firebase_storage:android.targetSdk using custom value: 30
:react-native-firebase_storage:android.minSdk using custom value: 24
:react-native-firebase_storage:reactNativeAndroidDir C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\react-native\android

> Task :expo-file-system:processDebugManifest
C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-file-system\android\src\main\AndroidManifest.xml:8:9-10:20 Warning:
        provider#expo.modules.filesystem.FileSystemFileProvider@android:authorities was tagged at AndroidManifest.xml:8 to replace other declarations but no other declaration present

> Task :app:processDevDebugMainManifest
C:\Users\The Clone Trooper\Desktop\MyApp\Git\android\app\src\debug\AndroidManifest.xml:25:9-34:20 Warning:
        provider#expo.modules.filesystem.FileSystemFileProvider@android:authorities was tagged at AndroidManifest.xml:25 to replace other declarations but no other declaration present
C:\Users\The Clone Trooper\Desktop\MyApp\Git\android\app\src\debug\AndroidManifest.xml:3:3-92 Warning:
        uses-permission#android.permission.READ_PHONE_STATE was tagged at AndroidManifest.xml:3 to remove other declarations but no other declaration present
C:\Users\The Clone Trooper\Desktop\MyApp\Git\android\app\src\debug\AndroidManifest.xml:11:3-102 Warning:
        uses-permission#android.permission.ACCESS_BACKGROUND_LOCATION was tagged at AndroidManifest.xml:11 to remove other declarations but no other declaration present

> Task :unimodules-core:compileDebugJavaWithJavac

> Task :expo-updates-interface:compileDebugJavaWithJavac

> Task :react-native-async-storage_async-storage:compileDebugJavaWithJavac

> Task :expo-application:compileDebugJavaWithJavac

> Task :expo-haptics:compileDebugJavaWithJavac

> Task :expo-splash-screen:compileDebugKotlin
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-splash-screen\android\src\main\java\expo\modules\splashscreen\SplashScreenController.kt: (21, 25): 'constructor Handler()' is deprecated. Deprecated in Java
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-splash-screen\android\src\main\java\expo\modules\splashscreen\SplashScreenController.kt: (42, 5): Parameter 'failureCallback' is never used
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-splash-screen\android\src\main\java\expo\modules\splashscreen\singletons\SplashScreenStatusBar.kt: (23, 27): 'replaceSystemWindowInsets(Int, Int, Int, Int): WindowInsets' is deprecated. Deprecated in Java
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-splash-screen\android\src\main\java\expo\modules\splashscreen\singletons\SplashScreenStatusBar.kt: (24, 29): 'getter for systemWindowInsetLeft: Int' is deprecated. Deprecated in Java
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-splash-screen\android\src\main\java\expo\modules\splashscreen\singletons\SplashScreenStatusBar.kt: (26, 29): 'getter for systemWindowInsetRight: Int' is deprecated. Deprecated in Java
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-splash-screen\android\src\main\java\expo\modules\splashscreen\singletons\SplashScreenStatusBar.kt: (27, 29): 'getter for systemWindowInsetBottom: Int' is 
deprecated. Deprecated in Java

> Task :expo-store-review:compileDebugKotlin
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-store-review\android\src\main\java\expo\modules\storereview\StoreReviewModule.kt: (48, 38): Name shadowed: task

> Task :react-native-community_blur:compileDebugJavaWithJavac

> Task :expo-updates:compileDebugKotlin
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-updates\android\src\main\java\expo\modules\updates\manifest\LegacyManifest.kt: (35, 50): 'getRawJson(): JSONObject' is deprecated. Prefer to use specific 
field getters
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-updates\android\src\main\java\expo\modules\updates\manifest\NewManifest.kt: (46, 47): 'getRawJson(): JSONObject' is deprecated. Prefer to use specific field getters
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-updates\android\src\main\java\expo\modules\updates\manifest\raw\RawManifest.kt: (26, 12): 'getRawJson(): JSONObject' is deprecated. Prefer to use specific field getters

> Task :expo-updates:compileDebugJavaWithJavac
The following annotation processors are not incremental: room-compiler-2.1.0.jar (androidx.room:room-compiler:2.1.0).
Make sure all annotation processors are incremental to improve your build speed.

> Task :react-native-community_masked-view:compileDebugJavaWithJavac

> Task :react-native-device-info:compileDebugJavaWithJavac

> Task :expo-constants:compileDebugJavaWithJavac

> Task :expo-device:compileDebugJavaWithJavac

> Task :expo-file-system:compileDebugJavaWithJavac

> Task :expo-image-loader:compileDebugKotlin
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-image-loader\android\src\main\java\expo\modules\imageloader\ImageLoaderModule.kt: (6, 19): 'AsyncTask<Params : Any!, Progress : Any!, Result : Any!>' is deprecated. Deprecated in Java
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-image-loader\android\src\main\java\expo\modules\imageloader\ImageLoaderModule.kt: (11, 42): 'SimpleTarget<Z : Any!>' is deprecated. Deprecated in Java    
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-image-loader\android\src\main\java\expo\modules\imageloader\ImageLoaderModule.kt: (60, 7): 'AsyncTask<Params : Any!, Progress : Any!, Result : Any!>' is deprecated. Deprecated in Java
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-image-loader\android\src\main\java\expo\modules\imageloader\ImageLoaderModule.kt: (60, 17): 'THREAD_POOL_EXECUTOR: Executor!' is deprecated. Deprecated in Java
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-image-loader\android\src\main\java\expo\modules\imageloader\ImageLoaderModule.kt: (82, 22): 'SimpleTarget<Z : Any!>' is deprecated. Deprecated in Java    

> Task :expo-image-picker:compileDebugKotlin
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-image-picker\android\src\main\java\expo\modules\imagepicker\ImagePickerConstants.kt: (97, 34): 'TAG_ISO_SPEED_RATINGS: String' is deprecated. Deprecated in Java
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-image-picker\android\src\main\java\expo\modules\imagepicker\ImagePickerModule.kt: (342, 123): 'execute(vararg Void?): AsyncTask<Void?, Void?, Void?>!' is 
deprecated. Deprecated in Java
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-image-picker\android\src\main\java\expo\modules\imagepicker\ImagePickerModule.kt: (371, 147): 'execute(vararg Void?): AsyncTask<Void?, Void?, Void?>!' is 
deprecated. Deprecated in Java
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-image-picker\android\src\main\java\expo\modules\imagepicker\ImagePickerModule.kt: (379, 119): 'execute(vararg Void?): AsyncTask<Void?, Void?, Void?>!' is 
deprecated. Deprecated in Java
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-image-picker\android\src\main\java\expo\modules\imagepicker\tasks\ImageResultTask.kt: (5, 19): 'AsyncTask<Params : Any!, Progress : Any!, Result : Any!>' 
is deprecated. Deprecated in Java
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-image-picker\android\src\main\java\expo\modules\imagepicker\tasks\ImageResultTask.kt: (26, 3): 'AsyncTask<Params : Any!, Progress : Any!, Result : Any!>' 
is deprecated. Deprecated in Java
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-image-picker\android\src\main\java\expo\modules\imagepicker\tasks\ImageResultTask.kt: (26, 3): 'constructor AsyncTask<Params : Any!, Progress : Any!, Result : Any!>()' is deprecated. Deprecated in Java
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-image-picker\android\src\main\java\expo\modules\imagepicker\tasks\VideoResultTask.kt: (6, 19): 'AsyncTask<Params : Any!, Progress : Any!, Result : Any!>' 
is deprecated. Deprecated in Java
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-image-picker\android\src\main\java\expo\modules\imagepicker\tasks\VideoResultTask.kt: (23, 3): 'AsyncTask<Params : Any!, Progress : Any!, Result : Any!>' 
is deprecated. Deprecated in Java
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-image-picker\android\src\main\java\expo\modules\imagepicker\tasks\VideoResultTask.kt: (23, 3): 'constructor AsyncTask<Params : Any!, Progress : Any!, Result : Any!>()' is deprecated. Deprecated in Java

> Task :expo-location:compileDebugJavaWithJavac

> Task :expo-notifications:compileDebugKotlin
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-notifications\android\src\main\java\expo\modules\notifications\service\delegates\Base64Serialization.kt: (26, 45): Returning type parameter has been inferred to Nothing implicitly because Nothing is more specific than specified expected type. Please specify type arguments explicitly in accordance with expected type to hide this warning. Nothing can produce an exception at 
runtime. See KT-36776 for more details.
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-notifications\android\src\main\java\expo\modules\notifications\service\delegates\ExpoPresentationDelegate.kt: (176, 70): 'priority: Int' is deprecated. Deprecated in Java
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-notifications\android\src\main\java\expo\modules\notifications\service\delegates\ExpoPresentationDelegate.kt: (177, 41): 'vibrate: LongArray!' is deprecated. Deprecated in Java
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-notifications\android\src\main\java\expo\modules\notifications\service\delegates\ExpoPresentationDelegate.kt: (178, 30): 'sound: Uri!' is deprecated. Deprecated in Java
w: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-notifications\android\src\main\java\expo\modules\notifications\service\delegates\FirebaseMessagingDelegate.kt: (112, 30): Unnecessary safe call on a non-null receiver of type (Mutable)Map<String!, String!>

> Task :expo-notifications:compileDebugJavaWithJavac

> Task :react-native-firebase_app:compileDebugJavaWithJavac

> Task :react-native-gesture-handler:compileDebugJavaWithJavac

> Task :react-native-firebase_auth:compileDebugJavaWithJavac

> Task :react-native-firebase_crashlytics:compileDebugJavaWithJavac

> Task :react-native-firebase_database:compileDebugJavaWithJavac

> Task :react-native-firebase_functions:compileDebugJavaWithJavac

> Task :react-native-safe-area-context:compileDebugJavaWithJavac

> Task :react-native-screens:compileDebugJavaWithJavac

> Task :react-native-svg:compileDebugJavaWithJavac

> Task :react-native-ui-lib:compileDebugJavaWithJavac

> Task :react-native-vector-icons:compileDebugJavaWithJavac

> Task :app:compileDevDebugJavaWithJavac

> Task :react-native-mmkv:externalNativeBuildDebug
Build reactnativemmkv_armeabi-v7a
ninja: Entering directory `C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\react-native-mmkv\android\.cxx\cmake\debug\armeabi-v7a'
[1/38] Building CXX object core/CMakeFiles/core.dir/MMKV_OSX.cpp.o
[2/38] Building CXX object core/CMakeFiles/core.dir/CodedInputDataCrypt_OSX.cpp.o
[3/38] Building CXX object core/CMakeFiles/core.dir/MMKVLog.cpp.o
[4/38] Building CXX object core/CMakeFiles/core.dir/MMKVLog_Android.cpp.o
[5/38] Building CXX object core/CMakeFiles/core.dir/CodedInputDataCrypt.cpp.o
[6/38] Building CXX object CMakeFiles/reactnativemmkv.dir/src/main/cpp/cpp-adapter.cpp.o
[7/38] Building CXX object core/CMakeFiles/core.dir/MMKV_Android.cpp.o
[8/38] Building CXX object core/CMakeFiles/core.dir/MMKV.cpp.o
[9/38] Building CXX object CMakeFiles/reactnativemmkv.dir/src/main/cpp/MmkvHostObject.cpp.o
[10/38] Building CXX object core/CMakeFiles/core.dir/MMKV_IO.cpp.o
[11/38] Building CXX object core/CMakeFiles/core.dir/CodedInputData_OSX.cpp.o
[12/38] Building CXX object core/CMakeFiles/core.dir/CodedInputData.cpp.o
[13/38] Building CXX object core/CMakeFiles/core.dir/MiniPBCoder.cpp.o
[14/38] Building CXX object core/CMakeFiles/core.dir/KeyValueHolder.cpp.o
[15/38] Building CXX object core/CMakeFiles/core.dir/PBUtility.cpp.o
[16/38] Building CXX object core/CMakeFiles/core.dir/MMBuffer.cpp.o
[17/38] Building CXX object core/CMakeFiles/core.dir/CodedOutputData.cpp.o
[18/38] Building CXX object core/CMakeFiles/core.dir/MiniPBCoder_OSX.cpp.o
[19/38] Building CXX object core/CMakeFiles/core.dir/InterProcessLock_Win32.cpp.o
[20/38] Building CXX object core/CMakeFiles/core.dir/InterProcessLock_Android.cpp.o
[21/38] Building CXX object core/CMakeFiles/core.dir/InterProcessLock.cpp.o
[22/38] Building CXX object core/CMakeFiles/core.dir/MemoryFile.cpp.o
[23/38] Building CXX object core/CMakeFiles/core.dir/MemoryFile_Win32.cpp.o
[24/38] Building CXX object core/CMakeFiles/core.dir/MemoryFile_OSX.cpp.o
[25/38] Building CXX object core/CMakeFiles/core.dir/MemoryFile_Android.cpp.o
[26/38] Building CXX object core/CMakeFiles/core.dir/ThreadLock.cpp.o
[27/38] Building CXX object core/CMakeFiles/core.dir/aes/openssl/openssl_aes_core.cpp.o
[28/38] Building CXX object core/CMakeFiles/core.dir/aes/openssl/openssl_md5_one.cpp.o
[29/38] Building CXX object core/CMakeFiles/core.dir/ThreadLock_Win32.cpp.o
[30/38] Building CXX object core/CMakeFiles/core.dir/aes/openssl/openssl_md5_dgst.cpp.o
[31/38] Building CXX object core/CMakeFiles/core.dir/aes/AESCrypt.cpp.o
[32/38] Building CXX object core/CMakeFiles/core.dir/aes/openssl/openssl_cfb128.cpp.o
[33/38] Building ASM object core/CMakeFiles/core.dir/aes/openssl/openssl_aesv8-armx.S.o
[34/38] Building CXX object core/CMakeFiles/core.dir/crc32/crc32_armv8.cpp.o
[35/38] Building ASM object core/CMakeFiles/core.dir/aes/openssl/openssl_aes-armv4.S.o
[36/38] Building CXX object core/CMakeFiles/core.dir/crc32/zlib/crc32.cpp.o
[37/38] Linking CXX static library core\libcore.a
[38/38] Linking CXX shared library ..\..\..\..\build\intermediates\cmake\debug\obj\armeabi-v7a\libreactnativemmkv.so
FAILED: ../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/libreactnativemmkv.so
cmd.exe /C "cd . && E:\AndroidStudioSDK\ndk\21.1.6352462\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=armv7-none-linux-androideabi21 --gcc-toolchain=E:/AndroidStudioSDK/ndk/21.1.6352462/toolchains/llvm/prebuilt/windows-x86_64 --sysroot=E:/AndroidStudioSDK/ndk/21.1.6352462/toolchains/llvm/prebuilt/windows-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security  -fexceptions -frtti -std=c++1y -DONANDROID -O0 -fno-limit-debug-info  -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libgcc_real.a -Wl,--exclude-libs,libatomic.a -Wl,--build-id -Wl,--fatal-warnings -Wl,--exclude-libs,libunwind.a -Wl,--no-undefined -Qunused-arguments -shared -Wl,-soname,libreactnativemmkv.so -o ..\..\..\..\build\intermediates\cmake\debug\obj\armeabi-v7a\libreactnativemmkv.so CMakeFiles/reactnativemmkv.dir/src/main/cpp/cpp-adapter.cpp.o CMakeFiles/reactnativemmkv.dir/src/main/cpp/MmkvHostObject.cpp.o -LC:/Users/THECLO~1/Desktop/MyApp/Git/NODE_M~1/RE2E13~1/android/build/REACT-~1.AAR/jni/ARMEAB~1 core/libcore.a -llog -lreactnativejni -landroid E:/AndroidStudioSDK/ndk/21.1.6352462/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/arm-linux-androideabi/libz.a -latomic -lm && cd ."
../../../../src/main/cpp/cpp-adapter.cpp:10: error: undefined reference to 'facebook::jsi::Value::asString(facebook::jsi::Runtime&) const &'
../../../../src/main/cpp/cpp-adapter.cpp:11: error: undefined reference to 'facebook::jsi::Value::~Value()'
../../../../src/main/cpp/cpp-adapter.cpp:11: error: undefined reference to 'facebook::jsi::Value::~Value()'
../../../../src/main/cpp/cpp-adapter.cpp:25: error: undefined reference to 'facebook::jsi::Value::asObject(facebook::jsi::Runtime&) const &'
../../../../../../../node_modules/react-native/ReactCommon/jsi\jsi/jsi.h:1241: error: undefined reference to 'facebook::jsi::JSError::JSError(facebook::jsi::Runtime&, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >)'
../../../../../../../node_modules/react-native/ReactCommon/jsi\jsi/jsi.h:940: error: undefined reference to 'facebook::jsi::Value::~Value()'
../../../../src/main/cpp/MmkvHostObject.h:16: error: undefined reference to 'facebook::jsi::HostObject::~HostObject()'
../../../../../../../node_modules/react-native/ReactCommon/jsi\jsi/jsi-inl.h:112: error: undefined reference to 'facebook::jsi::Value::~Value()'
../../../../../../../node_modules/react-native/ReactCommon/jsi\jsi/jsi-inl.h:112: error: undefined reference to 'facebook::jsi::Value::~Value()'
../../../../../../../node_modules/react-native/ReactCommon/jsi\jsi/jsi.h:966: error: undefined reference to 'facebook::jsi::Value::~Value()'
../../../../src/main/cpp/MmkvHostObject.cpp:22: error: undefined reference to 'facebook::jsi::HostObject::~HostObject()'
../../../../../../../node_modules/react-native/ReactCommon/jsi\jsi/jsi.h:0: error: undefined reference to 'vtable for facebook::jsi::HostObject'
E:/AndroidStudioSDK/ndk/21.1.6352462/toolchains/llvm/prebuilt/windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin\ld: the vtable symbol may be undefined because the class is missing its key function
../../../../../../../node_modules/react-native/ReactCommon/jsi\jsi/jsi.h:940: error: undefined reference to 'facebook::jsi::Value::~Value()'
../../../../../../../node_modules/react-native/ReactCommon/jsi\jsi/jsi.h:961: error: undefined reference to 'facebook::jsi::Value::~Value()'
CMakeFiles/reactnativemmkv.dir/src/main/cpp/MmkvHostObject.cpp.o:MmkvHostObject.cpp:vtable for MmkvHostObject: error: undefined reference to 'facebook::jsi::HostObject::set(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&, facebook::jsi::Value const&)'
CMakeFiles/reactnativemmkv.dir/src/main/cpp/MmkvHostObject.cpp.o:MmkvHostObject.cpp:typeinfo for MmkvHostObject: error: undefined reference to 'typeinfo for facebook::jsi::HostObject'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.

> Task :react-native-mmkv:externalNativeBuildDebug FAILED

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.7/userguide/command_line_interface.html#sec:command_line_warnings
826 actionable tasks: 826 executed
Warning: Mapping new ns http://schemas.android.com/repository/android/common/02 to old ns http://schemas.android.com/repository/android/common/01      
Warning: Mapping new ns http://schemas.android.com/repository/android/generic/02 to old ns http://schemas.android.com/repository/android/generic/01    
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/addon2/02 to old ns http://schemas.android.com/sdk/android/repo/addon2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/repository2/02 to old ns http://schemas.android.com/sdk/android/repo/repository2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/sys-img2/02 to old ns http://schemas.android.com/sdk/android/repo/sys-img2/01      
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
warning: [options] source value 7 is obsolete and will be removed in a future release
warning: [options] target value 7 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
3 warnings
warning: [options] source value 7 is obsolete and will be removed in a future release
warning: [options] target value 7 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
Note: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-async-storage\async-storage\android\src\main\java\com\reactnativecommunity\asyncstorage\AsyncStorageModule.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-async-storage\async-storage\android\src\main\java\com\reactnativecommunity\asyncstorage\AsyncStoragePackage.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
3 warnings
Note: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-application\android\src\main\java\expo\modules\application\ApplicationModule.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-haptics\android\src\main\java\expo\modules\haptics\HapticsModule.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
warning: [options] source value 7 is obsolete and will be removed in a future release
warning: [options] target value 7 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
3 warnings
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-updates\android\src\main\java\expo\modules\updates\UpdatesConfiguration.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
warning: [options] source value 7 is obsolete and will be removed in a future release
warning: [options] target value 7 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
3 warnings
warning: [options] source value 7 is obsolete and will be removed in a future release
warning: [options] target value 7 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
3 warnings
Note: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-constants\android\src\main\java\expo\modules\constants\ConstantsService.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-device\android\src\main\java\expo\modules\device\DeviceModule.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-file-system\android\src\main\java\expo\modules\filesystem\FileSystemModule.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-file-system\android\src\main\java\expo\modules\filesystem\FileSystemModule.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Note: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-location\android\src\main\java\expo\modules\location\utils\TimeoutObject.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-location\android\src\main\java\expo\modules\location\taskConsumers\GeofencingTaskConsumer.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Note: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\expo-notifications\android\src\main\java\expo\modules\notifications\notifications\presentation\builders\ExpoNotificationBuilder.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
warning: [options] source value 7 is obsolete and will be removed in a future release
warning: [options] target value 7 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
3 warnings
Note: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\auth\android\src\main\java\io\invertase\firebase\auth\ReactNativeFirebaseAuthModule.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\crashlytics\android\src\main\java\io\invertase\firebase\crashlytics\ReactNativeFirebaseCrashlyticsModule.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\database\android\src\reactnative\java\io\invertase\firebase\database\ReactNativeFirebaseDatabaseTransactionModule.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\database\android\src\reactnative\java\io\invertase\firebase\database\ReactNativeFirebaseDatabaseCommon.java uses unchecked or unsafe 
operations.
Note: Recompile with -Xlint:unchecked for details.
Note: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\@react-native-firebase\functions\android\src\main\java\io\invertase\firebase\functions\UniversalFirebaseFunctionsModule.java uses or overrides a deprecated 
API.
Note: Recompile with -Xlint:deprecation for details.
warning: [options] source value 7 is obsolete and will be removed in a future release
warning: [options] target value 7 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
Note: C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\react-native-safe-area-context\android\src\main\java\com\th3rdwave\safeareacontext\SafeAreaUtils.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
3 warnings
warning: [options] source value 7 is obsolete and will be removed in a future release
warning: [options] target value 7 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
3 warnings
warning: [options] source value 7 is obsolete and will be removed in a future release
warning: [options] target value 7 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
3 warnings
warning: [options] source value 7 is obsolete and will be removed in a future release
warning: [options] target value 7 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
3 warnings
warning: [options] source value 7 is obsolete and will be removed in a future release
warning: [options] target value 7 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
3 warnings
Note: C:\Users\The Clone Trooper\Desktop\MyApp\Git\android\app\src\debug\java\com\MyApp\ReactNativeFlipper.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':react-native-mmkv:externalNativeBuildDebug'.
> Build command failed.
  Error while executing process E:\AndroidStudioSDK\cmake\3.10.2.4988404\bin\ninja.exe with arguments {-C C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\react-native-mmkv\android\.cxx\cmake\debug\armeabi-v7a reactnativemmkv}
  ninja: Entering directory `C:\Users\The Clone Trooper\Desktop\MyApp\Git\node_modules\react-native-mmkv\android\.cxx\cmake\debug\armeabi-v7a'
  [1/38] Building CXX object core/CMakeFiles/core.dir/MMKV_OSX.cpp.o
  [2/38] Building CXX object core/CMakeFiles/core.dir/CodedInputDataCrypt_OSX.cpp.o
  [3/38] Building CXX object core/CMakeFiles/core.dir/MMKVLog.cpp.o
  [4/38] Building CXX object core/CMakeFiles/core.dir/MMKVLog_Android.cpp.o
  [5/38] Building CXX object core/CMakeFiles/core.dir/CodedInputDataCrypt.cpp.o
  [6/38] Building CXX object CMakeFiles/reactnativemmkv.dir/src/main/cpp/cpp-adapter.cpp.o
  [7/38] Building CXX object core/CMakeFiles/core.dir/MMKV_Android.cpp.o
  [8/38] Building CXX object core/CMakeFiles/core.dir/MMKV.cpp.o
  [9/38] Building CXX object CMakeFiles/reactnativemmkv.dir/src/main/cpp/MmkvHostObject.cpp.o
  [10/38] Building CXX object core/CMakeFiles/core.dir/MMKV_IO.cpp.o
  [11/38] Building CXX object core/CMakeFiles/core.dir/CodedInputData_OSX.cpp.o
  [12/38] Building CXX object core/CMakeFiles/core.dir/CodedInputData.cpp.o
  [13/38] Building CXX object core/CMakeFiles/core.dir/MiniPBCoder.cpp.o
  [14/38] Building CXX object core/CMakeFiles/core.dir/KeyValueHolder.cpp.o
  [15/38] Building CXX object core/CMakeFiles/core.dir/PBUtility.cpp.o
  [16/38] Building CXX object core/CMakeFiles/core.dir/MMBuffer.cpp.o
  [17/38] Building CXX object core/CMakeFiles/core.dir/CodedOutputData.cpp.o
  [18/38] Building CXX object core/CMakeFiles/core.dir/MiniPBCoder_OSX.cpp.o
  [19/38] Building CXX object core/CMakeFiles/core.dir/InterProcessLock_Win32.cpp.o
  [20/38] Building CXX object core/CMakeFiles/core.dir/InterProcessLock_Android.cpp.o
  [21/38] Building CXX object core/CMakeFiles/core.dir/InterProcessLock.cpp.o
  [22/38] Building CXX object core/CMakeFiles/core.dir/MemoryFile.cpp.o
  [23/38] Building CXX object core/CMakeFiles/core.dir/MemoryFile_Win32.cpp.o
  [24/38] Building CXX object core/CMakeFiles/core.dir/MemoryFile_OSX.cpp.o
  [25/38] Building CXX object core/CMakeFiles/core.dir/MemoryFile_Android.cpp.o
  [26/38] Building CXX object core/CMakeFiles/core.dir/ThreadLock.cpp.o
  [27/38] Building CXX object core/CMakeFiles/core.dir/aes/openssl/openssl_aes_core.cpp.o
  [28/38] Building CXX object core/CMakeFiles/core.dir/aes/openssl/openssl_md5_one.cpp.o
  [29/38] Building CXX object core/CMakeFiles/core.dir/ThreadLock_Win32.cpp.o
  [30/38] Building CXX object core/CMakeFiles/core.dir/aes/openssl/openssl_md5_dgst.cpp.o
  [31/38] Building CXX object core/CMakeFiles/core.dir/aes/AESCrypt.cpp.o
  [32/38] Building CXX object core/CMakeFiles/core.dir/aes/openssl/openssl_cfb128.cpp.o
  [33/38] Building ASM object core/CMakeFiles/core.dir/aes/openssl/openssl_aesv8-armx.S.o
  [34/38] Building CXX object core/CMakeFiles/core.dir/crc32/crc32_armv8.cpp.o
  [35/38] Building ASM object core/CMakeFiles/core.dir/aes/openssl/openssl_aes-armv4.S.o
  [36/38] Building CXX object core/CMakeFiles/core.dir/crc32/zlib/crc32.cpp.o
  [37/38] Linking CXX static library core\libcore.a
  [38/38] Linking CXX shared library ..\..\..\..\build\intermediates\cmake\debug\obj\armeabi-v7a\libreactnativemmkv.so
  FAILED: ../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/libreactnativemmkv.so
  cmd.exe /C "cd . && E:\AndroidStudioSDK\ndk\21.1.6352462\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=armv7-none-linux-androideabi21 --gcc-toolchain=E:/AndroidStudioSDK/ndk/21.1.6352462/toolchains/llvm/prebuilt/windows-x86_64 --sysroot=E:/AndroidStudioSDK/ndk/21.1.6352462/toolchains/llvm/prebuilt/windows-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security  -fexceptions -frtti -std=c++1y -DONANDROID -O0 -fno-limit-debug-info  -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libgcc_real.a -Wl,--exclude-libs,libatomic.a -Wl,--build-id -Wl,--fatal-warnings -Wl,--exclude-libs,libunwind.a -Wl,--no-undefined -Qunused-arguments -shared -Wl,-soname,libreactnativemmkv.so -o ..\..\..\..\build\intermediates\cmake\debug\obj\armeabi-v7a\libreactnativemmkv.so CMakeFiles/reactnativemmkv.dir/src/main/cpp/cpp-adapter.cpp.o CMakeFiles/reactnativemmkv.dir/src/main/cpp/MmkvHostObject.cpp.o -LC:/Users/THECLO~1/Desktop/MyApp/Git/NODE_M~1/RE2E13~1/android/build/REACT-~1.AAR/jni/ARMEAB~1 core/libcore.a -llog -lreactnativejni -landroid E:/AndroidStudioSDK/ndk/21.1.6352462/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/arm-linux-androideabi/libz.a -latomic -lm && cd ."
  ../../../../src/main/cpp/cpp-adapter.cpp:10: error: undefined reference to 'facebook::jsi::Value::asString(facebook::jsi::Runtime&) const &'
  ../../../../src/main/cpp/cpp-adapter.cpp:11: error: undefined reference to 'facebook::jsi::Value::~Value()'
  ../../../../src/main/cpp/cpp-adapter.cpp:11: error: undefined reference to 'facebook::jsi::Value::~Value()'
  ../../../../src/main/cpp/cpp-adapter.cpp:25: error: undefined reference to 'facebook::jsi::Value::asObject(facebook::jsi::Runtime&) const &'
  ../../../../../../../node_modules/react-native/ReactCommon/jsi\jsi/jsi.h:1241: error: undefined reference to 'facebook::jsi::JSError::JSError(facebook::jsi::Runtime&, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >)'
  ../../../../../../../node_modules/react-native/ReactCommon/jsi\jsi/jsi.h:940: error: undefined reference to 'facebook::jsi::Value::~Value()'
  ../../../../src/main/cpp/MmkvHostObject.h:16: error: undefined reference to 'facebook::jsi::HostObject::~HostObject()'
  ../../../../../../../node_modules/react-native/ReactCommon/jsi\jsi/jsi-inl.h:112: error: undefined reference to 'facebook::jsi::Value::~Value()'
  ../../../../../../../node_modules/react-native/ReactCommon/jsi\jsi/jsi-inl.h:112: error: undefined reference to 'facebook::jsi::Value::~Value()'
  ../../../../../../../node_modules/react-native/ReactCommon/jsi\jsi/jsi.h:966: error: undefined reference to 'facebook::jsi::Value::~Value()'
  ../../../../src/main/cpp/MmkvHostObject.cpp:22: error: undefined reference to 'facebook::jsi::HostObject::~HostObject()'
  ../../../../../../../node_modules/react-native/ReactCommon/jsi\jsi/jsi.h:0: error: undefined reference to 'vtable for facebook::jsi::HostObject'
  E:/AndroidStudioSDK/ndk/21.1.6352462/toolchains/llvm/prebuilt/windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin\ld: the vtable symbol may be undefined because the class is missing 
its key function
  ../../../../../../../node_modules/react-native/ReactCommon/jsi\jsi/jsi.h:940: error: undefined reference to 'facebook::jsi::Value::~Value()'
  ../../../../../../../node_modules/react-native/ReactCommon/jsi\jsi/jsi.h:961: error: undefined reference to 'facebook::jsi::Value::~Value()'
  CMakeFiles/reactnativemmkv.dir/src/main/cpp/MmkvHostObject.cpp.o:MmkvHostObject.cpp:vtable for MmkvHostObject: error: undefined reference to 'facebook::jsi::HostObject::set(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&, facebook::jsi::Value const&)'
  CMakeFiles/reactnativemmkv.dir/src/main/cpp/MmkvHostObject.cpp.o:MmkvHostObject.cpp:typeinfo for MmkvHostObject: error: undefined reference to 'typeinfo for facebook::jsi::HostObject'
  clang++: error: linker command failed with exit code 1 (use -v to see invocation)
  ninja: build stopped: subcommand failed.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 2m 4s

error Failed to install the app. Make sure you have the Android development environment set up: https://reactnative.dev/docs/environment-setup. Run CLI with --verbose flag for more details.
Error: Command failed: gradlew.bat app:installDevDebug -PreactNativeDevServerPort=8081
Warning: Mapping new ns http://schemas.android.com/repository/android/common/02 to old ns http://schemas.android.com/repository/android/common/01

I do not have a libreactnativemmkv.so file in my files. Is there a place that I can go ahead and download it and manually place it there?

mrousavy commented 2 years ago

Here's the Expo Config Plugin Axel sent me:

react-native-mmkv-plugin ```js const { withDangerousMod, WarningAggregator, AndroidConfig, withAppBuildGradle, withSettingsGradle } = require('@expo/config-plugins'); const path = require('path'); const fs = require('fs'); function getMMKVJSIModulePackage(packageName) { return `package ${packageName}; import com.facebook.react.bridge.JSIModuleSpec; import com.facebook.react.bridge.JavaScriptContextHolder; import com.facebook.react.bridge.ReactApplicationContext; import com.swmansion.reanimated.ReanimatedJSIModulePackage; import com.reactnativemmkv.MmkvModule; import java.util.Collections; import java.util.List; public class MMKVJSIModulePackage extends ReanimatedJSIModulePackage { @Override public List getJSIModules(ReactApplicationContext reactApplicationContext, JavaScriptContextHolder jsContext) { super.getJSIModules(reactApplicationContext, jsContext); MmkvModule.install(jsContext, reactApplicationContext.getFilesDir().getAbsolutePath() + "/mmkv"); return Collections.emptyList(); } }`; } async function readFileAsync(path) { return fs.promises.readFile(path, 'utf8'); } async function saveFileAsync(path, content) { return fs.promises.writeFile(path, content, 'utf8'); } function getPackageRoot(projectRoot) { return path.join(projectRoot, 'android', 'app', 'src', 'main', 'java'); } function getCurrentPackageName(projectRoot, packageRoot) { const mainApplication = AndroidConfig.Paths.getProjectFilePath( projectRoot, 'MainApplication' ); const packagePath = path.dirname(mainApplication); const packagePathParts = path .relative(packageRoot, packagePath) .split(path.sep) .filter(Boolean); return packagePathParts.join('.'); } async function editMainApplication(config, action) { const mainApplicationPath = AndroidConfig.Paths.getProjectFilePath( config.modRequest.projectRoot, 'MainApplication' ); try { const mainApplication = action(await readFileAsync(mainApplicationPath)); return await saveFileAsync(mainApplicationPath, mainApplication); } catch (e) { WarningAggregator.addWarningAndroid( 'react-native-mmkv', `Couldn't modify MainApplication.java - ${e}.` ); } } async function createMMKVJSIModulePackage(config, action) { const projectRoot = config.modRequest.projectRoot; const packageRoot = getPackageRoot(projectRoot); const packageName = getCurrentPackageName(projectRoot, packageRoot); const filePath = path.join( packageRoot, `${packageName.split('.').join('/')}/MMKVJSIModulePackage.java` ); try { return await saveFileAsync(filePath, getMMKVJSIModulePackage(packageName)); } catch (e) { WarningAggregator.addWarningAndroid( 'react-native-mmkv', `Couldn't create MMKVJSIModulePackage.java - ${e}.` ); } } const withMMKVJSIModulePackage = (config) => { return withDangerousMod(config, [ 'android', async (config) => { await createMMKVJSIModulePackage(config); return config; } ]); }; const withMainApplication = (config) => { return withDangerousMod(config, [ 'android', async (config) => { await editMainApplication(config, (mainApplication) => { const projectRoot = config.modRequest.projectRoot; const packageRoot = getPackageRoot(projectRoot); const packageName = getCurrentPackageName(projectRoot, packageRoot); const importStatement = `import ${packageName}.MMKVJSIModulePackage;`; if ( !mainApplication.includes(importStatement) && mainApplication.includes( 'import com.swmansion.reanimated.ReanimatedJSIModulePackage;' ) ) { mainApplication = mainApplication.replace( 'import com.swmansion.reanimated.ReanimatedJSIModulePackage;', importStatement ); } if ( mainApplication.includes('return new ReanimatedJSIModulePackage();') ) { mainApplication = mainApplication.replace( 'return new ReanimatedJSIModulePackage();', 'return new MMKVJSIModulePackage();' ); } return mainApplication; }); return config; } ]); }; const withCustomSettingsGradle = (config) => { return withSettingsGradle(config, (config) => { if (config.modResults.contents.includes(`include ':react-native-mmkv'`)) { return config; } config.modResults.contents = config.modResults.contents + ` include ':react-native-mmkv' project(':react-native-mmkv').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-mmkv/android/') `; return config; }); }; const withCustomAppBuildGradle = (config) => { return withAppBuildGradle(config, (config) => { if ( config.modResults.contents.includes( `implementation project(':react-native-mmkv')` ) ) { return config; } config.modResults.contents = config.modResults.contents.replace( `implementation "com.facebook.react:react-native:+" // From node_modules`, `implementation "com.facebook.react:react-native:+" // From node_modules implementation project(':react-native-mmkv')` ); return config; }); }; module.exports = function withMMKV(config, name) { config = withMMKVJSIModulePackage(config); config = withMainApplication(config); config = withCustomSettingsGradle(config); config = withCustomAppBuildGradle(config); return config; }; ```
smallzZz8 commented 2 years ago

Where would I put this?

Invertisment commented 2 years ago

I have a bare expo workflow project and I use MMKV. And I get this same stacktrace. I tried upgrading my tools, NDK, Compiling the android cleanly (https://github.com/mrousavy/react-native-mmkv/issues/162#issuecomment-925678477) and nothing worked.

I don't even know what causes this error.

And I think it's a very bad practice to edit native files myself because then it won't be possible to easily upgrade if something comes up. So I don't think I want to even touch java files too much. I think this should be put into MainApplication.java, but I'm not sure: https://github.com/mrousavy/react-native-mmkv/issues/162#issuecomment-926422460

Also I think it's a bad workaround. Why is it even failing in the first place? Why will this java workaround work?

This is my stacktrace:

<omitted>
  [30/38] Building CXX object core/CMakeFiles/core.dir/aes/openssl/openssl_md5_dgst.cpp.o
  [31/38] Building ASM object core/CMakeFiles/core.dir/aes/openssl/openssl_aesv8-armx.S.o
  [32/38] Building ASM object core/CMakeFiles/core.dir/aes/openssl/openssl_aes-armv4.S.o
  [33/38] Building CXX object core/CMakeFiles/core.dir/aes/openssl/openssl_aes_core.cpp.o
  [34/38] Building CXX object core/CMakeFiles/core.dir/aes/openssl/openssl_cfb128.cpp.o
  [35/38] Building CXX object core/CMakeFiles/core.dir/crc32/crc32_armv8.cpp.o
  [36/38] Building CXX object core/CMakeFiles/core.dir/crc32/zlib/crc32.cpp.o
  [37/38] Linking CXX static library core/libcore.a
  [38/38] Linking CXX shared library ../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/libreactnativemmkv.so
  FAILED: ../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/libreactnativemmkv.so 
  : && /home/martin/Android/Sdk/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=armv7-none-linux-androideabi21 --gcc-toolchain=/home/martin/Android/Sdk/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64 --sysroot=/home/martin/Android/Sdk/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security  -fexceptions -frtti -std=c++1y -DONANDROID -O0 -fno-limit-debug-info  -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libgcc_real.a -Wl,--exclude-libs,libatomic.a -Wl,--build-id -Wl,--fatal-warnings -Wl,--exclude-libs,libunwind.a -Wl,--no-undefined -Qunused-arguments -shared -Wl,-soname,libreactnativemmkv.so -o ../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/libreactnativemmkv.so CMakeFiles/reactnativemmkv.dir/src/main/cpp/cpp-adapter.cpp.o CMakeFiles/reactnativemmkv.dir/src/main/cpp/MmkvHostObject.cpp.o  core/libcore.a /home/martin/Android/Sdk/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/21/liblog.so ../../../../build/react-native-0.63.4.aar/jni/armeabi-v7a/libreactnativejni.so -landroid /home/martin/Android/Sdk/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/libz.a -latomic -lm && :
  ../../../../src/main/cpp/cpp-adapter.cpp:10: error: undefined reference to 'facebook::jsi::Value::asString(facebook::jsi::Runtime&) const &'
  ../../../../src/main/cpp/cpp-adapter.cpp:11: error: undefined reference to 'facebook::jsi::Value::~Value()'
  ../../../../src/main/cpp/cpp-adapter.cpp:11: error: undefined reference to 'facebook::jsi::Value::~Value()'
  ../../../../src/main/cpp/cpp-adapter.cpp:25: error: undefined reference to 'facebook::jsi::Value::asObject(facebook::jsi::Runtime&) const &'
  ../../../../../../../node_modules/react-native/ReactCommon/jsi/jsi/jsi.h:1241: error: undefined reference to 'facebook::jsi::JSError::JSError(facebook::jsi::Runtime&, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> >)'
  ../../../../../../../node_modules/react-native/ReactCommon/jsi/jsi/jsi.h:940: error: undefined reference to 'facebook::jsi::Value::~Value()'
  ../../../../src/main/cpp/MmkvHostObject.h:16: error: undefined reference to 'facebook::jsi::HostObject::~HostObject()'
  ../../../../../../../node_modules/react-native/ReactCommon/jsi/jsi/jsi-inl.h:112: error: undefined reference to 'facebook::jsi::Value::~Value()'
  ../../../../../../../node_modules/react-native/ReactCommon/jsi/jsi/jsi-inl.h:112: error: undefined reference to 'facebook::jsi::Value::~Value()'
  ../../../../../../../node_modules/react-native/ReactCommon/jsi/jsi/jsi.h:966: error: undefined reference to 'facebook::jsi::Value::~Value()'
  ../../../../src/main/cpp/MmkvHostObject.cpp:22: error: undefined reference to 'facebook::jsi::HostObject::~HostObject()'
  ../../../../../../../node_modules/react-native/ReactCommon/jsi/jsi/jsi.h:0: error: undefined reference to 'vtable for facebook::jsi::HostObject'
  /home/martin/Android/Sdk/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function
  ../../../../../../../node_modules/react-native/ReactCommon/jsi/jsi/jsi.h:940: error: undefined reference to 'facebook::jsi::Value::~Value()'
  ../../../../../../../node_modules/react-native/ReactCommon/jsi/jsi/jsi.h:961: error: undefined reference to 'facebook::jsi::Value::~Value()'
  CMakeFiles/reactnativemmkv.dir/src/main/cpp/MmkvHostObject.cpp.o:MmkvHostObject.cpp:vtable for MmkvHostObject: error: undefined reference to 'facebook::jsi::HostObject::set(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&, facebook::jsi::Value const&)'
  CMakeFiles/reactnativemmkv.dir/src/main/cpp/MmkvHostObject.cpp.o:MmkvHostObject.cpp:typeinfo for MmkvHostObject: error: undefined reference to 'typeinfo for facebook::jsi::HostObject'
  clang++: error: linker command failed with exit code 1 (use -v to see invocation)
  ninja: build stopped: subcommand failed.
richardwu commented 2 years ago

Here's the Expo Config Plugin Axel sent me:

react-native-mmkv-plugin

Hey @mrousavy, thanks for posting your config plugin here. I just tried it out in our project and we seem to be running into the same linking error as @Invertisment. I tried this both using eas build and eas build --local to no avail (I have confirmed that MainApplication.java is being overwritten with the new import).

Do you think something changed recently in the cpp package?

stack trace ``` > Task :react-native-mmkv:generateJsonModelDebug /build/workingdir/build/src/node_modules/react-native-mmkv/android/CMakeLists.txt : C/C++ debug|armeabi-v7a : CMake Warning: Manually-specified variables were not used by the project: MMKV_DISABLE_FLUTTER /build/workingdir/build/src/node_modules/react-native-mmkv/android/CMakeLists.txt : C/C++ debug|armeabi-v7a : CMake Warning: Manually-specified variables were not used by the project: MMKV_DISABLE_FLUTTER /build/workingdir/build/src/node_modules/react-native-mmkv/android/CMakeLists.txt : C/C++ debug|arm64-v8a : CMake Warning: Manually-specified variables were not used by the project: MMKV_DISABLE_FLUTTER /build/workingdir/build/src/node_modules/react-native-mmkv/android/CMakeLists.txt : C/C++ debug|arm64-v8a : CMake Warning: Manually-specified variables were not used by the project: MMKV_DISABLE_FLUTTER /build/workingdir/build/src/node_modules/react-native-mmkv/android/CMakeLists.txt : C/C++ debug|x86 : CMake Warning: Manually-specified variables were not used by the project: MMKV_DISABLE_FLUTTER /build/workingdir/build/src/node_modules/react-native-mmkv/android/CMakeLists.txt : C/C++ debug|x86 : CMake Warning: Manually-specified variables were not used by the project: MMKV_DISABLE_FLUTTER /build/workingdir/build/src/node_modules/react-native-mmkv/android/CMakeLists.txt : C/C++ debug|x86_64 : CMake Warning: Manually-specified variables were not used by the project: MMKV_DISABLE_FLUTTER /build/workingdir/build/src/node_modules/react-native-mmkv/android/CMakeLists.txt : C/C++ debug|x86_64 : CMake Warning: Manually-specified variables were not used by the project: MMKV_DISABLE_FLUTTER > Task :react-native-mmkv:externalNativeBuildDebug Build reactnativemmkv_armeabi-v7a ninja: Entering directory `/build/workingdir/build/src/node_modules/react-native-mmkv/android/.cxx/cmake/debug/armeabi-v7a' [1/38] Building CXX object core/CMakeFiles/core.dir/MMKV_Android.cpp.o [2/38] Building CXX object CMakeFiles/reactnativemmkv.dir/src/main/cpp/cpp-adapter.cpp.o [3/38] Building CXX object CMakeFiles/reactnativemmkv.dir/src/main/cpp/MmkvHostObject.cpp.o [4/38] Building CXX object core/CMakeFiles/core.dir/MMKV.cpp.o [5/38] Building CXX object core/CMakeFiles/core.dir/MMKV_OSX.cpp.o [6/38] Building CXX object core/CMakeFiles/core.dir/MMKVLog.cpp.o [7/38] Building CXX object core/CMakeFiles/core.dir/MMKV_IO.cpp.o [8/38] Building CXX object core/CMakeFiles/core.dir/CodedInputData_OSX.cpp.o [9/38] Building CXX object core/CMakeFiles/core.dir/CodedInputData.cpp.o [10/38] Building CXX object core/CMakeFiles/core.dir/MMKVLog_Android.cpp.o [11/38] Building CXX object core/CMakeFiles/core.dir/CodedInputDataCrypt_OSX.cpp.o [12/38] Building CXX object core/CMakeFiles/core.dir/CodedInputDataCrypt.cpp.o [13/38] Building CXX object core/CMakeFiles/core.dir/CodedOutputData.cpp.o [14/38] Building CXX object core/CMakeFiles/core.dir/PBUtility.cpp.o [15/38] Building CXX object core/CMakeFiles/core.dir/KeyValueHolder.cpp.o [16/38] Building CXX object core/CMakeFiles/core.dir/MiniPBCoder_OSX.cpp.o [17/38] Building CXX object core/CMakeFiles/core.dir/MMBuffer.cpp.o [18/38] Building CXX object core/CMakeFiles/core.dir/MiniPBCoder.cpp.o [19/38] Building CXX object core/CMakeFiles/core.dir/InterProcessLock.cpp.o [20/38] Building CXX object core/CMakeFiles/core.dir/InterProcessLock_Win32.cpp.o [21/38] Building CXX object core/CMakeFiles/core.dir/InterProcessLock_Android.cpp.o [22/38] Building CXX object core/CMakeFiles/core.dir/MemoryFile.cpp.o [23/38] Building CXX object core/CMakeFiles/core.dir/MemoryFile_Android.cpp.o [24/38] Building CXX object core/CMakeFiles/core.dir/MemoryFile_Win32.cpp.o [25/38] Building CXX object core/CMakeFiles/core.dir/MemoryFile_OSX.cpp.o [26/38] Building CXX object core/CMakeFiles/core.dir/ThreadLock_Win32.cpp.o [27/38] Building CXX object core/CMakeFiles/core.dir/ThreadLock.cpp.o [28/38] Building CXX object core/CMakeFiles/core.dir/aes/AESCrypt.cpp.o [29/38] Building CXX object core/CMakeFiles/core.dir/aes/openssl/openssl_aes_core.cpp.o [30/38] Building CXX object core/CMakeFiles/core.dir/aes/openssl/openssl_md5_one.cpp.o [31/38] Building CXX object core/CMakeFiles/core.dir/aes/openssl/openssl_md5_dgst.cpp.o [32/38] Building ASM object core/CMakeFiles/core.dir/aes/openssl/openssl_aesv8-armx.S.o [33/38] Building ASM object core/CMakeFiles/core.dir/aes/openssl/openssl_aes-armv4.S.o [34/38] Building CXX object core/CMakeFiles/core.dir/aes/openssl/openssl_cfb128.cpp.o [35/38] Building CXX object core/CMakeFiles/core.dir/crc32/crc32_armv8.cpp.o [36/38] Building CXX object core/CMakeFiles/core.dir/crc32/zlib/crc32.cpp.o [37/38] Linking CXX static library core/libcore.a [38/38] Linking CXX shared library ../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/libreactnativemmkv.so FAILED: ../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/libreactnativemmkv.so : && /opt/android/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=armv7-none-linux-androideabi21 --gcc-toolchain=/opt/android/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64 --sysroot=/opt/android/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -fexceptions -frtti -std=c++1y -DONANDROID -O0 -fno-limit-debug-info -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libgcc_real.a -Wl,--exclude-libs,libatomic.a -Wl,--build-id -Wl,--fatal-warnings -Wl,--exclude-libs,libunwind.a -Wl,--no-undefined -Qunused-arguments -shared -Wl,-soname,libreactnativemmkv.so -o ../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/libreactnativemmkv.so CMakeFiles/reactnativemmkv.dir/src/main/cpp/cpp-adapter.cpp.o CMakeFiles/reactnativemmkv.dir/src/main/cpp/MmkvHostObject.cpp.o core/libcore.a /opt/android/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/21/liblog.so ../../../../build/react-native-0.63.4.aar/jni/armeabi-v7a/libreactnativejni.so -landroid /opt/android/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/libz.a -latomic -lm && : ../../../../src/main/cpp/cpp-adapter.cpp:10: error: undefined reference to 'facebook::jsi::Value::asString(facebook::jsi::Runtime&) const &' ../../../../src/main/cpp/cpp-adapter.cpp:11: error: undefined reference to 'facebook::jsi::Value::~Value()' ../../../../src/main/cpp/cpp-adapter.cpp:11: error: undefined reference to 'facebook::jsi::Value::~Value()' ../../../../src/main/cpp/cpp-adapter.cpp:25: error: undefined reference to 'facebook::jsi::Value::asObject(facebook::jsi::Runtime&) const &' ../../../../../../../node_modules/react-native/ReactCommon/jsi/jsi/jsi.h:1241: error: undefined reference to 'facebook::jsi::JSError::JSError(facebook::jsi::Runtime&, std::__ndk1::basic_string, std::__ndk1::allocator >)' ../../../../../../../node_modules/react-native/ReactCommon/jsi/jsi/jsi.h:940: error: undefined reference to 'facebook::jsi::Value::~Value()' ../../../../src/main/cpp/MmkvHostObject.h:16: error: undefined reference to 'facebook::jsi::HostObject::~HostObject()' ../../../../../../../node_modules/react-native/ReactCommon/jsi/jsi/jsi-inl.h:112: error: undefined reference to 'facebook::jsi::Value::~Value()' ../../../../../../../node_modules/react-native/ReactCommon/jsi/jsi/jsi-inl.h:112: error: undefined reference to 'facebook::jsi::Value::~Value()' ../../../../../../../node_modules/react-native/ReactCommon/jsi/jsi/jsi.h:966: error: undefined reference to 'facebook::jsi::Value::~Value()' ../../../../src/main/cpp/MmkvHostObject.cpp:22: error: undefined reference to 'facebook::jsi::HostObject::~HostObject()' ../../../../../../../node_modules/react-native/ReactCommon/jsi/jsi/jsi.h:0: error: undefined reference to 'vtable for facebook::jsi::HostObject' /opt/android/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function ../../../../../../../node_modules/react-native/ReactCommon/jsi/jsi/jsi.h:940: error: undefined reference to 'facebook::jsi::Value::~Value()' ../../../../../../../node_modules/react-native/ReactCommon/jsi/jsi/jsi.h:961: error: undefined reference to 'facebook::jsi::Value::~Value()' CMakeFiles/reactnativemmkv.dir/src/main/cpp/MmkvHostObject.cpp.o:MmkvHostObject.cpp:vtable for MmkvHostObject: error: undefined reference to 'facebook::jsi::HostObject::set(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&, facebook::jsi::Value const&)' CMakeFiles/reactnativemmkv.dir/src/main/cpp/MmkvHostObject.cpp.o:MmkvHostObject.cpp:typeinfo for MmkvHostObject: error: undefined reference to 'typeinfo for facebook::jsi::HostObject' clang++: error: linker command failed with exit code 1 (use -v to see invocation) ninja: build stopped: subcommand failed. > Task :react-native-mmkv:externalNativeBuildDebug FAILED w: Detected multiple Kotlin daemon sessions at build/kotlin/sessions [stderr] FAILURE: Build failed with an exception. [stderr] * What went wrong: [stderr] Execution failed for task ':react-native-mmkv:externalNativeBuildDebug'. [stderr] > Build command failed. [stderr] Error while executing process /opt/android/cmake/3.10.2.4988404/bin/ninja with arguments {-C /build/workingdir/build/src/node_modules/react-native-mmkv/android/.cxx/cmake/debug/armeabi-v7a reactnativemmkv} [stderr] ninja: Entering directory `/build/workingdir/build/src/node_modules/react-native-mmkv/android/.cxx/cmake/debug/armeabi-v7a' [stderr] [1/38] Building CXX object core/CMakeFiles/core.dir/MMKV_Android.cpp.o [stderr] [2/38] Building CXX object CMakeFiles/reactnativemmkv.dir/src/main/cpp/cpp-adapter.cpp.o [stderr] [3/38] Building CXX object CMakeFiles/reactnativemmkv.dir/src/main/cpp/MmkvHostObject.cpp.o [stderr] [4/38] Building CXX object core/CMakeFiles/core.dir/MMKV.cpp.o [stderr] [5/38] Building CXX object core/CMakeFiles/core.dir/MMKV_OSX.cpp.o [stderr] [6/38] Building CXX object core/CMakeFiles/core.dir/MMKVLog.cpp.o [stderr] [7/38] Building CXX object core/CMakeFiles/core.dir/MMKV_IO.cpp.o [stderr] [8/38] Building CXX object core/CMakeFiles/core.dir/CodedInputData_OSX.cpp.o [stderr] [9/38] Building CXX object core/CMakeFiles/core.dir/CodedInputData.cpp.o [stderr] [10/38] Building CXX object core/CMakeFiles/core.dir/MMKVLog_Android.cpp.o [stderr] [11/38] Building CXX object core/CMakeFiles/core.dir/CodedInputDataCrypt_OSX.cpp.o [stderr] [12/38] Building CXX object core/CMakeFiles/core.dir/CodedInputDataCrypt.cpp.o [stderr] [13/38] Building CXX object core/CMakeFiles/core.dir/CodedOutputData.cpp.o [stderr] [14/38] Building CXX object core/CMakeFiles/core.dir/PBUtility.cpp.o [stderr] [15/38] Building CXX object core/CMakeFiles/core.dir/KeyValueHolder.cpp.o [stderr] [16/38] Building CXX object core/CMakeFiles/core.dir/MiniPBCoder_OSX.cpp.o [stderr] [17/38] Building CXX object core/CMakeFiles/core.dir/MMBuffer.cpp.o [stderr] [18/38] Building CXX object core/CMakeFiles/core.dir/MiniPBCoder.cpp.o [stderr] [19/38] Building CXX object core/CMakeFiles/core.dir/InterProcessLock.cpp.o [stderr] [20/38] Building CXX object core/CMakeFiles/core.dir/InterProcessLock_Win32.cpp.o [stderr] [21/38] Building CXX object core/CMakeFiles/core.dir/InterProcessLock_Android.cpp.o [stderr] [22/38] Building CXX object core/CMakeFiles/core.dir/MemoryFile.cpp.o [stderr] [23/38] Building CXX object core/CMakeFiles/core.dir/MemoryFile_Android.cpp.o [stderr] [24/38] Building CXX object core/CMakeFiles/core.dir/MemoryFile_Win32.cpp.o [stderr] [25/38] Building CXX object core/CMakeFiles/core.dir/MemoryFile_OSX.cpp.o [stderr] [26/38] Building CXX object core/CMakeFiles/core.dir/ThreadLock_Win32.cpp.o [stderr] [27/38] Building CXX object core/CMakeFiles/core.dir/ThreadLock.cpp.o [stderr] [28/38] Building CXX object core/CMakeFiles/core.dir/aes/AESCrypt.cpp.o [stderr] [29/38] Building CXX object core/CMakeFiles/core.dir/aes/openssl/openssl_aes_core.cpp.o [stderr] [30/38] Building CXX object core/CMakeFiles/core.dir/aes/openssl/openssl_md5_one.cpp.o [stderr] [31/38] Building CXX object core/CMakeFiles/core.dir/aes/openssl/openssl_md5_dgst.cpp.o [stderr] [32/38] Building ASM object core/CMakeFiles/core.dir/aes/openssl/openssl_aesv8-armx.S.o [stderr] [33/38] Building ASM object core/CMakeFiles/core.dir/aes/openssl/openssl_aes-armv4.S.o [stderr] [34/38] Building CXX object core/CMakeFiles/core.dir/aes/openssl/openssl_cfb128.cpp.o [stderr] [35/38] Building CXX object core/CMakeFiles/core.dir/crc32/crc32_armv8.cpp.o [stderr] [36/38] Building CXX object core/CMakeFiles/core.dir/crc32/zlib/crc32.cpp.o [stderr] [37/38] Linking CXX static library core/libcore.a [stderr] [38/38] Linking CXX shared library ../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/libreactnativemmkv.so [stderr] FAILED: ../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/libreactnativemmkv.so [stderr] : && /opt/android/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=armv7-none-linux-androideabi21 --gcc-toolchain=/opt/android/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64 --sysroot=/opt/android/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -fexceptions -frtti -std=c++1y -DONANDROID -O0 -fno-limit-debug-info -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libgcc_real.a -Wl,--exclude-libs,libatomic.a -Wl,--build-id -Wl,--fatal-warnings -Wl,--exclude-libs,libunwind.a -Wl,--no-undefined -Qunused-arguments -shared -Wl,-soname,libreactnativemmkv.so -o ../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/libreactnativemmkv.so CMakeFiles/reactnativemmkv.dir/src/main/cpp/cpp-adapter.cpp.o CMakeFiles/reactnativemmkv.dir/src/main/cpp/MmkvHostObject.cpp.o core/libcore.a /opt/android/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/21/liblog.so ../../../../build/react-native-0.63.4.aar/jni/armeabi-v7a/libreactnativejni.so -landroid /opt/android/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/libz.a -latomic -lm && : [stderr] ../../../../src/main/cpp/cpp-adapter.cpp:10: error: undefined reference to 'facebook::jsi::Value::asString(facebook::jsi::Runtime&) const &' [stderr] ../../../../src/main/cpp/cpp-adapter.cpp:11: error: undefined reference to 'facebook::jsi::Value::~Value()' [stderr] ../../../../src/main/cpp/cpp-adapter.cpp:11: error: undefined reference to 'facebook::jsi::Value::~Value()' [stderr] ../../../../src/main/cpp/cpp-adapter.cpp:25: error: undefined reference to 'facebook::jsi::Value::asObject(facebook::jsi::Runtime&) const &' [stderr] ../../../../../../../node_modules/react-native/ReactCommon/jsi/jsi/jsi.h:1241: error: undefined reference to 'facebook::jsi::JSError::JSError(facebook::jsi::Runtime&, std::__ndk1::basic_string, std::__ndk1::allocator >)' [stderr] ../../../../../../../node_modules/react-native/ReactCommon/jsi/jsi/jsi.h:940: error: undefined reference to 'facebook::jsi::Value::~Value()' [stderr] ../../../../src/main/cpp/MmkvHostObject.h:16: error: undefined reference to 'facebook::jsi::HostObject::~HostObject()' [stderr] ../../../../../../../node_modules/react-native/ReactCommon/jsi/jsi/jsi-inl.h:112: error: undefined reference to 'facebook::jsi::Value::~Value()' [stderr] ../../../../../../../node_modules/react-native/ReactCommon/jsi/jsi/jsi-inl.h:112: error: undefined reference to 'facebook::jsi::Value::~Value()' [stderr] ../../../../../../../node_modules/react-native/ReactCommon/jsi/jsi/jsi.h:966: error: undefined reference to 'facebook::jsi::Value::~Value()' [stderr] ../../../../src/main/cpp/MmkvHostObject.cpp:22: error: undefined reference to 'facebook::jsi::HostObject::~HostObject()' [stderr] ../../../../../../../node_modules/react-native/ReactCommon/jsi/jsi/jsi.h:0: error: undefined reference to 'vtable for facebook::jsi::HostObject' [stderr] /opt/android/ndk/21.1.6352462/toolchains/llvm/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function [stderr] ../../../../../../../node_modules/react-native/ReactCommon/jsi/jsi/jsi.h:940: error: undefined reference to 'facebook::jsi::Value::~Value()' [stderr] ../../../../../../../node_modules/react-native/ReactCommon/jsi/jsi/jsi.h:961: error: undefined reference to 'facebook::jsi::Value::~Value()' [stderr] CMakeFiles/reactnativemmkv.dir/src/main/cpp/MmkvHostObject.cpp.o:MmkvHostObject.cpp:vtable for MmkvHostObject: error: undefined reference to 'facebook::jsi::HostObject::set(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&, facebook::jsi::Value const&)' [stderr] CMakeFiles/reactnativemmkv.dir/src/main/cpp/MmkvHostObject.cpp.o:MmkvHostObject.cpp:typeinfo for MmkvHostObject: error: undefined reference to 'typeinfo for facebook::jsi::HostObject' [stderr] clang++: error: linker command failed with exit code 1 (use -v to see invocation) [stderr] ninja: build stopped: subcommand failed. [stderr] [stderr] * Try: [stderr] Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. [stderr] * Get more help at https://help.gradle.org [stderr] BUILD FAILED in 6m 25s Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0. Use '--warning-mode all' to show the individual deprecation warnings. See https://docs.gradle.org/6.8/userguide/command_line_interface.html#sec:command_line_warnings ```
mrousavy commented 2 years ago

Hmm, this looks like it cannot resolve JSI. Are you on React Native 0.63?

richardwu commented 2 years ago

Hmm, this looks like it cannot resolve JSI. Are you on React Native 0.63?

Yes, I'm on 0.63 (Expo SDK 42 is still pinned to 0.63.X).

FWIW, 1.3.0 builds successfully, but it crashes on startup on Android, which I believe was fixed in 1.3.1.

wodin commented 2 years ago

@Invertisment,

I think this should be put into MainApplication.java, but I'm not sure: #162 (comment)

I think this sort of thing is only temporary as mentioned here: https://github.com/mrousavy/react-native-mmkv/blob/master/INSTALL.md#notes

Also Config Plugins are an Expo thing to allow one to avoid manually editing native code.

But you're right that this config plugin is not going to fix this issue. I suspect (as other comments have hinted at) that it's a compatibility issue with certain versions of React Native.

@mrousavy, does React Native MMKV currently require RN 0.64?

mrousavy commented 2 years ago

@wodin It shouldn't require RN 0.64. But I don't have an RN 63 app to test

eeslamadelll commented 2 years ago

hope this might help

https://stackoverflow.com/a/69723157/11816387

brishin commented 2 years ago

I was able to fix this error: ../../../../src/main/cpp/cpp-adapter.cpp:10: error: undefined reference to 'facebook::jsi::Value::asString(facebook::jsi::Runtime&) const &' by adding the following patch:

diff --git a/node_modules/react-native-mmkv/android/CMakeLists.txt b/node_modules/react-native-mmkv/android/CMakeLists.txt
index 65a8408..7d6d144 100644
--- a/node_modules/react-native-mmkv/android/CMakeLists.txt
+++ b/node_modules/react-native-mmkv/android/CMakeLists.txt
@@ -14,6 +14,7 @@ include_directories(

 add_library(reactnativemmkv  # <-- Library name
         SHARED
+        "${NODE_MODULES_DIR}/react-native/ReactCommon/jsi/jsi/jsi.cpp"
         src/main/cpp/cpp-adapter.cpp
         src/main/cpp/MmkvHostObject.cpp
 )

It seems like you need to manually include jsi.cpp for older versions of RN.

thienna commented 2 years ago

same as @smallzZz8

thienna commented 2 years ago

A clean and rebuild usually fixes this issue for me 🤔

cd android
./gradlew clean
./gradlew buildDebug

./gradlew buildDebug work but ./gradlew assembleDebug not work

mrousavy commented 2 years ago

This seems unrelated. Let me know if you still have the error after cleaning everything, and if the error can be reproduced in the Example app - then I'll re-open the issue.

mrousavy commented 2 years ago

Actually it's not unrelated, but I think I've fixed that error. Check with v2.0.0

ildaneta commented 1 year ago

Hi @mrousavy !

I'm still having this problem into iOS and Android, using expo go, I also run expo prebuild and pod install but the error persist.

Should I do anything else more?

Error:

Error: react-native-mmkv is not supported in Expo Go! Use EAS (`expo prebuild`) or eject to a bare workflow instead.
 ERROR  Invariant Violation: Failed to call into JavaScript module method AppRegistry.runApplication(). Module has not been registered as callable. Registered callable JavaScript modules (n = 11): Systrace, JSTimers, HeapCapture, SamplingProfiler, RCTLog, RCTDeviceEventEmitter, RCTNativeAppEventEmitter, GlobalPerformanceLogger, JSDevSupportModule, HMRClient, RCTEventEmitter.
        A frequent cause of the error is that the application entry file path is incorrect. This can also happen when the JS bundle is corrupt or there is an early initialization error when loading React Native.
 ERROR  Invariant Violation: Failed to call into JavaScript module method AppRegistry.runApplication(). Module has not been registered as callable. Registered callable JavaScript modules (n = 11): Systrace, JSTimers, HeapCapture, SamplingProfiler, RCTLog, RCTDeviceEventEmitter, RCTNativeAppEventEmitter, GlobalPerformanceLogger, JSDevSupportModule, HMRClient, RCTEventEmitter.
        A frequent cause of the error is that the application entry file path is incorrect. This can also happen when the JS bundle is corrupt or there is an early initialization error when loading React Native.
mrousavy commented 1 year ago

Hi! RN MMKV is not supported on Expo Go. You need to use EAS Instead. Expo has some docs on the difference