facebook / SoLoader

Native code loader for Android
Apache License 2.0
1.33k stars 175 forks source link

android.system.ErrnoException on Android 10 and 11 #74

Closed brewin closed 2 years ago

brewin commented 3 years ago

I'm getting crash reports for an app using SoLoader v0.10.1. The reports are coming from devices running Android 10 and 11. The app is published as an AAB (Android App Bundle), which may or may not be related to the problem. I'm wondering if these exceptions are happening when users try to install the app on an incompatible architecture as described in this comment. So this might not be a bug, but I don't know for sure. All the reports are from new high-end devices like the Galaxy S21, which might indicate that the users are technically savvy enough to sideload APKs.

java.lang.RuntimeException: 
  at android.app.ActivityThread.handleMakeApplication (ActivityThread.java:7469)
  at android.app.ActivityThread.handleBindApplication (ActivityThread.java:7405)
  at android.app.ActivityThread.access$1500 (ActivityThread.java:301)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2130)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:246)
  at android.app.ActivityThread.main (ActivityThread.java:8456)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:596)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1130)
Caused by: java.lang.RuntimeException: 
  at com.facebook.soloader.SoLoader.init (SoLoader.java:12)
  at com.mypackage.App.setupMapbox (App.java:12)
  at com.mypackage.App.onCreate (App.java:15)
  at android.app.Instrumentation.callApplicationOnCreate (Instrumentation.java:1192)
  at android.app.ActivityThread.handleMakeApplication (ActivityThread.java:7464)
  at android.app.ActivityThread.handleBindApplication (ActivityThread.java:7405)
  at android.app.ActivityThread.access$1500 (ActivityThread.java:301)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2130)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:246)
  at android.app.ActivityThread.main (ActivityThread.java:8456)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:596)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1130)
Caused by: java.io.FileNotFoundException: 
  at libcore.io.IoBridge.open (IoBridge.java:492)
  at java.io.FileOutputStream.<init> (FileOutputStream.java:236)
  at java.io.FileOutputStream.<init> (FileOutputStream.java:186)
  at com.facebook.soloader.FileLocker.<init> (FileLocker.java:5)
  at com.facebook.soloader.FileLocker.lock (FileLocker.java:3)
  at com.facebook.soloader.UnpackingSoSource.prepare (UnpackingSoSource.java:3)
  at com.facebook.soloader.SoLoader.initSoSources (SoLoader.java:7)
  at com.facebook.soloader.SoLoader.init (SoLoader.java:4)
  at com.facebook.soloader.SoLoader.init (SoLoader.java:4)
  at com.facebook.soloader.SoLoader.init (SoLoader.java:4)
  at com.mypackage.App.setupMapbox (App.java:4)
  at com.mypackage.App.onCreate (App.java:15)
  at android.app.Instrumentation.callApplicationOnCreate (Instrumentation.java:1192)
  at android.app.ActivityThread.handleMakeApplication (ActivityThread.java:7464)
  at android.app.ActivityThread.handleBindApplication (ActivityThread.java:7405)
  at android.app.ActivityThread.access$1500 (ActivityThread.java:301)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2130)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:246)
  at android.app.ActivityThread.main (ActivityThread.java:8456)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:596)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1130)
Caused by: android.system.ErrnoException: 
  at libcore.io.Linux.open (Linux.java)
  at libcore.io.ForwardingOs.open (ForwardingOs.java:166)
  at libcore.io.BlockGuardOs.open (BlockGuardOs.java:254)
  at libcore.io.ForwardingOs.open (ForwardingOs.java:166)
  at android.app.ActivityThread$AndroidOs.open (ActivityThread.java:8317)
  at libcore.io.IoBridge.open (IoBridge.java:478)
  at java.io.FileOutputStream.<init> (FileOutputStream.java:236)
  at java.io.FileOutputStream.<init> (FileOutputStream.java:186)
  at com.facebook.soloader.FileLocker.<init> (FileLocker.java:5)
  at com.facebook.soloader.FileLocker.lock (FileLocker.java:3)
  at com.facebook.soloader.UnpackingSoSource.prepare (UnpackingSoSource.java:3)
  at com.facebook.soloader.SoLoader.initSoSources (SoLoader.java:7)
  at com.facebook.soloader.SoLoader.init (SoLoader.java:4)
  at com.facebook.soloader.SoLoader.init (SoLoader.java:4)
  at com.facebook.soloader.SoLoader.init (SoLoader.java:4)
  at com.mypackage.App.setupMapbox (App.java:4)
  at com.mypackage.App.onCreate (App.java:15)
  at android.app.Instrumentation.callApplicationOnCreate (Instrumentation.java:1192)
  at android.app.ActivityThread.handleMakeApplication (ActivityThread.java:7464)
  at android.app.ActivityThread.handleBindApplication (ActivityThread.java:7405)
  at android.app.ActivityThread.access$1500 (ActivityThread.java:301)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2130)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:246)
  at android.app.ActivityThread.main (ActivityThread.java:8456)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:596)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1130)
