Fresco: Exception fatale : java.lang.UnsatisfiedLinkError n'a pas pu trouver le DSO à charger : libimagepipeline.so / com.facebook.imagepipeline.memory.NativeMemoryChunk

Créé le 11 févr. 2018  ·  87Commentaires  ·  Source: facebook/fresco

La description

Mise à jour vers la version 1.8.0, Crashlytic signale ces problèmes.
Fatal Exception: java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libimagepipeline.so at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:522) at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:420) at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:370) at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:335) at com.facebook.imagepipeline.nativecode.ImagePipelineNativeLoader.load(ImagePipelineNativeLoader.java:42) at com.facebook.imagepipeline.memory.NativeMemoryChunk.<clinit>(NativeMemoryChunk.java:33) at com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc(NativeMemoryChunkPool.java:58) at com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc(NativeMemoryChunkPool.java:20) at com.facebook.imagepipeline.memory.BasePool.get(BasePool.java:257) at com.facebook.imagepipeline.memory.NativePooledByteBufferOutputStream.<init>(NativePooledByteBufferOutputStream.java:51) at com.facebook.imagepipeline.memory.NativePooledByteBufferFactory.newByteBuffer(NativePooledByteBufferFactory.java:98) at com.facebook.imagepipeline.memory.NativePooledByteBufferFactory.newByteBuffer(NativePooledByteBufferFactory.java:26) at com.facebook.imagepipeline.producers.LocalFetchProducer.getByteBufferBackedEncodedImage(LocalFetchProducer.java:89) at com.facebook.imagepipeline.producers.LocalFetchProducer.getEncodedImage(LocalFetchProducer.java:101) at com.facebook.imagepipeline.producers.LocalResourceFetchProducer.getEncodedImage(LocalResourceFetchProducer.java:39) at com.facebook.imagepipeline.producers.LocalFetchProducer$1.getResult(LocalFetchProducer.java:54) at com.facebook.imagepipeline.producers.LocalFetchProducer$1.getResult(LocalFetchProducer.java:50) at com.facebook.common.executors.StatefulRunnable.run(StatefulRunnable.java:45) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1115) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:590) at com.facebook.imagepipeline.core.PriorityThreadFactory$1.run(PriorityThreadFactory.java:53) at java.lang.Thread.run(Thread.java:818)

Fatal Exception: java.lang.UnsatisfiedLinkError: com.facebook.imagepipeline.memory.NativeMemoryChunk at com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc(NativeMemoryChunkPool.java:58) at com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc(NativeMemoryChunkPool.java:20) at com.facebook.imagepipeline.memory.BasePool.get(BasePool.java:257) at com.facebook.imagepipeline.memory.NativePooledByteBufferOutputStream.<init>(NativePooledByteBufferOutputStream.java:51) at com.facebook.imagepipeline.memory.NativePooledByteBufferFactory.newByteBuffer(NativePooledByteBufferFactory.java:98) at com.facebook.imagepipeline.memory.NativePooledByteBufferFactory.newByteBuffer(NativePooledByteBufferFactory.java:26) at com.facebook.imagepipeline.producers.LocalFetchProducer.getByteBufferBackedEncodedImage(LocalFetchProducer.java:89) at com.facebook.imagepipeline.producers.LocalFetchProducer.getEncodedImage(LocalFetchProducer.java:101) at com.facebook.imagepipeline.producers.LocalResourceFetchProducer.getEncodedImage(LocalResourceFetchProducer.java:39) at com.facebook.imagepipeline.producers.LocalFetchProducer$1.getResult(LocalFetchProducer.java:54) at com.facebook.imagepipeline.producers.LocalFetchProducer$1.getResult(LocalFetchProducer.java:50) at com.facebook.common.executors.StatefulRunnable.run(StatefulRunnable.java:45) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at com.facebook.imagepipeline.core.PriorityThreadFactory$1.run(PriorityThreadFactory.java:53) at java.lang.Thread.run(Thread.java:818)

la reproduction

Solution

Je veux savoir si la mise à jour vers 1.8.1 peut résoudre ces problèmes ou si j'ai besoin d'ajouter compile 'com.facebook.soloader:soloader:0.1.0+' à build.gradle

Informations Complémentaires

  • Version fresque :
    compile 'com.facebook.fresco:fresco:1.8.0'
    compile 'com.facebook.fresco:animated-gif:1.8.10'
  • Version de la plate-forme :
    OPPO - Système d'exploitation : Android 5.1.1
    APPAREIL : R7sfg/R7g/A51fa
bug enhancement

Commentaire le plus utile

J'utilise la version 1.8.1 et j'ai également le même problème. L'appareil est VIVO X7 (Android 5.1.1, arm64-v8a).

FrescoIoBoundExecutor-2(121704)

java.lang.UnsatisfiedLinkError

com.facebook.imagepipeline.memory.NativeMemoryChunk

1 com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc(NativeMemoryChunkPool.java:58)

2 com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc(NativeMemoryChunkPool.java:20)
3 com.facebook.imagepipeline.memory.BasePool.get(BasePool.java:257)
4 com.facebook.imagepipeline.memory.NativePooledByteBufferOutputStream.(NativePooledByteBufferOutputStream.java:51)
5 com.facebook.imagepipeline.memory.NativePooledByteBufferFactory.newByteBuffer(NativePooledByteBufferFactory.java:98)
6 com.facebook.imagepipeline.memory.NativePooledByteBufferFactory.newByteBuffer(NativePooledByteBufferFactory.java:26)
7 com.facebook.imagepipeline.producers.LocalFetchProducer.getByteBufferBackedEncodedImage(LocalFetchProducer.java:89)
8 com.facebook.imagepipeline.producers.LocalFetchProducer.getEncodedImage(LocalFetchProducer.java:101)
9 com.facebook.imagepipeline.producers.LocalFileFetchProducer.getEncodedImage(LocalFileFetchProducer.java:34)
10 com.facebook.imagepipeline.producers.LocalFetchProducer$1.getResult(LocalFetchProducer.java:54)
11 com.facebook.imagepipeline.producers.LocalFetchProducer$1.getResult(LocalFetchProducer.java:50)
12 com.facebook.common.executors.StatefulRunnable.run(StatefulRunnable.java:45)
13 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
14 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
15 com.facebook.imagepipeline.core.PriorityThreadFactory$1.run(PriorityThreadFactory.java:53)
16 java.lang.Thread.run(Thread.java:818)

FrescoIoBoundExecutor-1(121150)

java.lang.UnsatisfiedLinkError

n'a pas pu trouver DSO à charger : libimagepipeline.so

1 com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:522)

2 com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:420)
3 com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:370)
4 com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:335)
5 com.facebook.imagepipeline.nativecode.ImagePipelineNativeLoader.load(ImagePipelineNativeLoader.java:42)
6 com.facebook.imagepipeline.memory.NativeMemoryChunk.(NativeMemoryChunk.java:33)
7 com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc(NativeMemoryChunkPool.java:58)
8 com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc(NativeMemoryChunkPool.java:20)
9 com.facebook.imagepipeline.memory.BasePool.get(BasePool.java:257)
10 com.facebook.imagepipeline.memory.NativePooledByteBufferOutputStream.(NativePooledByteBufferOutputStream.java:51)
11 com.facebook.imagepipeline.memory.NativePooledByteBufferFactory.newByteBuffer(NativePooledByteBufferFactory.java:98)
12 com.facebook.imagepipeline.memory.NativePooledByteBufferFactory.newByteBuffer(NativePooledByteBufferFactory.java:26)
13 com.facebook.imagepipeline.cache.BufferedDiskCache.readFromDiskCache(BufferedDiskCache.java:336)
14 com.facebook.imagepipeline.cache.BufferedDiskCache.access$400 (BufferedDiskCache.java:36)
15 com.facebook.imagepipeline.cache.BufferedDiskCache$2.call(BufferedDiskCache.java:182)
16 com.facebook.imagepipeline.cache.BufferedDiskCache$2.call(BufferedDiskCache.java:166)
17 boulons.Task$4.run (Task.java:357)
18 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
19 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
20 com.facebook.imagepipeline.core.PriorityThreadFactory$1.run(PriorityThreadFactory.java:53)
21 java.lang.Thread.run(Thread.java:818)

Tous les 87 commentaires

Comment est configuré votre build ? Utilisez-vous des divisions ABI ? http://frescolib.org/docs/shipping.html

@oprisnik
ma configuration de construction
android { compileSdkVersion 27 buildToolsVersion '27.0.3' defaultConfig { applicationId "com.mobix.pinecone" minSdkVersion 15 targetSdkVersion 27 versionCode 83 versionName '5.42' multiDexEnabled true } buildTypes { release { minifyEnabled false multiDexKeepProguard file("proguard.multidex.config") } debug { minifyEnabled false multiDexKeepProguard file("proguard.multidex.config") } } productFlavors { } dexOptions { jumboMode true javaMaxHeapSize "4g" } testOptions { unitTests.returnDefaultValues = true } }

et configuration multidex
-keepclassmembers class * implements android.os.Parcelable { static ** CREATOR; } -dontwarn com.google.android.gms.** -keep class com.google.android.gms.** { *; } -keep class com.google.firebase.** { *; } -keep class io.realm.** { *; } -keep class io.branch.** { *; } -keep class io.fabric.sdk.android.** { *; } -keep class io.socket.** { *; } -keep class com.google.android.youtube.** { *; } -keep class com.crashlytics.android.** { *; } -keep class com.facebook.internal.FacebookInitProvider.** { *; } -keep class com.facebook.FacebookSdk.** { *; } -keep class com.facebook.appevents.AppEventsLogger.** { *; } -keep class com.facebook.common.memory.MemoryTrimmableRegistry.** { *; } -keep class com.facebook.drawee.backends.pipeline.Fresco.** { *; } -keep class com.facebook.imagepipeline.core.ImagePipelineConfig.** { *; } -keep class me.zhanghai.android.materialprogressbar.** { *; } -keep class com.nguyenhoanglam.imagepicker.** { *;} -keep class com.iarcuschin.simpleratingbar.** { *;} -keep class android.support.v4.app.NotificationManagerCompat.** { *;}

