question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

WrongAbiError: APK was built for a different platform, fresco 2.1.0

See original GitHub issue

Description

https://github.com/facebook/SoLoader/issues/39 After updating to fresco:2.1.0 we still have crashes:

Fatal Exception: com.facebook.soloader.SoLoader$WrongAbiError: APK was built for a different platform
       at com.facebook.soloader.SoLoader.loadLibraryBySoName + 645(SoLoader.java:645)
       at com.facebook.soloader.SoLoader.loadLibrary + 577(SoLoader.java:577)
       at com.facebook.soloader.SoLoader.loadLibrary + 525(SoLoader.java:525)
       at com.facebook.soloader.NativeLoaderToSoLoaderDelegate.loadLibrary + 24(NativeLoaderToSoLoaderDelegate.java:24)
       at com.facebook.soloader.nativeloader.NativeLoader.loadLibrary + 43(NativeLoader.java:43)
       at com.facebook.imagepipeline.memory.NativeMemoryChunk.<clinit> + 31(NativeMemoryChunk.java:31)
       at com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc + 29(NativeMemoryChunkPool.java:29)
       at com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc + 15(NativeMemoryChunkPool.java:15)
       at com.facebook.imagepipeline.memory.BasePool.get + 243(BasePool.java:243)
       at com.facebook.imagepipeline.memory.MemoryPooledByteBufferOutputStream.<init> + 51(MemoryPooledByteBufferOutputStream.java:51)
       at com.facebook.imagepipeline.memory.MemoryPooledByteBufferFactory.newByteBuffer + 73(MemoryPooledByteBufferFactory.java:73)
       at com.facebook.imagepipeline.memory.MemoryPooledByteBufferFactory.newByteBuffer + 24(MemoryPooledByteBufferFactory.java:24)
       at com.facebook.imagepipeline.producers.LocalFetchProducer.getByteBufferBackedEncodedImage + 78(LocalFetchProducer.java:78)
       at com.facebook.imagepipeline.producers.LocalFetchProducer.getEncodedImage + 88(LocalFetchProducer.java:88)
       at com.facebook.imagepipeline.producers.LocalResourceFetchProducer.getEncodedImage + 33(LocalResourceFetchProducer.java:33)
       at com.facebook.imagepipeline.producers.LocalFetchProducer$1.getResult + 44(LocalFetchProducer.java:44)
       at com.facebook.imagepipeline.producers.LocalFetchProducer$1.getResult + 40(LocalFetchProducer.java:40)
       at com.facebook.common.executors.StatefulRunnable.run + 43(StatefulRunnable.java:43)
       at java.util.concurrent.ThreadPoolExecutor.runWorker + 1112(ThreadPoolExecutor.java:1112)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run + 587(ThreadPoolExecutor.java:587)
       at com.facebook.imagepipeline.core.PriorityThreadFactory$1.run + 50(PriorityThreadFactory.java:50)
       at java.lang.Thread.run + 818(Thread.java:818)