juanamd commented 3 years ago

I'm experiencing the same issue also on Android version 10 and 11, mostly on Samsung devices, and with SoLoader v0.10.1.

Based on the stack trace, it seems it's related to the creation of the FileOutputStream inside the FileLocker class when using the dso_lock file. I'm no expert on Android, but it seems weird since it's writing to an internal storage dir, right? But it still throws a permission denied error.

Here is the stack trace (redacted app name):

java.lang.RuntimeException: Unable to create application com.example.myapp.MainApplication: java.lang.RuntimeException: java.io.FileNotFoundException: /data/user/0/com.example.myapp/lib-0/dso_lock: open failed: EACCES (Permission denied)
        at android.app.ActivityThread.handleMakeApplication(ActivityThread.java:7132)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7077)
        at android.app.ActivityThread.access$1500(ActivityThread.java:273)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2096)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:237)
        at android.app.ActivityThread.main(ActivityThread.java:8107)
        at java.lang.reflect.Method.invoke(Method.java:-2)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)

Caused by: java.lang.RuntimeException: java.io.FileNotFoundException: /data/user/0/com.example.myapp/lib-0/dso_lock: open failed: EACCES (Permission denied)
        at com.facebook.soloader.SoLoader.init(SoLoader.java:219)
        at com.example.myapp.MainApplication.onCreate(MainApplication.java:54)
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1190)
        at android.app.ActivityThread.handleMakeApplication(ActivityThread.java:7127)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7077)
        at android.app.ActivityThread.access$1500(ActivityThread.java:273)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2096)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:237)
        at android.app.ActivityThread.main(ActivityThread.java:8107)
        at java.lang.reflect.Method.invoke(Method.java:-2)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)

Caused by: java.io.FileNotFoundException: /data/user/0/com.example.myapp/lib-0/dso_lock: open failed: EACCES (Permission denied)
        at libcore.io.IoBridge.open(IoBridge.java:496)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:235)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:186)
        at com.facebook.soloader.FileLocker.<init>(FileLocker.java:36)
        at com.facebook.soloader.FileLocker.lock(FileLocker.java:32)
        at com.facebook.soloader.UnpackingSoSource.prepare(UnpackingSoSource.java:430)
        at com.facebook.soloader.SoLoader.initSoSources(SoLoader.java:327)
        at com.facebook.soloader.SoLoader.init(SoLoader.java:207)
        at com.facebook.soloader.SoLoader.init(SoLoader.java:189)
        at com.facebook.soloader.SoLoader.init(SoLoader.java:217)
        at com.example.myapp.MainApplication.onCreate(MainApplication.java:54)
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1190)
        at android.app.ActivityThread.handleMakeApplication(ActivityThread.java:7127)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7077)
        at android.app.ActivityThread.access$1500(ActivityThread.java:273)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2096)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:237)
        at android.app.ActivityThread.main(ActivityThread.java:8107)
        at java.lang.reflect.Method.invoke(Method.java:-2)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)