Je ne sais pas pourquoi cela ne se produit que sur OPPO - OS: Android 5.1.1 et avant la mise à jour vers la version 1.8.0, ces problèmes ne se produisent pas avec la même configuration de build

Salut @hsandyque , vous n'avez pas besoin de la dépendance supplémentaire sur soloader car il est maintenant livré avec Fresco depuis la 1.8.0. Je recommanderais la mise à jour vers la 1.8.1 car elle corrige d'autres bogues.

Votre fichier build.gradle doit référencer le fichier proguard-fresco.pro comme décrit dans le lien publié par @oprisnik .

Pour plus de précision : ce bogue se produit-il _uniquement_ sur cet appareil en particulier ? Y a-t-il des adb logcat sortie que vous pouvez partager ?

Salut @lambdapioneer ,
Pour plus de précision : ce bogue ne se produit-il que sur cet appareil particulier ? Existe-t-il une sortie adb logcat que vous pouvez partager ?
Oui, cela ne se produit que sur les appareils OPPO Android 5.1.1 (R7sfg / R7g / A51fa)
Et les pièces jointes sont des logcats
1.txt
2.txt

Salut @hsandyque , étant donné que cela ne se produit qu'avec les téléphones Oppo, cela suggère que la façon dont les bibliothèques binaires sont regroupées et la façon dont le téléphone les charge ne fonctionnent pas bien.

Je n'ai pas accès à un téléphone OPPO pour le moment et je n'ai pas pu trouver de meilleurs pointeurs lors de la recherche :/

(a) Cela se produit-il également lors de l'installation de l'application vitrine que nous avons dans notre référentiel ? (cela me rapprocherait du débogage une fois que j'aurais mis la main sur un téléphone OPPO)
(b) Pouvez-vous fournir le résultat de l'exécution de unzip -l your_release.apk | grep lib/ sur votre APK de version ? Cela montrera quels fichiers sont réellement regroupés.

Salut @lambdapioneer ,

Je n'ai pas de téléphone OPPO (Android 5.1.1), ces problèmes sont signalés par Crashlytics. Je ne sais pas si cela se produit également sur l'application vitrine.

Et la liste des bundles comme suit
158176 00-00-1980 00:00 lib/arm64-v8a/libgifimage.so 383192 00-00-1980 00:00 lib/arm64-v8a/libimagepipeline.so 3107040 00-00-1980 00:00 lib/arm64-v8a/librealm-jni.so 91980 00-00-1980 00:00 lib/armeabi-v7a/libgifimage.so 255696 00-00-1980 00:00 lib/armeabi-v7a/libimagepipeline.so 1877536 00-00-1980 00:00 lib/armeabi-v7a/librealm-jni.so 100168 00-00-1980 00:00 lib/armeabi/libgifimage.so 313028 00-00-1980 00:00 lib/armeabi/libimagepipeline.so 4058380 00-00-1980 00:00 lib/mips/librealm-jni.so 145240 00-00-1980 00:00 lib/x86/libgifimage.so 452312 00-00-1980 00:00 lib/x86/libimagepipeline.so 3397252 00-00-1980 00:00 lib/x86/librealm-jni.so 150360 00-00-1980 00:00 lib/x86_64/libgifimage.so 477784 00-00-1980 00:00 lib/x86_64/libimagepipeline.so 3336720 00-00-1980 00:00 lib/x86_64/librealm-jni.so

Salut @lambdapioneer ,
plus de log
02-21 15:14:44.524 25391-25537/com.mobix.pinecone E/art: dlopen("/data/data/com.mobix.pinecone/lib-main/libimagepipeline.so", RTLD_LAZY) failed: dlopen failed: "/data/data/com.mobix.pinecone/lib-main/libimagepipeline.so" is 64-bit instead of 32-bit 02-21 15:14:44.524 25391-25537/com.mobix.pinecone E/SoLoader: Could not load: libimagepipeline.so 02-21 15:14:44.537 25391-25537/com.mobix.pinecone E/AndroidRuntime: FATAL EXCEPTION: FrescoIoBoundExecutor-2 Process: com.mobix.pinecone, PID: 25391 java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libimagepipeline.so at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:522) at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:420) at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:370) at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:335) at com.facebook.imagepipeline.nativecode.ImagePipelineNativeLoader.load(ImagePipelineNativeLoader.java:42) at com.facebook.imagepipeline.memory.NativeMemoryChunk.<clinit>(NativeMemoryChunk.java:33) at com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc(NativeMemoryChunkPool.java:58) at com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc(NativeMemoryChunkPool.java:20) at com.facebook.imagepipeline.memory.BasePool.get(BasePool.java:257) at com.facebook.imagepipeline.memory.NativePooledByteBufferOutputStream.<init>(NativePooledByteBufferOutputStream.java:51) at com.facebook.imagepipeline.memory.NativePooledByteBufferFactory.newByteBuffer(NativePooledByteBufferFactory.java:98) at com.facebook.imagepipeline.memory.NativePooledByteBufferFactory.newByteBuffer(NativePooledByteBufferFactory.java:26) at com.facebook.imagepipeline.producers.LocalFetchProducer.getByteBufferBackedEncodedImage(LocalFetchProducer.java:89) at com.facebook.imagepipeline.producers.LocalFetchProducer.getEncodedImage(LocalFetchProducer.java:101) at com.facebook.imagepipeline.producers.LocalResourceFetchProducer.getEncodedImage(LocalResourceFetchProducer.java:39) at com.facebook.imagepipeline.producers.LocalFetchProducer$1.getResult(LocalFetchProducer.java:54) at com.facebook.imagepipeline.producers.LocalFetchProducer$1.getResult(LocalFetchProducer.java:50) at com.facebook.common.executors.StatefulRunnable.run(StatefulRunnable.java:45) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at com.facebook.imagepipeline.core.PriorityThreadFactory$1.run(PriorityThreadFactory.java:53) at java.lang.Thread.run(Thread.java:818)

Salut @oprisnik
j'ai le même problème comment le résoudre?

java.lang.UnsatisfiedLinkError : impossible de trouver le DSO à charger : libimagepipeline.so
à com.facebook.soloader.jb (SourceFile:522)
à com.facebook.soloader.ja (SourceFile:420)
à com.facebook.soloader.ja (SourceFile:370)
à com.facebook.soloader.ja (SourceFile:335)
à com.facebook.imagepipeline.nativecode.aa (SourceFile:42)
sur com.facebook.imagepipeline.memory.NativeMemoryChunk.(Fichier source : 33)
sur com.facebook.imagepipeline.memory.li(SourceFile:58)
à com.facebook.imagepipeline.memory.lb (SourceFile:20)
à com.facebook.imagepipeline.memory.aa (SourceFile:257)
sur com.facebook.imagepipeline.memory.o.(Fichier source : 51)
à com.facebook.imagepipeline.memory.nb (SourceFile:98)
à com.facebook.imagepipeline.memory.na (SourceFile:26)
sur com.facebook.imagepipeline.producers.za(SourceFile:89)
sur com.facebook.imagepipeline.producers.zb(SourceFile:101)
sur com.facebook.imagepipeline.producers.aa.a(SourceFile:34)
sur com.facebook.imagepipeline.producers.z$1.d(SourceFile:54)
sur com.facebook.imagepipeline.producers.z$1.c(SourceFile:50)
à com.facebook.common.berun (SourceFile:45)
à java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
à java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
sur com.facebook.imagepipeline.dk$1.run(SourceFile:53)
à java.lang.Thread.run(Thread.java:818)

@hsandyque

Spécifiez-vous des filtres ABI (type de processeur) dans vos fichiers de progression d'applications ?

@erikandre
Je n'utilise aucun filtre ABI dans mon fichier gradle et répertorie déjà les paramètres détaillés de la réponse précédente

J'utilise la version 1.8.1 et j'ai également le même problème. L'appareil est VIVO X7 (Android 5.1.1, arm64-v8a).

FrescoIoBoundExecutor-2(121704)

java.lang.UnsatisfiedLinkError

com.facebook.imagepipeline.memory.NativeMemoryChunk

1 com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc(NativeMemoryChunkPool.java:58)

2 com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc(NativeMemoryChunkPool.java:20)
3 com.facebook.imagepipeline.memory.BasePool.get(BasePool.java:257)
4 com.facebook.imagepipeline.memory.NativePooledByteBufferOutputStream.(NativePooledByteBufferOutputStream.java:51)
5 com.facebook.imagepipeline.memory.NativePooledByteBufferFactory.newByteBuffer(NativePooledByteBufferFactory.java:98)
6 com.facebook.imagepipeline.memory.NativePooledByteBufferFactory.newByteBuffer(NativePooledByteBufferFactory.java:26)
7 com.facebook.imagepipeline.producers.LocalFetchProducer.getByteBufferBackedEncodedImage(LocalFetchProducer.java:89)
8 com.facebook.imagepipeline.producers.LocalFetchProducer.getEncodedImage(LocalFetchProducer.java:101)
9 com.facebook.imagepipeline.producers.LocalFileFetchProducer.getEncodedImage(LocalFileFetchProducer.java:34)
10 com.facebook.imagepipeline.producers.LocalFetchProducer$1.getResult(LocalFetchProducer.java:54)
11 com.facebook.imagepipeline.producers.LocalFetchProducer$1.getResult(LocalFetchProducer.java:50)
12 com.facebook.common.executors.StatefulRunnable.run(StatefulRunnable.java:45)
13 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
14 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
15 com.facebook.imagepipeline.core.PriorityThreadFactory$1.run(PriorityThreadFactory.java:53)
16 java.lang.Thread.run(Thread.java:818)