Caused by java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libimagepipeline.so caused by: dlopen failed: "/data/data/ru.app/lib-main/libimagepipeline.so" has unexpected e_machine: 40
       at com.facebook.soloader.SoLoader.doLoadLibraryBySoName + 789(SoLoader.java:789)
       at com.facebook.soloader.SoLoader.loadLibraryBySoName + 639(SoLoader.java:639)
       at com.facebook.soloader.SoLoader.loadLibrary + 577(SoLoader.java:577)
       at com.facebook.soloader.SoLoader.loadLibrary + 525(SoLoader.java:525)
       at com.facebook.soloader.NativeLoaderToSoLoaderDelegate.loadLibrary + 24(NativeLoaderToSoLoaderDelegate.java:24)
       at com.facebook.soloader.nativeloader.NativeLoader.loadLibrary + 43(NativeLoader.java:43)
       at com.facebook.imagepipeline.memory.NativeMemoryChunk.<clinit> + 31(NativeMemoryChunk.java:31)
       at com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc + 29(NativeMemoryChunkPool.java:29)
       at com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc + 15(NativeMemoryChunkPool.java:15)
       at com.facebook.imagepipeline.memory.BasePool.get + 243(BasePool.java:243)
       at com.facebook.imagepipeline.memory.MemoryPooledByteBufferOutputStream.<init> + 51(MemoryPooledByteBufferOutputStream.java:51)
       at com.facebook.imagepipeline.memory.MemoryPooledByteBufferFactory.newByteBuffer + 73(MemoryPooledByteBufferFactory.java:73)
       at com.facebook.imagepipeline.memory.MemoryPooledByteBufferFactory.newByteBuffer + 24(MemoryPooledByteBufferFactory.java:24)
       at com.facebook.imagepipeline.producers.LocalFetchProducer.getByteBufferBackedEncodedImage + 78(LocalFetchProducer.java:78)
       at com.facebook.imagepipeline.producers.LocalFetchProducer.getEncodedImage + 88(LocalFetchProducer.java:88)
       at com.facebook.imagepipeline.producers.LocalResourceFetchProducer.getEncodedImage + 33(LocalResourceFetchProducer.java:33)
       at com.facebook.imagepipeline.producers.LocalFetchProducer$1.getResult + 44(LocalFetchProducer.java:44)
       at com.facebook.imagepipeline.producers.LocalFetchProducer$1.getResult + 40(LocalFetchProducer.java:40)
       at com.facebook.common.executors.StatefulRunnable.run + 43(StatefulRunnable.java:43)
       at java.util.concurrent.ThreadPoolExecutor.runWorker + 1112(ThreadPoolExecutor.java:1112)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run + 587(ThreadPoolExecutor.java:587)
       at com.facebook.imagepipeline.core.PriorityThreadFactory$1.run + 50(PriorityThreadFactory.java:50)
       at java.lang.Thread.run + 818(Thread.java:818)

Application.java

OkHttpClient.Builder ohcb = new OkHttpClient.Builder()
                .proxy(Proxy.NO_PROXY)
                .connectTimeout(20, TimeUnit.SECONDS)
                .readTimeout(20, TimeUnit.SECONDS)
                .writeTimeout(20, TimeUnit.SECONDS)
                .addInterceptor(new Interceptor() {
                    @Override
                    public Response intercept(Chain chain) throws IOException {
                        Request.Builder ongoing = chain.request().newBuilder();
                        ongoing.addHeader("X-device", "android");
                        // etc..
                        return chain.proceed(ongoing.build());
                    }
                });

        ImagePipelineConfig imagePipelineConfig = OkHttpImagePipelineConfigFactory
                .newBuilder(this, ohcb.build())
                .build();
        Fresco.initialize(this, imagePipelineConfig);

Reproduction

I can’t reproduce this crash on all my devices and emulators.

Additional Information

  • Fresco version: 2.1.0
  • imagepipeline-okhttp3: 2.1.0
  • androidx
  • we use apk, NOT bundle

For now, we have only several crashes, all of this on ASUS ZenFone 2 (ZE551ML) Android 6.0.1, Android 5.0 I will add more information about devices when it appears.

Issue Analytics

  • State:open
  • Created 4 years ago
  • Reactions:1
  • Comments:8

github_iconTop GitHub Comments

5reactions
ProstoFcommented, Mar 27, 2020

We have solved this issue by removing SoLoader from Fresco lib

implementation('com.facebook.fresco:fresco:2.1.0') {
        exclude group: 'com.facebook.soloader', module: 'soloader'
        exclude group: 'com.facebook.fresco', module: 'soloader'
    }

https://frescolib.org/docs/#5-optional-setting-a-non-default-native-library-loader-only-for-fresco-21-and-above

0reactions
marcosaliscommented, Mar 27, 2020

We are having the same issue with Fresco 2.1.0 on a Chromebook Pixel (2015), any updates? 🙏

Read more comments on GitHub >

github_iconTop Results From Across the Web

SoLoader$WrongAbiError with React Native Android
SoLoader$WrongAbiError: APK was built for a different platform at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:253) at com.facebook.react.bridge ...
Read more >
APK是为不同平台而 Build 的,Fresco 2.1.0 - 编程技术网
SoLoader$WrongAbiError: APK was built for a different platform at com.facebook.soloader.SoLoader.loadLibraryBySoName + 645(SoLoader.java:645) at ...
Read more >
Meta SoLoader Issues - Giters
SoLoader 0.8.0 couldn't find DSO to load - issue on .apk build ... WrongAbiError: APK was built for a different platform, fresco 2.1.0....
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found