fresco: Fatal Exception: java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libnative-imagetranscoder.so caused by: dlopen failed: "/data/data/com.degoo.android/lib-main/libnative-imagetranscoder.so" is 64-bit instead of 32-bit
Since a similar issue #2339 was closed, I’d like to know if there’s solution for the error below:
Fatal Exception: java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libnative-imagetranscoder.so caused by: dlopen failed: "/data/data/com.degoo.android/lib-main/libnative-imagetranscoder.so" is 64-bit instead of 32-bit
at com.facebook.soloader.SoLoader.doLoadLibraryBySoName + 738(SoLoader.java:738)
at com.facebook.soloader.SoLoader.loadLibraryBySoName + 591(SoLoader.java:591)
at com.facebook.soloader.SoLoader.loadLibrary + 529(SoLoader.java:529)
at com.facebook.soloader.SoLoader.loadLibrary + 484(SoLoader.java:484)
at com.facebook.imagepipeline.nativecode.NativeJpegTranscoderSoLoader.ensure + 28(NativeJpegTranscoderSoLoader.java:28)
at com.facebook.imagepipeline.nativecode.NativeJpegTranscoder.(S:47)
at com.facebook.imagepipeline.nativecode.NativeJpegTranscoderFactory.createImageTranscoder + 35(NativeJpegTranscoderFactory.java:35)
at com.facebook.imagepipeline.transcoder.MultiImageTranscoderFactory.getNativeImageTranscoder + 70(MultiImageTranscoderFactory.java:70)
at com.facebook.imagepipeline.transcoder.MultiImageTranscoderFactory.createImageTranscoder + 47(MultiImageTranscoderFactory.java:47)
at com.facebook.imagepipeline.producers.ResizeAndRotateProducer$TransformingConsumer.onNewResultImpl + 161(ResizeAndRotateProducer.java:161)
at com.facebook.imagepipeline.producers.ResizeAndRotateProducer$TransformingConsumer.onNewResultImpl + 83(ResizeAndRotateProducer.java:83)
at com.facebook.imagepipeline.producers.BaseConsumer.onNewResult + 97(BaseConsumer.java:97)
at com.facebook.imagepipeline.producers.AddImageTransformMetaDataProducer$AddImageTransformMetaDataConsumer.onNewResultImpl + 46(AddImageTransformMetaDataProducer.java:46)
at com.facebook.imagepipeline.producers.AddImageTransformMetaDataProducer$AddImageTransformMetaDataConsumer.onNewResultImpl + 30(AddImageTransformMetaDataProducer.java:30)
at com.facebook.imagepipeline.producers.BaseConsumer.onNewResult + 97(BaseConsumer.java:97)
at com.facebook.imagepipeline.producers.MultiplexProducer$Multiplexer.onNextResult + 452(MultiplexProducer.java:452)
at com.facebook.imagepipeline.producers.MultiplexProducer$Multiplexer$ForwardingConsumer.onNewResultImpl + 513(MultiplexProducer.java:513)
at com.facebook.imagepipeline.producers.MultiplexProducer$Multiplexer$ForwardingConsumer.onNewResultImpl + 506(MultiplexProducer.java:506)
at com.facebook.imagepipeline.producers.BaseConsumer.onNewResult + 97(BaseConsumer.java:97)
at com.facebook.imagepipeline.producers.EncodedMemoryCacheProducer$EncodedMemoryCacheConsumer.onNewResultImpl + 166(EncodedMemoryCacheProducer.java:166)
at com.facebook.imagepipeline.producers.EncodedMemoryCacheProducer$EncodedMemoryCacheConsumer.onNewResultImpl + 111(EncodedMemoryCacheProducer.java:111)
at com.facebook.imagepipeline.producers.BaseConsumer.onNewResult + 97(BaseConsumer.java:97)
at com.facebook.imagepipeline.producers.DiskCacheReadProducer$1.then + 107(DiskCacheReadProducer.java:107)
at com.facebook.imagepipeline.producers.DiskCacheReadProducer$1.then + 88(DiskCacheReadProducer.java:88)
at bolts.Task$14.run + 872(Task.java:872)
at bolts.BoltsExecutors$ImmediateExecutor.execute + 105(BoltsExecutors.java:105)
at bolts.Task.completeImmediately + 863(Task.java:863)
at bolts.Task.access$000 + 32(Task.java:32)
at bolts.Task$10.then + 654(Task.java:654)
at bolts.Task$10.then + 651(Task.java:651)
at bolts.Task.runContinuations + 956(Task.java:956)
at bolts.Task.trySetResult + 994(Task.java:994)
at bolts.TaskCompletionSource.trySetResult + 39(TaskCompletionSource.java:39)
at bolts.TaskCompletionSource.setResult + 62(TaskCompletionSource.java:62)
at bolts.Task$4.run + 357(Task.java:357)
at java.util.concurrent.ThreadPoolExecutor.runWorker + 1115(ThreadPoolExecutor.java:1115)
at java.util.concurrent.ThreadPoolExecutor$Worker.run + 590(ThreadPoolExecutor.java:590)
at com.facebook.imagepipeline.core.PriorityThreadFactory$1.run + 51(PriorityThreadFactory.java:51)
at java.lang.Thread.run + 818(Thread.java:818)
I’ve tried downgrading my Android Gradle plugin with the https://github.com/facebook/SoLoader/issues/29#issuecomment-492929087 suggestion but that gives me build errors about compatibility issues with androidx dependencies like:
Android dependency 'androidx.core:core' has different version for the compile (1.0.0) and runtime (1.0.1) classpath. You should manually set the same version via DependencyResolution
After fixing them, I get an exception related to Dagger:
e: [kapt] An exception occurred: java.util.NoSuchElementException
at com.sun.tools.javac.util.List$2.next(List.java:432)
at com.google.common.collect.Iterators.getOnlyElement(Iterators.java:302)
at com.google.common.collect.Iterables.getOnlyElement(Iterables.java:254)
at dagger.android.processor.AndroidMapKeys.mapKeyValue(AndroidMapKeys.java:75)
at dagger.android.processor.AndroidMapKeys.lambda$annotationsAndFrameworkTypes$5(AndroidMapKeys.java:56)
at java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1321)
So I really don’t want to downgrade my Android Gradle plugin. Also, we’ve only noticed the error after making our app support 64-bit architecture, so it makes more sense the error is related with architecture rather the Android Gradle plugin.
The error mostly occurs on Oppo and Android 5.1.1:
Any idea how this could be solved?
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Reactions: 1
- Comments: 30 (7 by maintainers)
I tried to upgrade the Fresco v.2.6.0 to 3.0.0 and got a crash (Samsung Galaxy S21 FE 5G Android 13): Fatal Exception: java.lang.UnsatisfiedLinkError: dlopen failed: library “libnative-imagetranscoder.so” not found at java.lang.Runtime.loadLibrary0(Runtime.java:1077) at java.lang.Runtime.loadLibrary0(Runtime.java:998) at java.lang.System.loadLibrary(System.java:1661) at com.facebook.soloader.nativeloader.SystemDelegate.loadLibrary(SystemDelegate.java:24) at com.facebook.soloader.nativeloader.NativeLoader.loadLibrary(NativeLoader.java:52) at com.facebook.soloader.nativeloader.NativeLoader.loadLibrary(NativeLoader.java:30) at com.facebook.imagepipeline.nativecode.NativeJpegTranscoderSoLoader.ensure(NativeJpegTranscoderSoLoader.java:33) at com.facebook.imagepipeline.nativecode.NativeJpegTranscoder.<init>(NativeJpegTranscoder.java:59) at com.facebook.imagepipeline.nativecode.NativeJpegTranscoderFactory.createImageTranscoder(NativeJpegTranscoderFactory.java:43) at com.facebook.imagepipeline.transcoder.MultiImageTranscoderFactory.getNativeImageTranscoder(MultiImageTranscoderFactory.kt:59) at com.facebook.imagepipeline.transcoder.MultiImageTranscoderFactory.createImageTranscoder(MultiImageTranscoderFactory.kt:40) at com.facebook.imagepipeline.producers.ResizeAndRotateProducer$TransformingConsumer.onNewResultImpl(ResizeAndRotateProducer.java:166) at com.facebook.imagepipeline.producers.ResizeAndRotateProducer$TransformingConsumer.onNewResultImpl(ResizeAndRotateProducer.java:84) at com.facebook.imagepipeline.producers.BaseConsumer.onNewResult(BaseConsumer.java:89) at com.facebook.imagepipeline.producers.AddImageTransformMetaDataProducer$AddImageTransformMetaDataConsumer.onNewResultImpl(AddImageTransformMetaDataProducer.java:49) at com.facebook.imagepipeline.producers.AddImageTransformMetaDataProducer$AddImageTransformMetaDataConsumer.onNewResultImpl(AddImageTransformMetaDataProducer.java:33) at com.facebook.imagepipeline.producers.BaseConsumer.onNewResult(BaseConsumer.java:89) at com.facebook.imagepipeline.producers.MultiplexProducer$Multiplexer.onNextResult(MultiplexProducer.java:510) at com.facebook.imagepipeline.producers.MultiplexProducer$Multiplexer$ForwardingConsumer.onNewResultImpl(MultiplexProducer.java:569) at com.facebook.imagepipeline.producers.MultiplexProducer$Multiplexer$ForwardingConsumer.onNewResultImpl(MultiplexProducer.java:562) at com.facebook.imagepipeline.producers.BaseConsumer.onNewResult(BaseConsumer.java:89) at com.facebook.imagepipeline.producers.EncodedMemoryCacheProducer.produceResults(EncodedMemoryCacheProducer.java:75) at com.facebook.imagepipeline.producers.MultiplexProducer$Multiplexer.startInputProducerIfHasAttachedConsumers(MultiplexProducer.java:391) at com.facebook.imagepipeline.producers.MultiplexProducer$Multiplexer.access$000(MultiplexProducer.java:161) at com.facebook.imagepipeline.producers.MultiplexProducer.produceResults(MultiplexProducer.java:115) at com.facebook.imagepipeline.producers.AddImageTransformMetaDataProducer.produceResults(AddImageTransformMetaDataProducer.java:30) at com.facebook.imagepipeline.producers.ResizeAndRotateProducer.produceResults(ResizeAndRotateProducer.java:79) at com.facebook.imagepipeline.producers.DecodeProducer.produceResults(DecodeProducer.kt:81) at com.facebook.imagepipeline.producers.BitmapMemoryCacheProducer.produceResults(BitmapMemoryCacheProducer.java:118) at com.facebook.imagepipeline.producers.MultiplexProducer$Multiplexer.startInputProducerIfHasAttachedConsumers(MultiplexProducer.java:391) at com.facebook.imagepipeline.producers.MultiplexProducer$Multiplexer.access$000(MultiplexProducer.java:161) at com.facebook.imagepipeline.producers.MultiplexProducer.produceResults(MultiplexProducer.java:115) at com.facebook.imagepipeline.producers.ThreadHandoffProducer$produceResults$1$statefulRunnable$1.onSuccess(ThreadHandoffProducer.kt:34) at com.facebook.common.executors.StatefulRunnable.run(StatefulRunnable.java:55) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) at com.facebook.imagepipeline.core.PriorityThreadFactory.newThread$lambda$0(PriorityThreadFactory.kt:37) at com.facebook.imagepipeline.core.PriorityThreadFactory.$r8$lambda$IPp7Vm9a1KDy8D4770JTjI9qOG4() at com.facebook.imagepipeline.core.PriorityThreadFactory$$ExternalSyntheticLambda0.run(:4) at java.lang.Thread.run(Thread.java:1012)
So, I’m compelled to return to the 2.6.0 version.
Quick update: We are going to make some slight adjustments to the new native loading API, before doing a new release.
The pull request is still under review. Once that’s available, we can do a new release.
We also have a new native library loading interface in the works where you can use any other native loading library (e.g. system one).
Thanks. We’re on it. I’ve imported the PR.