FrescoIoBoundExecutor-1(121150)

java.lang.UnsatisfiedLinkError

n'a pas pu trouver DSO à charger : libimagepipeline.so

1 com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:522)

2 com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:420)
3 com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:370)
4 com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:335)
5 com.facebook.imagepipeline.nativecode.ImagePipelineNativeLoader.load(ImagePipelineNativeLoader.java:42)
6 com.facebook.imagepipeline.memory.NativeMemoryChunk.(NativeMemoryChunk.java:33)
7 com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc(NativeMemoryChunkPool.java:58)
8 com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc(NativeMemoryChunkPool.java:20)
9 com.facebook.imagepipeline.memory.BasePool.get(BasePool.java:257)
10 com.facebook.imagepipeline.memory.NativePooledByteBufferOutputStream.(NativePooledByteBufferOutputStream.java:51)
11 com.facebook.imagepipeline.memory.NativePooledByteBufferFactory.newByteBuffer(NativePooledByteBufferFactory.java:98)
12 com.facebook.imagepipeline.memory.NativePooledByteBufferFactory.newByteBuffer(NativePooledByteBufferFactory.java:26)
13 com.facebook.imagepipeline.cache.BufferedDiskCache.readFromDiskCache(BufferedDiskCache.java:336)
14 com.facebook.imagepipeline.cache.BufferedDiskCache.access$400 (BufferedDiskCache.java:36)
15 com.facebook.imagepipeline.cache.BufferedDiskCache$2.call(BufferedDiskCache.java:182)
16 com.facebook.imagepipeline.cache.BufferedDiskCache$2.call(BufferedDiskCache.java:166)
17 boulons.Task$4.run (Task.java:357)
18 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
19 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
20 com.facebook.imagepipeline.core.PriorityThreadFactory$1.run(PriorityThreadFactory.java:53)
21 java.lang.Thread.run(Thread.java:818)

Un correctif ? Ceci est mon journal
Exception fatale : java.lang.UnsatisfiedLinkError : impossible de trouver le DSO à charger : libimagepipeline.so
sur com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:522)
sur com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:420)
sur com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:370)
sur com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:335)
sur com.facebook.imagepipeline.nativecode.ImagePipelineNativeLoader.load(ImagePipelineNativeLoader.java:42)
sur com.facebook.imagepipeline.memory.NativeMemoryChunk.(NativeMemoryChunk.java:33)
sur com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc(NativeMemoryChunkPool.java:58)
sur com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc(NativeMemoryChunkPool.java:20)
sur com.facebook.imagepipeline.memory.BasePool.get(BasePool.java:257)
sur com.facebook.imagepipeline.memory.NativePooledByteBufferOutputStream.(NativePooledByteBufferOutputStream.java:51)
sur com.facebook.imagepipeline.memory.NativePooledByteBufferFactory.newOutputStream(NativePooledByteBufferFactory.java:141)
sur com.facebook.imagepipeline.memory.NativePooledByteBufferFactory.newOutputStream(NativePooledByteBufferFactory.java:26)
sur com.facebook.imagepipeline.producers.NetworkFetchProducer.onResponse(NetworkFetchProducer.java:90)
sur com.facebook.imagepipeline.producers.NetworkFetchProducer$1.onResponse(NetworkFetchProducer.java:70)
sur com.facebook.imagepipeline.backends.okhttp3.OkHttpNetworkFetcher$2.onResponse(OkHttpNetworkFetcher.java:180)
à okhttp3.RealCall$AsyncCall.execute(RealCall.java:153)
à okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
à java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
à java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
à java.lang.Thread.run(Thread.java:818)

image

@wangshuwen1107 @csbz17027 @ignaciogs
Étant donné que Facebook vérifie toujours le problème, j'ai trouvé la solution de contournement qui peut résoudre temporairement ce problème.

dlopen("/data/data/xxx/lib-main/libimagepipeline.so", RTLD_LAZY) failed: dlopen failed: "/data/data/xxx/lib-main/libimagepipeline.so" is 64-bit instead of 32-bit

Le journal que j'ai trouvé est que ces appareils spécifiques exécutent l'application en 32 bits (je ne sais pas pourquoi, peut-être le bogue du framework) mais le libimagepipeline.so est en 64 bits.

Ajoutez le filtre api comme snap de code suivant, ignorez le "arm64-v8a"
defaultConfig { ... ndk { abiFilters "armeabi", "armeabi-v7a", "x86", "x86_64", "mips", "mips64" } }
Ce n'est pas la bonne solution mais peut-être que cela résoudra le problème au début, puis nous attendrons la mise à jour

@hsandyque merci beaucoup, votre réponse est très utile, dans l'attente de votre mise à jour!

@oprisnik @erikandre @lambdapioneer
Avez-vous une idée sur la façon de résoudre ce problème?

@hsandyque chargez -vous d'autres dépendances telles que le système pourrait être confondu avec un mélange de bibliothèques 32 bits et 64 bits ?

Dans ce cas, je vous suggère d'utiliser la ligne abiFilters :

abiFilters "armeabi", "armeabi-v7a", "x86", "mips"}

Peut-être même laisser tomber mips si vous ne ciblez pas spécifiquement un appareil spécial.

Toujours avec ce problème sur v1.9.0.

Ajouter

        ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86"
        }

A travaillé pour moi. Mais en lisant la conversation ci-dessus, semble-t-il que ce n'est pas la solution « correcte » ?

Mon équipe a le même problème, n'a pas reçu autant de rapports de plantage (à cause du MOO de la fresque) d'une troisième bibliothèque comme celle-ci, il est temps de dire au revoir !

j'utilise
ndk { abiFilters "armeabi,armeabi-v7a" }
et
compile 'com.facebook.fresco:fresco:1.8.0' compile 'com.facebook.fresco:animated-gif:1.8.0' compile 'com.facebook.fresco:animated-webp:1.8.0' compile 'com.facebook.fresco:webpsupport:1.8.0'
ont également le même crash.

J'ai toujours ce problème sur la v1.9.0.

Toujours confronté à ce problème sur 1.9.0 avec abis "armeabi", "armeabi-v7a", "x86" pris en charge

J'ai toujours ce problème sur la v1.9.0.

J'ai aussi le même problème. Mon application plante à l'ouverture. Cela se produit uniquement sur HTC One E9PLUS dual sim fonctionnant sous Android 5.0.2
Erreur : Exception fatale : java.lang.UnsatisfiedLinkError
n'a pas pu trouver DSO à charger : libimagepipeline.so

MISE À JOUR : Pour ceux à qui nous avons eu ce problème, veuillez consulter le guide de production sur le site Web de Fresco , qui résout notre problème.

Voir également ce problème sur une variété d'appareils :
image

Utilisation de Fresco version 1.9.0 et des filtres ABI pour réduire la taille de l'APK :

ndk {
    abiFilters "armeabi-v7a", "x86"
}

Ce problème a commencé à se produire pour nous lorsque nous avons mis à jour Fresco de 1.5.0 à 1.9.0. Cela impliquait également de supprimer l'utilisation de ReLinker et de supprimer le fichier proguard-fresco.pro explicitement inclus.

Salut, il semble qu'il n'y ait eu aucune activité sur ce problème récemment. Le problème a-t-il été résolu ou nécessite-t-il toujours l'attention de la communauté ? Ce problème peut être fermé si aucune autre activité ne se produit. Vous pouvez également étiqueter ce problème comme "bug" ou "amélioration" et je le laisserai ouvert. Merci pour vos contributions.

Cogner. C'est toujours un problème en cours. Ce plantage s'est produit après la mise à jour de 1.5.0 à 1.9.0 et aucune solution n'a été fournie qui fonctionne pour moi.

@jmbusby, vous ne ciblez que le bras v7a. Certains des appareils pourraient-ils être armv6 ou même armv5 ? Par exemple, il semble y avoir pas mal d'appareils ZTE avec v6 selon https://forum.xda-developers.com/showthread.php?t=1596800

@oprisnik Je pense que c'est peu probable, car le téléphone le plus courant qui plante est un Asus Zenfone 3 Max doté d'un processeur ARM v8. Le téléphone ZTE le plus courant est un Blade V7, également avec ARM v8.

Je vois ce problème lors de la migration vers la 1.10 à partir de la 1.8.1

Quelques composants que nous utilisons dans notre application nous obligent à n'utiliser que les divisions 'armeabi' et 'x86'... et en regardant le fichier aar d'Imagepipeline pour v-1.10, la variante 'armeabi' est absente. Est-ce que ce sera le cas à l'avenir? Supprimez-vous la prise en charge de cette architecture ?
Les fichiers .so sont cependant présents dans la 1.9.

Toute piste ici

Salut, il semble qu'il n'y ait eu aucune activité sur ce problème récemment. Le problème a-t-il été résolu ou nécessite-t-il toujours l'attention de la communauté ? Ce problème peut être fermé si aucune autre activité ne se produit. Vous pouvez également étiqueter ce problème comme "bug" ou "amélioration" et je le laisserai ouvert. Merci pour vos contributions.

Le problème est toujours là

Salut les gars, content de vous "revoir".

@lambdapioneer , @oprisnik ce problème a été signalé dans diverses incarnations depuis Fresco 0.1. Le problème réside dans la pléthore de périphériques chargeant des bibliothèques, certains d'entre eux auront forcément des problèmes.