Caused by: android.system.ErrnoException: open failed: EACCES (Permission denied)
        at libcore.io.Linux.open(Linux.java:-2)
        at libcore.io.ForwardingOs.open(ForwardingOs.java:167)
        at libcore.io.BlockGuardOs.open(BlockGuardOs.java:252)
        at libcore.io.ForwardingOs.open(ForwardingOs.java:167)
        at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:7984)
        at libcore.io.IoBridge.open(IoBridge.java:482)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:235)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:186)
        at com.facebook.soloader.FileLocker.<init>(FileLocker.java:36)
        at com.facebook.soloader.FileLocker.lock(FileLocker.java:32)
        at com.facebook.soloader.UnpackingSoSource.prepare(UnpackingSoSource.java:430)
        at com.facebook.soloader.SoLoader.initSoSources(SoLoader.java:327)
        at com.facebook.soloader.SoLoader.init(SoLoader.java:207)
        at com.facebook.soloader.SoLoader.init(SoLoader.java:189)
        at com.facebook.soloader.SoLoader.init(SoLoader.java:217)
        at com.example.myapp.MainApplication.onCreate(MainApplication.java:54)
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1190)
        at android.app.ActivityThread.handleMakeApplication(ActivityThread.java:7127)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7077)
        at android.app.ActivityThread.access$1500(ActivityThread.java:273)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2096)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:237)
        at android.app.ActivityThread.main(ActivityThread.java:8107)
        at java.lang.reflect.Method.invoke(Method.java:-2)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
nes123 commented 3 years ago

Experiencing the same exact problem with Andriod 10 and 11. Any new insights on that? it started after upgrading react-native from 0.62 to 0.64.0

brewin commented 3 years ago

I still don't know what causes this, but I worked around the issue by using the system loader when SoLoader fails. I started using SoLoader because the system loader was causing crashes on some devices. Using them both seems to have resolved all issues related to loading the native library, or at least I'm no longer getting any crash reports.

This code will be slightly different depending on what native library you're trying to load. LibraryLoader is part of the Mapbox SDK.

        val useSoLoader = try {
            SoLoader.init(this, false)
            true
        } catch (e: Exception) {
            false
        }
        LibraryLoader.setLibraryLoader(object : LibraryLoader() {
            override fun load(name: String?) {
                if (useSoLoader) {
                    try {
                        SoLoader.loadLibrary(name!!)
                    } catch (e: Exception) {
                        System.loadLibrary(name!!)
                    }
                } else {
                    System.loadLibrary(name!!)
                }
            }
        })
juanamd commented 3 years ago

Thanks for sharing your workaround @brewin . I have some questions though. Are you using react native or is it a native Android app? I'm trying to figure how would this apply to MainApplication.onCreate() since I cannot see that the "load" function would get called anywhere. From what I understand SoLoader.init would already load each library on its own right?

brewin commented 3 years ago

I have some questions though. Are you using react native or is it a native Android app?

It's a native Android app.

I'm trying to figure how would this apply to MainApplication.onCreate() since I cannot see that the "load" function would get called anywhere. From what I understand SoLoader.init would already load each library on its own right?

Unless React Native has a way to set the library loader like Mapbox does, you probably can't use this workaround.

nes123 commented 3 years ago

It is becoming a big issue in our application which is in production. Did anyone manage to find a workaround?

Is it essential to include soloader for react-native apps? is there an alternative?

nes123 commented 3 years ago

Any help with that will be very much appreciated :)

SudoPlz commented 2 years ago

I recently upgraded to react-native 0.66 and I started noticing the following launch crash:

java.lang.RuntimeException: 
  at android.app.ActivityThread.handleBindApplication (ActivityThread.java:7532)
  at android.app.ActivityThread.access$1500 (ActivityThread.java:301)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2150)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:246)
  at android.app.ActivityThread.main (ActivityThread.java:8587)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:602)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1130)
Caused by: java.lang.RuntimeException: 
  at com.facebook.soloader.SoLoader.init (SoLoader.java:219)
  at com.reactnativenavigation.NavigationApplication.onCreate (NavigationApplication.java:26)
  at com.acuityscheduling.app.android.MainApplication.onCreate (MainApplication.java:116)
  at android.app.Instrumentation.callApplicationOnCreate (Instrumentation.java:1192)
  at android.app.ActivityThread.handleBindApplication (ActivityThread.java:7527)