La solution recommandée (diviser l'APK) entraîne d'autres problèmes. Entre autres choses, le fractionnement de l'APK nécessite des codes de version distincts pour chaque ABI. Lorsque vous avez déjà plusieurs saveurs de produits et types de build, qui sont tous gérés par des plugins externes comme hockeyapp, le fractionnement fait baisser les yeux de l'équipe. À ce stade, il serait en fait plus facile de passer à Glide que de le faire.

NativePooledByteBuffer n'est pas vraiment important pour l'API>=21, ce que ciblent maintenant de nombreuses applications (Dalvik est maintenant à 10%). Cela pourrait valoir la peine de le rendre facultatif et d'utiliser simplement la mémoire Java standard pour les plates-formes ultérieures.

Je pourrais peut-être travailler dessus plus tard, mais je soupçonne que vous préféreriez que quelqu'un encore chez FB le fasse :)

Salut @tyronen ! Ça fait longtemps' :)

Bon timing, nous avons en fait quelqu'un qui travaille dessus en ce moment (une version Java de NativePooledByteBuffer et des classes similaires) - donc cela devrait être corrigé bientôt.

Cependant, nous avons pas mal d'autres problèmes ouverts et des idées d'améliorations futures si vous souhaitez contribuer à nouveau.
Nous avons également en tête des changements plus importants pour Drawee et le pipeline, donc les choses vont probablement changer bientôt.

Samsung Galaxy S9 Android 8 ne fonctionne toujours pas.

Je rencontre aussi ce problème. Cela s'est produit sur le téléphone OPPO A51 , il apparaît pendant que j'utilise Fresco v1.8.1 mais il n'apparaît pas dans le v0.12.0

Donc, je suppose que cela sera simplement ignoré? Plantage sur les appareils les plus populaires à partir de la version 1.8...

api 'com.facebook. frais : frais :1.10.0'
??

toute mise à jour?

Même problème ici
Problème de presque 8 mois.
Connaissez-vous une solution de contournement ? Le déclassement de fresque et l'utilisation de soloader fonctionnent-ils ?

Salut tout le monde, je comprends la frustration suscitée par ce problème.

Je tiens à vous faire savoir que nous sommes bien conscients des (divers) problèmes avec le code natif et des problèmes qu'il engendre. Nous travaillons activement à permettre l'utilisation de Fresco sans aucun code natif (voir par exemple ImagePipelineExperiments#disableNativeCode ). Il pourrait être prêt avec la version v1.11 ou v1.12. Bravo à @MikaelMorales

Sur des problèmes comme celui-ci, il est vraiment difficile pour nous de progresser sans aucune reproduction complète avec laquelle nous pouvons travailler. Ici, il semble qu'avoir des extraits du fichier build.gradle ne soit pas suffisant. Il faudrait que ce soit un projet minimal, mais complet.

Si vous avez une reproduction locale, vous pouvez nous aider ainsi que tout le monde sur ce fil en :

  • Vérifier s'il se reproduit avec l'application vitrine
  • Passez ensuite progressivement de l'application vitrine à votre configuration de build et observez à quel moment elle casse

C'est un problème pour lequel nous avons beaucoup besoin de votre aide ! J'ai ajouté la balise "bug" pour que stale-bot reste silencieux.

@ch4ndu , vous avez correctement observé qu'il manque les dernières versions de Fresco à armeabi . Il a été supprimé dans NDK r17 (https://developer.android.com/ndk/guides/abis)

W/System.err : java.lang.UnsatisfiedLinkError : impossible de trouver le DSO à charger : libimagepipeline.so
Comment le réparer

ndk { abiFilters "armeabi" }
mise en œuvre 'com.facebook. fresque:fresque :1.11.0'
mise en œuvre 'com.facebook. fresque:animé-gif :1.11.0'
mise en œuvre 'com.facebook. fresco:animated-webp :1.11.0'
mise en œuvre 'com.facebook. fresque:webpsupport :1.11.0'

Bonjour, j'ai peut-être trouvé une autre façon de reproduire ce problème.

Nous utilisons Fresco 1.11 pour charger des images statiques et des GIF animés dans notre application. Ils fonctionnent tous les deux bien lorsque nous créons et installons des APK, mais pas lorsque nous créons des bundles d'applications à partir d'Android Studio et que nous utilisons bundletool pour créer ( build-apks ) et installer ( install-apks ) les APK. Dans ce cas, les GIF ne sont pas chargés mais l'application ne plante pas lorsque nous essayons de les charger et essayer de charger une image statique plante l'application ( couldn't find DSO to load: libimagepipeline.so ).

Nous avons essayé de définir .experiment().setNativeCodeDisabled(true) dans ImagePipelineConfig de Fresco et avec cela les images statiques fonctionnent mais les GIF se bloquent avec une erreur différente ( couldn't find DSO to load: libgifimage.so ). Même si cela fonctionnait, nous ne serions pas à l'aise d'utiliser quelque chose appelé ".experiment()" en production.

J'utilise le plugin Android Gradle 3.2.1, Android Studio 3.3 beta 4 et bundletool 0.7.1. Je teste sur un téléphone Android 8.1.0.

Existe-t-il un moyen d'utiliser Fresco avec des bundles d'applications de manière fiable ? Cela nous empêche de passer au nouveau format pour le moment. Merci!

Voici le plantage lors de la tentative de chargement des GIF après l'activation du test :

11-22 16:39:03.339 18019 18019 D SoLoader: init start
11-22 16:39:03.340 18019 18019 D SoLoader: adding system library source: /vendor/lib
11-22 16:39:03.340 18019 18019 D SoLoader: adding system library source: /system/lib
11-22 16:39:03.340 18019 18019 D SoLoader: adding application source: com.facebook.soloader.DirectorySoSource[root = /data/app/com.packagename--UQkiLx1zhtubNxSl35TMg==/lib/arm64 flags = 0]
11-22 16:39:03.341 18019 18019 D SoLoader: adding backup  source: com.facebook.soloader.ApkSoSource[root = /data/data/com.packagename/lib-main flags = 1]
11-22 16:39:03.341 18019 18019 D SoLoader: Preparing SO source: com.facebook.soloader.DirectorySoSource[root = /system/lib flags = 2]
11-22 16:39:03.341 18019 18019 D SoLoader: Preparing SO source: com.facebook.soloader.DirectorySoSource[root = /vendor/lib flags = 2]
11-22 16:39:03.341 18019 18019 D SoLoader: Preparing SO source: com.facebook.soloader.DirectorySoSource[root = /data/app/com.packagename--UQkiLx1zhtubNxSl35TMg==/lib/arm64 flags = 0]
11-22 16:39:03.342 18019 18019 D SoLoader: Preparing SO source: com.facebook.soloader.ApkSoSource[root = /data/data/com.packagename/lib-main flags = 1]
11-22 16:39:03.343 18019 18019 V fb-UnpackingSoSource: locked dso store /data/user/0/com.packagename/lib-main
11-22 16:39:03.347 18019 18019 I fb-UnpackingSoSource: dso store is up-to-date: /data/user/0/com.packagename/lib-main
11-22 16:39:03.347 18019 18019 V fb-UnpackingSoSource: releasing dso store lock for /data/user/0/com.packagename/lib-main
11-22 16:39:03.347 18019 18019 D SoLoader: init finish: 4 SO sources prepared
11-22 16:39:03.347 18019 18019 D SoLoader: init exiting

11-22 16:39:04.327 18019 18293 D SoLoader: About to load: libgifimage.so
11-22 16:39:04.328 18019 18293 D SoLoader: libgifimage.so not found on /data/data/com.packagename/lib-main
11-22 16:39:04.328 18019 18293 D SoLoader: libgifimage.so not found on /data/app/com.packagename--UQkiLx1zhtubNxSl35TMg==/lib/arm64
11-22 16:39:04.329 18019 18293 D SoLoader: libgifimage.so not found on /vendor/lib
11-22 16:39:04.329 18019 18293 D SoLoader: libgifimage.so not found on /system/lib
11-22 16:39:04.339 18019 18293 E SoLoader: couldn't find DSO to load: libgifimage.so
11-22 16:39:04.348 18019 18293 E AndroidRuntime: FATAL EXCEPTION: FrescoDecodeExecutor-2
11-22 16:39:04.348 18019 18293 E AndroidRuntime: Process: com.packagename, PID: 18019
11-22 16:39:04.348 18019 18293 E AndroidRuntime: java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libgifimage.so
11-22 16:39:04.348 18019 18293 E AndroidRuntime:    at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:703)
11-22 16:39:04.348 18019 18293 E AndroidRuntime:    at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:564)
11-22 16:39:04.348 18019 18293 E AndroidRuntime:    at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:500)
11-22 16:39:04.348 18019 18293 E AndroidRuntime:    at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:455)
11-22 16:39:04.348 18019 18293 E AndroidRuntime:    at com.facebook.animated.gif.GifImage.ensure(GifImage.java:42)
11-22 16:39:04.348 18019 18293 E AndroidRuntime:    at com.facebook.animated.gif.GifImage.create(GifImage.java:70)
11-22 16:39:04.348 18019 18293 E AndroidRuntime:    at com.facebook.animated.gif.GifImage.decode(GifImage.java:89)
11-22 16:39:04.348 18019 18293 E AndroidRuntime:    at com.facebook.imagepipeline.animated.factory.AnimatedImageFactoryImpl.decodeGif(AnimatedImageFactoryImpl.java:85)
11-22 16:39:04.348 18019 18293 E AndroidRuntime:    at com.facebook.fresco.animation.factory.AnimatedFactoryV2Impl$1.decode(AnimatedFactoryV2Impl.java:86)
11-22 16:39:04.348 18019 18293 E AndroidRuntime:    at com.facebook.imagepipeline.decoder.DefaultImageDecoder.decodeGif(DefaultImageDecoder.java:136)
11-22 16:39:04.348 18019 18293 E AndroidRuntime:    at com.facebook.imagepipeline.decoder.DefaultImageDecoder$1.decode(DefaultImageDecoder.java:60)
11-22 16:39:04.348 18019 18293 E AndroidRuntime:    at com.facebook.imagepipeline.decoder.DefaultImageDecoder.decode(DefaultImageDecoder.java:121)
11-22 16:39:04.348 18019 18293 E AndroidRuntime:    at com.facebook.imagepipeline.producers.DecodeProducer$ProgressiveDecoder.doDecode(DecodeProducer.java:276)
11-22 16:39:04.348 18019 18293 E AndroidRuntime:    at com.facebook.imagepipeline.producers.DecodeProducer$ProgressiveDecoder.access$200(DecodeProducer.java:123)
11-22 16:39:04.348 18019 18293 E AndroidRuntime:    at com.facebook.imagepipeline.producers.DecodeProducer$ProgressiveDecoder$1.run(DecodeProducer.java:165)
11-22 16:39:04.348 18019 18293 E AndroidRuntime:    at com.facebook.imagepipeline.producers.JobScheduler.doJob(JobScheduler.java:202)
11-22 16:39:04.348 18019 18293 E AndroidRuntime:    at com.facebook.imagepipeline.producers.JobScheduler.access$000(JobScheduler.java:22)
11-22 16:39:04.348 18019 18293 E AndroidRuntime:    at com.facebook.imagepipeline.producers.JobScheduler$1.run(JobScheduler.java:73)
11-22 16:39:04.348 18019 18293 E AndroidRuntime:    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
11-22 16:39:04.348 18019 18293 E AndroidRuntime:    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
11-22 16:39:04.348 18019 18293 E AndroidRuntime:    at com.facebook.imagepipeline.core.PriorityThreadFactory$1.run(PriorityThreadFactory.java:51)
11-22 16:39:04.348 18019 18293 E AndroidRuntime:    at java.lang.Thread.run(Thread.java:764)

Le plantage lors de la tentative de chargement d'images statiques avant d'activer l'expérience est indiqué ci-dessous. Les traces sont similaires ( couldn't find DSO to load: libimagepipeline.so ) lorsque vous essayez de charger des GIF mais sans accéder à l'exception fatale.

11-22 16:08:49.551 13724 13724 D SoLoader: init start
11-22 16:08:49.551 13724 13724 D SoLoader: adding system library source: /vendor/lib
11-22 16:08:49.551 13724 13724 D SoLoader: adding system library source: /system/lib
11-22 16:08:49.552 13724 13724 D SoLoader: adding application source: com.facebook.soloader.DirectorySoSource[root = /data/app/com.packagename-VWSKdOesFkJ5ehUD4vU9aw==/lib/arm64 flags = 0]
11-22 16:08:49.552 13724 13724 D SoLoader: adding backup  source: com.facebook.soloader.ApkSoSource[root = /data/data/com.packagename/lib-main flags = 1]
11-22 16:08:49.552 13724 13724 D SoLoader: Preparing SO source: com.facebook.soloader.DirectorySoSource[root = /system/lib flags = 2]
11-22 16:08:49.553 13724 13724 D SoLoader: Preparing SO source: com.facebook.soloader.DirectorySoSource[root = /vendor/lib flags = 2]
11-22 16:08:49.553 13724 13724 D SoLoader: Preparing SO source: com.facebook.soloader.DirectorySoSource[root = /data/app/com.packagename-VWSKdOesFkJ5ehUD4vU9aw==/lib/arm64 flags = 0]
11-22 16:08:49.553 13724 13724 D SoLoader: Preparing SO source: com.facebook.soloader.ApkSoSource[root = /data/data/com.packagename/lib-main flags = 1]
11-22 16:08:49.554 13724 13724 V fb-UnpackingSoSource: locked dso store /data/user/0/com.packagename/lib-main
11-22 16:08:49.556 13724 13724 I fb-UnpackingSoSource: dso store is up-to-date: /data/user/0/com.packagename/lib-main
11-22 16:08:49.556 13724 13724 V fb-UnpackingSoSource: releasing dso store lock for /data/user/0/com.packagename/lib-main
11-22 16:08:49.556 13724 13724 D SoLoader: init finish: 4 SO sources prepared
11-22 16:08:49.556 13724 13724 D SoLoader: init exiting