Caused by: java.io.FileNotFoundException: 
  at libcore.io.IoBridge.open (IoBridge.java:492)
  at java.io.FileOutputStream.<init> (FileOutputStream.java:236)
  at java.io.FileOutputStream.<init> (FileOutputStream.java:186)
  at com.facebook.soloader.FileLocker.<init> (FileLocker.java:36)
  at com.facebook.soloader.FileLocker.lock (FileLocker.java:32)
  at com.facebook.soloader.UnpackingSoSource.prepare (UnpackingSoSource.java:430)
  at com.facebook.soloader.SoLoader.initSoSources (SoLoader.java:327)
  at com.facebook.soloader.SoLoader.init (SoLoader.java:207)
  at com.facebook.soloader.SoLoader.init (SoLoader.java:189)
  at com.facebook.soloader.SoLoader.init (SoLoader.java:217)
Caused by: android.system.ErrnoException: 
  at libcore.io.Linux.open (Native Method)
  at libcore.io.ForwardingOs.open (ForwardingOs.java:166)
  at libcore.io.BlockGuardOs.open (BlockGuardOs.java:254)
  at libcore.io.ForwardingOs.open (ForwardingOs.java:166)
  at android.app.ActivityThread$AndroidOs.open (ActivityThread.java:8448)
  at libcore.io.IoBridge.open (IoBridge.java:478)

It's the most common crash reason on our production app, and I've never experienced it locally. I'm trying to figure out what file the soloader is missing and thus this crash happens.

By following the stacktrace it looks like it all starts here: https://github.com/facebook/SoLoader/blob/v0.9.0/java/com/facebook/soloader/UnpackingSoSource.java#L410-L411 where it's trying to load the following file: dso_lock (=LOCK_FILE_NAME) from the soDirectory.

Does anyone have any more insight as to what file that dso_lock file is, and why it may not be found?

p.s: For us this only seems to be happening on Android 11 (SDK 30).

badrey commented 2 years ago

I recently upgraded to react-native 0.66 and I started noticing the following launch crash:

java.lang.RuntimeException: 
  at android.app.ActivityThread.handleBindApplication (ActivityThread.java:7532)
  at android.app.ActivityThread.access$1500 (ActivityThread.java:301)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2150)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:246)
  at android.app.ActivityThread.main (ActivityThread.java:8587)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:602)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1130)
Caused by: java.lang.RuntimeException: 
  at com.facebook.soloader.SoLoader.init (SoLoader.java:219)
  at com.reactnativenavigation.NavigationApplication.onCreate (NavigationApplication.java:26)
  at com.acuityscheduling.app.android.MainApplication.onCreate (MainApplication.java:116)
  at android.app.Instrumentation.callApplicationOnCreate (Instrumentation.java:1192)
  at android.app.ActivityThread.handleBindApplication (ActivityThread.java:7527)
Caused by: java.io.FileNotFoundException: 
  at libcore.io.IoBridge.open (IoBridge.java:492)
  at java.io.FileOutputStream.<init> (FileOutputStream.java:236)
  at java.io.FileOutputStream.<init> (FileOutputStream.java:186)
  at com.facebook.soloader.FileLocker.<init> (FileLocker.java:36)
  at com.facebook.soloader.FileLocker.lock (FileLocker.java:32)
  at com.facebook.soloader.UnpackingSoSource.prepare (UnpackingSoSource.java:430)
  at com.facebook.soloader.SoLoader.initSoSources (SoLoader.java:327)
  at com.facebook.soloader.SoLoader.init (SoLoader.java:207)
  at com.facebook.soloader.SoLoader.init (SoLoader.java:189)
  at com.facebook.soloader.SoLoader.init (SoLoader.java:217)
Caused by: android.system.ErrnoException: 
  at libcore.io.Linux.open (Native Method)
  at libcore.io.ForwardingOs.open (ForwardingOs.java:166)
  at libcore.io.BlockGuardOs.open (BlockGuardOs.java:254)
  at libcore.io.ForwardingOs.open (ForwardingOs.java:166)
  at android.app.ActivityThread$AndroidOs.open (ActivityThread.java:8448)
  at libcore.io.IoBridge.open (IoBridge.java:478)

It's the most common crash reason on our production app, and I've never experienced it locally. I'm trying to figure out what file the soloader is missing and thus this crash happens.

By following the stacktrace it looks like it all starts here: https://github.com/facebook/SoLoader/blob/v0.9.0/java/com/facebook/soloader/UnpackingSoSource.java#L410-L411 where it's trying to load the following file: dso_lock (=LOCK_FILE_NAME) from the soDirectory.