11-22 16:08:50.468 13724 13809 D SoLoader: About to load: libimagepipeline.so
11-22 16:08:50.472 13724 13809 D SoLoader: libimagepipeline.so not found on /data/data/com.packagename/lib-main
11-22 16:08:50.472 13724 13809 D SoLoader: libimagepipeline.so not found on /data/app/com.packagename-VWSKdOesFkJ5ehUD4vU9aw==/lib/arm64
11-22 16:08:50.472 13724 13809 D SoLoader: libimagepipeline.so not found on /vendor/lib
11-22 16:08:50.473 13724 13809 D SoLoader: libimagepipeline.so not found on /system/lib
11-22 16:08:50.476 13724 13809 E SoLoader: couldn't find DSO to load: libimagepipeline.so
11-22 16:08:50.480 13724 13815 I zygote64: Rejecting re-init on previously-failed class java.lang.Class<com.facebook.imagepipeline.memory.NativeMemoryChunk>: java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libimagepipeline.so
11-22 16:08:50.481 13724 13815 I zygote64:   at void com.facebook.soloader.SoLoader.doLoadLibraryBySoName(java.lang.String, int, android.os.StrictMode$ThreadPolicy) (SoLoader.java:703)
11-22 16:08:50.481 13724 13815 I zygote64:   at boolean com.facebook.soloader.SoLoader.loadLibraryBySoName(java.lang.String, java.lang.String, java.lang.String, int, android.os.StrictMode$ThreadPolicy) (SoLoader.java:564)
11-22 16:08:50.481 13724 13815 I zygote64:   at boolean com.facebook.soloader.SoLoader.loadLibrary(java.lang.String, int) (SoLoader.java:500)
11-22 16:08:50.481 13724 13815 I zygote64:   at boolean com.facebook.soloader.SoLoader.loadLibrary(java.lang.String) (SoLoader.java:455)
11-22 16:08:50.481 13724 13815 I zygote64:   at void com.facebook.imagepipeline.nativecode.ImagePipelineNativeLoader.load() (ImagePipelineNativeLoader.java:40)
11-22 16:08:50.481 13724 13815 I zygote64:   at void com.facebook.imagepipeline.memory.NativeMemoryChunk.<clinit>() (NativeMemoryChunk.java:31)
11-22 16:08:50.481 13724 13815 I zygote64:   at com.facebook.imagepipeline.memory.NativeMemoryChunk com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc(int) (NativeMemoryChunkPool.java:25)
11-22 16:08:50.481 13724 13815 I zygote64:   at java.lang.Object com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc(int) (NativeMemoryChunkPool.java:13)
11-22 16:08:50.481 13724 13815 I zygote64:   at java.lang.Object com.facebook.imagepipeline.memory.BasePool.get(int) (BasePool.java:267)
11-22 16:08:50.481 13724 13815 I zygote64:   at void com.facebook.imagepipeline.memory.MemoryPooledByteBufferOutputStream.<init>(com.facebook.imagepipeline.memory.MemoryChunkPool, int) (MemoryPooledByteBufferOutputStream.java:51)
11-22 16:08:50.481 13724 13815 I zygote64:   at com.facebook.imagepipeline.memory.MemoryPooledByteBuffer com.facebook.imagepipeline.memory.MemoryPooledByteBufferFactory.newByteBuffer(java.io.InputStream, int) (MemoryPooledByteBufferFactory.java:73)
11-22 16:08:50.481 13724 13815 I zygote64:   at com.facebook.common.memory.PooledByteBuffer com.facebook.imagepipeline.memory.MemoryPooledByteBufferFactory.newByteBuffer(java.io.InputStream, int) (MemoryPooledByteBufferFactory.java:24)
11-22 16:08:50.481 13724 13815 I zygote64:   at com.facebook.imagepipeline.image.EncodedImage com.facebook.imagepipeline.producers.LocalFetchProducer.getByteBufferBackedEncodedImage(java.io.InputStream, int) (LocalFetchProducer.java:87)
11-22 16:08:50.481 13724 13815 I zygote64:   at com.facebook.imagepipeline.image.EncodedImage com.facebook.imagepipeline.producers.LocalFetchProducer.getEncodedImage(java.io.InputStream, int) (LocalFetchProducer.java:99)
11-22 16:08:50.481 13724 13815 I zygote64:   at com.facebook.imagepipeline.image.EncodedImage com.facebook.imagepipeline.producers.LocalAssetFetchProducer.getEncodedImage(com.facebook.imagepipeline.request.ImageRequest) (LocalAssetFetchProducer.java:37)
11-22 16:08:50.481 13724 13815 I zygote64:   at com.facebook.imagepipeline.image.EncodedImage com.facebook.imagepipeline.producers.LocalFetchProducer$1.getResult() (LocalFetchProducer.java:52)
11-22 16:08:50.481 13724 13815 I zygote64:   at java.lang.Object com.facebook.imagepipeline.producers.LocalFetchProducer$1.getResult() (LocalFetchProducer.java:48)
11-22 16:08:50.481 13724 13815 I zygote64:   at void com.facebook.common.executors.StatefulRunnable.run() (StatefulRunnable.java:43)
11-22 16:08:50.481 13724 13815 I zygote64:   at void java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) (ThreadPoolExecutor.java:1162)
11-22 16:08:50.481 13724 13815 I zygote64:   at void java.util.concurrent.ThreadPoolExecutor$Worker.run() (ThreadPoolExecutor.java:636)
11-22 16:08:50.481 13724 13815 I zygote64:   at void com.facebook.imagepipeline.core.PriorityThreadFactory$1.run() (PriorityThreadFactory.java:51)
11-22 16:08:50.481 13724 13815 I zygote64:   at void java.lang.Thread.run() (Thread.java:764)
11-22 16:08:50.481 13724 13815 I zygote64: 
11-22 16:08:50.507 13724 13809 E AndroidRuntime: FATAL EXCEPTION: FrescoIoBoundExecutor-1
11-22 16:08:50.507 13724 13809 E AndroidRuntime: Process: com.packagename, PID: 13724
11-22 16:08:50.507 13724 13809 E AndroidRuntime: java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libimagepipeline.so
11-22 16:08:50.507 13724 13809 E AndroidRuntime:    at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:703)
11-22 16:08:50.507 13724 13809 E AndroidRuntime:    at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:564)
11-22 16:08:50.507 13724 13809 E AndroidRuntime:    at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:500)
11-22 16:08:50.507 13724 13809 E AndroidRuntime:    at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:455)
11-22 16:08:50.507 13724 13809 E AndroidRuntime:    at com.facebook.imagepipeline.nativecode.ImagePipelineNativeLoader.load(ImagePipelineNativeLoader.java:40)
11-22 16:08:50.507 13724 13809 E AndroidRuntime:    at com.facebook.imagepipeline.memory.NativeMemoryChunk.<clinit>(NativeMemoryChunk.java:31)
11-22 16:08:50.507 13724 13809 E AndroidRuntime:    at com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc(NativeMemoryChunkPool.java:25)
11-22 16:08:50.507 13724 13809 E AndroidRuntime:    at com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc(NativeMemoryChunkPool.java:13)
11-22 16:08:50.507 13724 13809 E AndroidRuntime:    at com.facebook.imagepipeline.memory.BasePool.get(BasePool.java:267)
11-22 16:08:50.507 13724 13809 E AndroidRuntime:    at com.facebook.imagepipeline.memory.MemoryPooledByteBufferOutputStream.<init>(MemoryPooledByteBufferOutputStream.java:51)
11-22 16:08:50.507 13724 13809 E AndroidRuntime:    at com.facebook.imagepipeline.memory.MemoryPooledByteBufferFactory.newByteBuffer(MemoryPooledByteBufferFactory.java:73)
11-22 16:08:50.507 13724 13809 E AndroidRuntime:    at com.facebook.imagepipeline.memory.MemoryPooledByteBufferFactory.newByteBuffer(MemoryPooledByteBufferFactory.java:24)
11-22 16:08:50.507 13724 13809 E AndroidRuntime:    at com.facebook.imagepipeline.producers.LocalFetchProducer.getByteBufferBackedEncodedImage(LocalFetchProducer.java:87)
11-22 16:08:50.507 13724 13809 E AndroidRuntime:    at com.facebook.imagepipeline.producers.LocalFetchProducer.getEncodedImage(LocalFetchProducer.java:99)
11-22 16:08:50.507 13724 13809 E AndroidRuntime:    at com.facebook.imagepipeline.producers.LocalAssetFetchProducer.getEncodedImage(LocalAssetFetchProducer.java:37)
11-22 16:08:50.507 13724 13809 E AndroidRuntime:    at com.facebook.imagepipeline.producers.LocalFetchProducer$1.getResult(LocalFetchProducer.java:52)
11-22 16:08:50.507 13724 13809 E AndroidRuntime:    at com.facebook.imagepipeline.producers.LocalFetchProducer$1.getResult(LocalFetchProducer.java:48)
11-22 16:08:50.507 13724 13809 E AndroidRuntime:    at com.facebook.common.executors.StatefulRunnable.run(StatefulRunnable.java:43)
11-22 16:08:50.507 13724 13809 E AndroidRuntime:    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
11-22 16:08:50.507 13724 13809 E AndroidRuntime:    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
11-22 16:08:50.507 13724 13809 E AndroidRuntime:    at com.facebook.imagepipeline.core.PriorityThreadFactory$1.run(PriorityThreadFactory.java:51)
11-22 16:08:50.507 13724 13809 E AndroidRuntime:    at java.lang.Thread.run(Thread.java:764)
11-22 16:08:50.512 13724 13810 E AndroidRuntime: FATAL EXCEPTION: FrescoIoBoundExecutor-2
11-22 16:08:50.512 13724 13810 E AndroidRuntime: Process: com.packagename, PID: 13724
11-22 16:08:50.512 13724 13810 E AndroidRuntime: java.lang.NoClassDefFoundError: <clinit> failed for class com.facebook.imagepipeline.memory.NativeMemoryChunk; see exception in other thread
11-22 16:08:50.512 13724 13810 E AndroidRuntime:    at com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc(NativeMemoryChunkPool.java:25)
11-22 16:08:50.512 13724 13810 E AndroidRuntime:    at com.facebook.imagepipeline.memory.NativeMemoryChunkPool.alloc(NativeMemoryChunkPool.java:13)
11-22 16:08:50.512 13724 13810 E AndroidRuntime:    at com.facebook.imagepipeline.memory.BasePool.get(BasePool.java:267)
11-22 16:08:50.512 13724 13810 E AndroidRuntime:    at com.facebook.imagepipeline.memory.MemoryPooledByteBufferOutputStream.<init>(MemoryPooledByteBufferOutputStream.java:51)
11-22 16:08:50.512 13724 13810 E AndroidRuntime:    at com.facebook.imagepipeline.memory.MemoryPooledByteBufferFactory.newByteBuffer(MemoryPooledByteBufferFactory.java:73)
11-22 16:08:50.512 13724 13810 E AndroidRuntime:    at com.facebook.imagepipeline.memory.MemoryPooledByteBufferFactory.newByteBuffer(MemoryPooledByteBufferFactory.java:24)
11-22 16:08:50.512 13724 13810 E AndroidRuntime:    at com.facebook.imagepipeline.producers.LocalFetchProducer.getByteBufferBackedEncodedImage(LocalFetchProducer.java:87)
11-22 16:08:50.512 13724 13810 E AndroidRuntime:    at com.facebook.imagepipeline.producers.LocalFetchProducer.getEncodedImage(LocalFetchProducer.java:99)
11-22 16:08:50.512 13724 13810 E AndroidRuntime:    at com.facebook.imagepipeline.producers.LocalAssetFetchProducer.getEncodedImage(LocalAssetFetchProducer.java:37)
11-22 16:08:50.512 13724 13810 E AndroidRuntime:    at com.facebook.imagepipeline.producers.LocalFetchProducer$1.getResult(LocalFetchProducer.java:52)
11-22 16:08:50.512 13724 13810 E AndroidRuntime:    at com.facebook.imagepipeline.producers.LocalFetchProducer$1.getResult(LocalFetchProducer.java:48)
11-22 16:08:50.512 13724 13810 E AndroidRuntime:    at com.facebook.common.executors.StatefulRunnable.run(StatefulRunnable.java:43)
11-22 16:08:50.512 13724 13810 E AndroidRuntime:    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
11-22 16:08:50.512 13724 13810 E AndroidRuntime:    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
11-22 16:08:50.512 13724 13810 E AndroidRuntime:    at com.facebook.imagepipeline.core.PriorityThreadFactory$1.run(PriorityThreadFactory.java:51)
11-22 16:08:50.512 13724 13810 E AndroidRuntime:    at java.lang.Thread.run(Thread.java:764)

Re-bonjour,

J'ai essayé de reproduire le problème avec l'application vitrine, en vérifiant l'étiquette v1.11.0, mais elle ne compile pas. J'ai essayé de suivre https://frescolib.org/docs/building-from-source.html mais je pense que c'est obsolète (par exemple, il parle du dossier android-ndk/r10e mais cela n'existe pas dans mon installation et la version la plus récente est r18b).

Si j'essaie d'exécuter l'application vitrine à partir d'Android Studio, j'obtiens Process 'command '<mySdkPath>/ndk-bundle/ndk-build'' finished with non-zero exit value 2 .

En exécutant ./gradlew build partir de la ligne de commande, j'obtiens :

> Task :imagepipeline:ndk_build_bitmaps FAILED
A problem was found with the configuration of task ':imagepipeline:ndk_build_bitmaps'. Registering invalid inputs and outputs via TaskInputs and TaskOutputs methods has been deprecated and is scheduled to be removed in Gradle 5.0.
 - File '<myWorkspace>/fresco/imagepipeline/src/main/jni/bitmaps' specified for property '$1' is not a file.
Android NDK: APP_PLATFORM not set. Defaulting to minimum supported version android-16.    
make: Entering directory `<myWorkspace>/fresco/imagepipeline/src/main/jni/bitmaps'
<mySdkPath>/ndk-bundle/build/core/add-application.mk:178: *** make: Leaving directory `<myWorkspace>/fresco/imagepipeline/src/main/jni/bitmaps'
Android NDK: APP_STL gnustl_static is no longer supported. Please switch to either c++_static or c++_shared. See https://developer.android.com/ndk/guides/cpp-support.html for more information.    .  Stop.

FAILURE: Build failed with an exception.

J'ai essayé de définir APP_PLATFORM sur différentes valeurs et la ligne à ce sujet disparaît mais l'erreur est la même.

Ce problème persiste avec Android Studio 3.3 RC 1.

aide-moi!

java.lang.UnsatisfiedLinkError : impossible de trouver le DSO à charger : libimagepipeline.so causé par : dlopen a échoué : "/data/data/com.vipabc.vipmobilejr.phone/lib-main/libimagepipeline.so" est à la place de 64 bits de 32 bits

Ce problème n'est apparu que lorsque j'utilise l'intégration okhttp.
Mais sans cela, mon application ne commencera pas à télécharger des images.

Salut tout le monde, je comprends la frustration suscitée par ce problème.

Je tiens à vous faire savoir que nous sommes bien conscients des (divers) problèmes avec le code natif et des problèmes qu'il engendre. Nous travaillons activement à permettre l'utilisation de Fresco sans aucun code natif (voir par exemple ImagePipelineExperiments#disableNativeCode ). Il pourrait être prêt avec la version v1.11 ou v1.12. Bravo à @MikaelMorales

Sur des problèmes comme celui-ci, il est vraiment difficile pour nous de progresser sans aucune reproduction complète avec laquelle nous pouvons travailler. Ici, il semble qu'avoir des extraits du fichier build.gradle ne soit pas suffisant. Il faudrait que ce soit un projet minimal, mais complet.

Si vous avez une reproduction locale, vous pouvez nous aider ainsi que tout le monde sur ce fil en :

  • Vérifier s'il se reproduit avec l'application vitrine
  • Passez ensuite progressivement de l'application vitrine à votre configuration de build et observez à quel moment elle casse

C'est un problème pour lequel nous avons beaucoup besoin de votre aide ! J'ai ajouté la balise "bug" pour que stale-bot reste silencieux.

@ch4ndu , vous avez correctement observé qu'il manque les dernières versions de Fresco à armeabi . Il a été supprimé dans NDK r17 (https://developer.android.com/ndk/guides/abis)

Vous pouvez simplement acheter un OPPO r7 avec Android 5.1.1 pour reproduire ce problème par vous-même.
Veuillez noter que vous devez intégrer okhttp pour qu'il lève des exceptions.

Y a-t-il donc une correction de bug ou une solution de contournement ? Sinon, j'utiliserai une autre bibliothèque, car un tel bug pendant si longtemps est un gros NON.

J'ai trouvé une solution de contournement .. Ajoutez simplement ceci à la balise Android dans build.gradle

packagingOptions { exclude "lib/arm64-v8a/libimagepipeline.so" exclude "lib/arm64-v8a/libnative-imagetranscoder.so" }

Pas si grave. Il y a un tas de bugs non encore résolus dans l'API de Google depuis 2017. Ce qui a causé 2000 plantages par jour dans mon application. Ils ne prennent tout simplement pas les bogues aussi importants que les nouvelles fonctionnalités. Le seul qui le corrige en une semaine est Twitter.

Ainsi, l'option d'exclusion ne fonctionne pas non plus complètement. Vous avez des plantages sur certains appareils Samsung (S8 et Xcover4).

Meilleure solution de contournement : utilisez fresco 1.7.1 pour afficher des images rapidement et en douceur dans simpledrawview
et utilisez glide pour le redimensionnement (parce que la 1.7.1 n'a parfois pas redimensionné correctement les grandes images - ce que la 1.12.1 l'a fait. Mais la 1.12.1 a ce bug/crash).

PS. : J'ai aussi essayé Picasso, mais il a besoin de beaucoup de mémoire.. (même avec la version 2.7).

(notez que je ne travaille plus sur Fresco et que je parle en tant qu'utilisateur)

Nous allons essayer la solution de contournement suivante pour ce problème, qui nécessite Fresco 1.11 ou une version ultérieure.

Configurez le pipeline d'images pour utiliser la mémoire tampon au lieu de la mémoire native (exemple okhttp) :

ImagePipelineConfig config = 
    OkHttpImagePipelineConfigFactory.newBuilder(context, okHttpClient)
        .setMemoryChunkType(MemoryChunkType.BUFFER_MEMORY)
        .build()
Fresco.initialize(context, config);

Je ne recommande pas cette solution pour les appareils fonctionnant sous Android 4.x ou inférieur ET moins de 1 Go de RAM.

De plus, si vous n'utilisez pas de filtres ou de transcodeur natifs, vous devez les exclure de votre fichier gradle :

implementation('com.facebook.fresco:fresco:1.12.1') {
  exclude module: 'nativeimagefilters'
  exclude module: 'nativeimagetranscoder'
}

Il nous faudra une semaine ou deux pour confirmer que cela élimine le bogue dans notre application. @oprisnik , cela peut-il être ajouté à la doc ? De plus, avec ce changement, il devrait être possible d'exclure libimagepipeline.so des applications qui ne l'utilisent pas, mais cela ne semble pas être le cas.

J'ai utilisé votre solution en production :

implémentation('com.facebook.fresco:fresco:1.12.1') ​​{
module d'exclusion : 'nativeimagefilters'
module d'exclusion : 'nativeimagetranscoder'
}

Toujours en panne :
Causé par java.lang.UnsatisfiedLinkError
n'a pas pu trouver DSO à charger : libstatic-webp.so
com.facebook.soloader.SoLoader.initSoSources (source inconnue)
com.facebook.soloader.SoLoader.init (Source inconnue)
com.facebook.soloader.SoLoader.init (Source inconnue)
com.facebook.soloader.SoLoader.init (Source inconnue)
com.facebook.imagepipeline.nativecode.StaticWebpNativeLoader.ensure (source inconnue)
com.facebook.animated.webp.WebPImage.create (Source inconnue)

@galrom, cela ne se produirait que si vous incluez le module static-webp (anciennement connu sous le nom de webpsupport). Vous ne devez le faire que si votre application prend en charge Android 4.2.0 ou une version antérieure. Même dans ce cas, vous n'en avez besoin que pour le webp sans perte ou transparent - pour le webp de base, vous pouvez passer à Android 4.0 sans static-webp.

Nos dependency graph ne montrent aucune trace de static-webp module et nous subissons ce crash

J'ai le même problème avec Oppo os v5.

// Fresco
    api 'com.facebook.fresco:fresco:1.13.0'
    api 'com.facebook.fresco:animated-webp:1.13.0'
    api 'com.facebook.fresco:imagepipeline-okhttp3:1.13.0'

image

Confirmé que notre application (Memrise) a entièrement éliminé ce plantage en utilisant le code que j'ai posté ci-dessus. Nous n'utilisons pas static-webp, ce n'est donc pas un problème pour nous.

Génial, merci d'avoir confirmé @tyronen. Nous mettrons à jour la doc. Peut-être devrions-nous également en faire le comportement par défaut pour >4x.

J'ai le même problème avec Oppo os v5.

// Fresco
    api 'com.facebook.fresco:fresco:1.13.0'
    api 'com.facebook.fresco:animated-webp:1.13.0'
    api 'com.facebook.fresco:imagepipeline-okhttp3:1.13.0'

image

J'ai également rencontré cela dans la même version, 1.13.0. J'aimerais donc savoir comment résoudre ce problème sans supprimer le support arm64. @oprisnik
image

Pourquoi Facebook ne résout-il pas ce problème ? Nous avons posté beaucoup de requêtes, mais ils demandent toujours le rapport. Un si mauvais support de la part de l'équipe Facebook.

J'ai le même problème avec Oppo os v5.

// Fresco
    api 'com.facebook.fresco:fresco:1.13.0'
    api 'com.facebook.fresco:animated-webp:1.13.0'
    api 'com.facebook.fresco:imagepipeline-okhttp3:1.13.0'

image

J'ai également rencontré cela dans la même version, 1.13.0. J'aimerais donc savoir comment résoudre ce problème sans supprimer le support arm64. @oprisnik
image

Trouvez-vous une solution?

Pouvez-vous essayer avec la solution décrite ci-dessus? https://github.com/facebook/fresco/issues/2049#issuecomment -462880309

Pouvez-vous essayer avec la solution décrite ci-dessus? #2049 (commentaire)

J'ai essayé cette solution mais elle fait planter l'application

même problème : j'utilise l'implémentation 'com.facebook. fresque:fresque :2.0.0'

j'utilise 'com.facebook. fresque:fresque :2.0.0'.
j'ai eu le même problème sur mon appareil HUAWEI HORNOR 8.
vient d'ajouter
ndk { abiFilters "armeabi", "armeabi-v7a", "x86" }
dans defaultConfig a résolu mon problème.

même chose ici, cela se produit essentiellement dans toutes les versions du système 6 et supérieures et dans la plupart des marques d'appareils

j'utilise 'com.facebook. fresque:fresque :2.0.0'.
j'ai eu le même problème sur mon appareil HUAWEI HORNOR 8.
vient d'ajouter
ndk { abiFilters "armeabi", "armeabi-v7a", "x86" }
dans defaultConfig a résolu mon problème.

@glovebx Vous voudrez peut-être vérifier si la limitation à 32 bits ne vous posera pas de problèmes avec les exigences de google pour 64 bits : https://android-developers.googleblog.com/2019/01/get-your-apps-ready-for- 64 bits.html

D'après ce que j'ai compris, de nouvelles applications ou des mises à jour d'applications existantes seront nécessaires pour prendre en charge le 64 bits à partir du 01.08.2019

J'ai une solution de compromis avant que ce problème ne soit résolu.
https://github.com/facebook/fresco/issues/2381#issuecomment -516825599
Espérons que cela peut vous aider

@ShawnDongAi merci pour ce partage 👍 ! Pour nous, c'est un peu trop tard : ) nous sommes passés à une autre bibliothèque d'images à cause de ce problème de fresque ici.

https://github.com/facebook/SoLoader/pull/45 devrait résoudre certains des problèmes ici. Nous travaillons également à rendre SoLoader facultatif, afin que vous puissiez utiliser d'autres mécanismes pour charger du code natif à la place.

Utilisation de la version RN 0.60.5.
Si vous vous demandez pourquoi votre application plante si vous la téléchargez depuis Playstore, apportez les modifications ci-dessous

Options d'emballage {
exclure '/lib/arm64-v8a/libc++_shared.so' (exclure '/lib/arm64-v8a/error_causing_library.so')
exclure '/lib/x86_64/libc++_shared.so' (exclure '/lib/arm64-v8a/error_causing_library.so')

//In pickFirst, replace the library name with the library that is causing error.
pickFirst '/lib/x86/libc++_shared.so' (pickFirst '/lib/x86/error_causing_library.so')
pickFirst '/lib/armeabi-v7a/libc++_shared.so' (pickFirst '/lib/armeabi-v7a/error_causing_library.so')

}

Si vous ne savez pas quelle bibliothèque est à l'origine du plantage, importez votre bundle dans le laboratoire de test Firebase, puis vérifiez. Il vous dira quelle bibliothèque renvoie l'erreur

@Balajipss n'exclura pas toutes les bibliothèques 64 bits ne causera aucun problème avec l'exigence 64 bits de Google : https://android-developers.googleblog.com/2019/01/get-your-apps-ready-for-64-bit .html ?

@waseefakhtar Vous pouvez apporter les modifications suivantes

Options d'emballage {
exclure '/lib/arm64-v8a/libc++_shared.so'
exclure '/lib/x86_64/libc++_shared.so'
pickFirst '/lib/x86/libc++_shared.so'
pickFirst '/lib/armeabi-v7a/libc++_shared.so'
}