Does anyone have any more insight as to what file that dso_lock file is, and why it may not be found?

p.s: For us this only seems to be happening on Android 11 (SDK 30).

Same for me on react-native 0.66

jamsch commented 2 years ago

This comment may help -- https://github.com/facebook/flipper/issues/2213#issuecomment-952141230

wildseansy commented 2 years ago

Based on this thread, I'm adding

override fun onCreate() {
  super.onCreate();
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    // https://github.com/facebook/flipper/issues/2213:
    // in case read/write permissions are somehow still revoked by backup system, attempt to restore them here
    try {
      File("${this.dataDir}/lib-main").setWritable(true, true)
      File("${this.dataDir}/lib-main").setReadable(true, true)
    } catch (e: Exception) {
      Timber.e("Exception trying to apply permissions: ${e.localizedMessage}")
    }
  }
  SoLoader.init(this, false)
}

My app is getting this issue in production, which doesn't use Flipper at all. Based on https://github.com/facebook/flipper/issues/2213#issuecomment-952141230, this is the only recommendation that might fix it. Please update soloader, see https://github.com/facebook/SoLoader/issues/74#issuecomment-961986593

This comment may help -- facebook/flipper#2213 (comment)

EmilScherdin commented 2 years ago

Interesting @wildseansy! Please let us know here if you get it solved in production!

pedrolopes10 commented 2 years ago

This error also happens on Android 12 and I have more than 2k crashes related to this and a lots of bad reviews. Any updates?

@wildseansy did it solve?

Thanks

wildseansy commented 2 years ago

Still in our release pipeline, releasing thurs-fri, will keep posted

pedrolopes10 commented 2 years ago

Hi guys just an update:

The File setWritable solution didn't work for me. With the new soloader 0.10.2 worked on Android 12 but now I'm facing new errors on my phone.

pedrolopes10 commented 2 years ago

With soloader 0.10.3 issue is fixed! Nice work!

jamsch commented 2 years ago

With soloader 0.10.3 issue is fixed! Nice work!

That's hopeful to hear. Pushing out a new release of my React Native app with the following

// android/app/build.gradle
configurations.all {
     resolutionStrategy {
       force "com.facebook.soloader:soloader:0.10.3"
     }
}
mym0404 commented 2 years ago

Gradle force versioning is deprecated link You can use strict versioning

    implementation('com.facebook.soloader:soloader:0.10.3') {
        version {
            strictly '0.10.3'
        }
    }
jamsch commented 2 years ago

Gradle force versioning is deprecated link You can use strict versioning

Thanks for letting me know! Will do.

wildseansy commented 2 years ago

Pretty sure you can just update your gradle.properties to include

SO_LOADER_VERSION=0.10.3

This was helpful for me too, seeing the changes: https://github.com/facebook/SoLoader/releases

Thanks for flagging the new release @mym0404 🙏

simpleton commented 2 years ago

I will close this issue due to 0.10.3 should fix the crash. let me know if it doesn't work. thanks guys.

wildseansy commented 2 years ago

Updating gradle.properties didn't actually correctly update the version for my project. There may be a RN node_modules dependency that might be overriding it in my case, I'm not totally sure. This is what I did to resolve the version for my project

// gradle.properties
SO_LOADER_VERSION=0.10.3

// app/build.gradle
configurations.all {
    resolutionStrategy {
        eachDependency { details ->
            if (details.requested.group == 'com.facebook.soloader') {
                //https://github.com/facebook/SoLoader/issues/74#issuecomment-961986593
                switch (details.requested.name) {
                    case 'soloader':
                        details.useVersion SO_LOADER_VERSION
                        break
                }
            }
        }
    }
}

Pretty sure you can just update your gradle.properties to include

SO_LOADER_VERSION=0.10.3

This was helpful for me too, seeing the changes: https://github.com/facebook/SoLoader/releases

Thanks for flagging the new release @mym0404 🙏

cristianoccazinsp commented 2 years ago

Shouldn't RN update it's own dependency to SO loader?

MuhammadRafeh commented 2 years ago

@wildseansy in the file where to put this code? I mean in android or in dependency?

wildseansy commented 1 year ago

@MuhammadRafeh in your Android app/build.gradle