Quelqu'un a-t-il une liste étape par étape pour reproduire ce problème? Nous y sommes confrontés en production mais nous ne pouvons pas le reproduire localement, même avec le même téléphone que celui affiché par notre notificateur de crash.

@juanimoli pas sûr, mais la plupart des appareils Oppo exécutant OS 5 semblent faire face au problème.

@waseefakhtar J'ai pu reproduire le problème en compilant l'application pour "armeabi-v7a" dans l'option de fichier json des spécifications de l'appareil du bundletool (à l'aide d'AppBundle). Installé l'application sur un appareil pris en charge et le plantage est apparu immédiatement.

J'ai pu le résoudre en appliquant 2381#issuecomment-516825599 sans abiFilters ni exclus ajoutés.

J'ai utilisé la fresque 1.13.0 et c'était OK tout le temps. Lors de la mise à jour vers la version 2.0.0, j'ai eu ce problème. Ensuite, j'ai vérifié mon nouvel apk, je n'ai trouvé aucun libimagepipeline.so dans mon apk. . et le problème est résolu, c'est peut-être un problème du studio Android !

J'ai résolu ce problème de cette façon !

defaultConfig { ... ndk { abiFilters "armeabi", "armeabi-v7a", "x86", "x86_64", "mips", "mips64" } }

J'ai mis à jour vers AndroidX et tout d'un coup j'ai eu couldn't find DSO to load: libimagepipeline.so sur l'environnement local, j'ai réussi à le réparer en copiant le projet vers un autre chemin .

Je n'en ai aucune idée, mais je suppose que quelque chose avec le cache Gradle s'est mal passé. (bien que le cache Gradle ait été vidé)

J'aimerais connaître la cause profonde si quelqu'un le sait.

Se passe de notre côté après la mise à niveau vers Fresco 2.1.0

Je l'ai corrigé en effectuant les modifications suivantes :

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

Après ce changement, Fresco utilisera le chargeur natif plutôt que soLoader pour charger les bibliothèques natives.

Vous devez également ajouter exclude group: 'com.facebook.fresco', module: 'soloader' , consultez la version 2.1.0 pour plus de détails :

https://github.com/facebook/fresco/releases/tag/v2.1.0

J'ai récemment déménagé à Fresco de Picasso et je viens de lancer l'application mise à jour sur Playstore. Maintenant, dès le premier jour, je vois cette erreur dans mon application. Le crash a été vu sur la version Android 7.1.2 sur les appareils Trend

Screenshot (158)

Existe-t-il une solution de travail disponible maintenant

Solutions potentielles :

  • Utilisez la dernière version de Fresco. SoLoader est constamment mis à jour et les problèmes avec certains appareils sont corrigés. Ou aidez-nous à comprendre pourquoi cela se produit pour votre ensemble d'appareils et contribuez à SoLoader.
  • Utilisez le chargeur de bibliothèque natif du système au lieu de SoLoader ou votre propre implémentation https://github.com/facebook/fresco/issues/2049#issuecomment -615255009
  • Utilisez Fresco uniquement en Java sans code natif, voir https://github.com/facebook/fresco/releases/tag/v2.1.0 (c'est probablement le plus similaire à Picasso car il n'utilise pas non plus de code natif pour améliorer les performances).

@oprisnik J'ai essayé la solution 3 ci-dessus mise à niveau vers 2.2.0 et testé l'application dans Firebase, mais lors des tests, j'ai eu cette erreur

java.lang.RuntimeException : impossible de créer l'application com.example.xyz.MyApplication : java.lang.RuntimeException : configuration du code natif incorrecte, la réflexion a échoué.

uniquement sur les appareils exécutant l'API 19.

j'avais utilisé

` implementation('com.facebook.fresco:fresco:2.2.0') {  
  exclude group: 'com.facebook.soloader', module: 'soloader'
  exclude group: 'com.facebook.fresco', module: 'soloader'
  exclude group: 'com.facebook.fresco', module: 'nativeimagefilters'
  exclude group: 'com.facebook.fresco', module: 'nativeimagetranscoder'
  exclude group: 'com.facebook.fresco', module: 'memory-type-native'
  exclude group: 'com.facebook.fresco', module: 'imagepipeline-native' }`

Fresque initialisée à l'aide de

             `Fresco.initialize(
                     getApplicationContext(),
                     ImagePipelineConfig.newBuilder(getApplicationContext())
                    .setMemoryChunkType(MemoryChunkType.BUFFER_MEMORY)
                    .setImageTranscoderType(ImageTranscoderType.JAVA_TRANSCODER)
                    .experiment().setNativeCodeDisabled(true)
                    .build());`

La trace de pile complète est

java.lang.RuntimeException : impossible de créer l'application com.example.xyz.MyApplication : java.lang.RuntimeException : configuration du code natif incorrecte, la réflexion a échoué.
EXCEPTION FATALE : principale
Processus : com.exemple.xyz, PID : 29863
java.lang.RuntimeException : impossible de créer l'application com.example.xyz.MyApplication : java.lang.RuntimeException : configuration du code natif incorrecte, la réflexion a échoué.
sur android.app.ActivityThread.handleBindApplication(ActivityThread.java:4423)
sur android.app.ActivityThread.access $1500 (ActivityThread.java:139)
sur android.app.ActivityThread$H.handleMessage(ActivityThread.java:1270)
sur android.os.Handler.dispatchMessage (Handler.java:102)
sur android.os.Looper.loop(Looper.java:136)
sur android.app.ActivityThread.main (ActivityThread.java:5097)
à java.lang.reflect.Method.invokeNative (méthode native)
à java.lang.reflect.Method.invoke(Method.java:515)
sur com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
sur com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
sur dalvik.system.NativeStart.main (méthode native)
Causé par : java.lang.RuntimeException : Configuration incorrecte du code natif, la réflexion a échoué.
sur com.facebook.imagepipeline.platform.PlatformDecoderFactory.buildPlatformDecoder(PlatformDecoderFactory.java:51)
sur com.facebook.imagepipeline.core.ImagePipelineFactory.getPlatformDecoder(ImagePipelineFactory.java:312)
sur com.facebook.imagepipeline.core.ImagePipelineFactory.getPlatformBitmapFactory(ImagePipelineFactory.java:304)
sur com.facebook.imagepipeline.core.ImagePipelineFactory.getAnimatedFactory(ImagePipelineFactory.java:164)
sur com.facebook.imagepipeline.core.ImagePipelineFactory.getImageDecoder(ImagePipelineFactory.java:227)
sur com.facebook.imagepipeline.core.ImagePipelineFactory.getProducerFactory(ImagePipelineFactory.java:327)
sur com.facebook.imagepipeline.core.ImagePipelineFactory.getProducerSequenceFactory(ImagePipelineFactory.java:360)
sur com.facebook.imagepipeline.core.ImagePipelineFactory.getImagePipeline(ImagePipelineFactory.java:282)
sur com.facebook.drawee.backends.pipeline.PipelineDraweeControllerBuilderSupplier.(PipelineDraweeControllerBuilderSupplier.java:52)
sur com.facebook.drawee.backends.pipeline.PipelineDraweeControllerBuilderSupplier.(PipelineDraweeControllerBuilderSupplier.java:43)
sur com.facebook.drawee.backends.pipeline.PipelineDraweeControllerBuilderSupplier.(PipelineDraweeControllerBuilderSupplier.java:36)
sur com.facebook.drawee.backends.pipeline.Fresco.initializeDrawee(Fresco.java:121)
sur com.facebook.drawee.backends.pipeline.Fresco.initialize(Fresco.java:110)
sur com.facebook.drawee.backends.pipeline.Fresco.initialize(Fresco.java:54)
sur com.facebook.drawee.backends.pipeline.Fresco.initialize(Fresco.java:46)
à com.example.xyz.MyApplication.onCreate(MyApplication.java:26)
sur android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1030)
sur android.app.ActivityThread.handleBindApplication(ActivityThread.java:4420)
... 10 de plus
Causé par : java.lang.ClassNotFoundException : com.facebook.imagepipeline.platform.KitKatPurgeableDecoder
à java.lang.Class.classForName (méthode native)
à java.lang.Class.forName(Class.java:251)
à java.lang.Class.forName(Class.java:216)
sur com.facebook.imagepipeline.platform.PlatformDecoderFactory.buildPlatformDecoder(PlatformDecoderFactory.java:44)
... 27 de plus
Causé par : java.lang.NoClassDefFoundError : com/facebook/imagepipeline/platform/KitKatPurgeableDecoder
... 31 de plus
Causé par : java.lang.ClassNotFoundException : n'a pas trouvé la classe "com.facebook.imagepipeline.platform.KitKatPurgeableDecoder" sur le chemin : DexPathList[[fichier zip "/data/app/com.example.xyz-1.apk", fichier zip "/data/data/com.example.xyz/code_cache/secondaire-dexes/com.example.xyz-1.apk.classes2.zip", fichier zip "/data/data/com.example.xyz/code_cache /secondaire-dexes/com.example.xyz-1.apk.classes3.zip"],nativeLibraryDirectories=[/data/app-lib/com.example.xyz-1, /vendor/lib, /system/lib]]
à dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
sur java.lang.ClassLoader.loadClass(ClassLoader.java:497)
sur java.lang.ClassLoader.loadClass(ClassLoader.java:457)
... 31 de plus

Cette page vous a été utile?
0 / 5 - 0 notes