no se pudo encontrar DSO para cargar: libimagepipeline.so
com.facebook.soloader.SoLoader.void doLoadLibraryBySoName (java.lang.String, int, android.os.StrictMode $ ThreadPolicy) ...
03-23 19: 21: 55.955 17814 17931 E art: dlopen ("/ data / data / xxx / lib-main / libimagepipeline.so", RTLD_LAZY) falló: dlopen falló: "/ data / data / xxx / lib-main /libimagepipeline.so "es de 64 bits en lugar de 32 bits
03-23 19: 21: 55.955 17814 17931 E SoLoader: No se pudo cargar: libimagepipeline.so
com.facebook.soloader.SoLoader.void doLoadLibraryBySoName (java.lang.String, int, android.os.StrictMode $ ThreadPolicy) (SoLoader.java:522)
com.facebook.soloader.SoLoader.void loadLibraryBySoName (java.lang.String, java.lang.String, java.lang.String, int, android.os.StrictMode $ ThreadPolicy) (SoLoader.java:420)
com.facebook.soloader.SoLoader.void loadLibrary (java.lang.String, int) (SoLoader.java:370)
com.facebook.soloader.SoLoader.void loadLibrary (java.lang.String) (SoLoader.java:335)
com.facebook.imagepipeline.nativecode.ImagePipelineNativeLoader.void load () (ImagePipelineNativeLoader.java:42)
com.facebook.imagepipeline.memory.NativeMemoryChunk.void
com.facebook.imagepipeline.memory.NativeMemoryChunkPool.com.facebook.imagepipeline.memory.NativeMemoryChunk alloc (int) (NativeMemoryChunkPool.java:58)
com.facebook.imagepipeline.memory.NativeMemoryChunkPool.void gratis (java.lang.Object) (NativeMemoryChunkPool.java:20)
com.facebook.imagepipeline.memory.BasePool.java.lang.Object get (int) (BasePool.java:257)
com.facebook.imagepipeline.memory.NativePooledByteBufferOutputStream.void
com.facebook.imagepipeline.memory.NativePooledByteBufferFactory.com.facebook.imagepipeline.memory.NativePooledByteBuffer newByteBuffer (java.io.InputStream, int) (NativePooledByteBufferFactory.java:98)
com.facebook.imagepipeline.memory.NativePooledByteBufferFactory.com.facebook.common.memory.PooledByteBufferOutputStream newOutputStream (int) (NativePooledByteBufferFactory.java:26)
com.facebook.imagepipeline.producers.LocalFetchProducer.com.facebook.imagepipeline.image.EncodedImage getByteBufferBackedEncodedImage (java.io.InputStream, int) (LocalFetchProducer.java:89)
com.facebook.imagepipeline.producers.LocalFetchProducer.com.facebook.imagepipeline.image.EncodedImage getEncodedImage (java.io.InputStream, int) (LocalFetchProducer.java:101)
com.facebook.imagepipeline.producers.LocalFileFetchProducer.com.facebook.imagepipeline.image.EncodedImage getEncodedImage (com.facebook.imagepipeline.request.ImageRequest) (LocalFileFetchProducer.java:34)
com.facebook.imagepipeline.producers.LocalFetchProducer $ 1.com.facebook.imagepipeline.image.EncodedImage getResult () (LocalFetchProducer.java:54)
com.facebook.imagepipeline.producers.LocalFetchProducer $ 1.java.lang.Object getResult () (LocalFetchProducer.java:50)
com.facebook.common.executors.StatefulRunnable.void run () (StatefulRunnable.java:45)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1112)
java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:587)
com.facebook.imagepipeline.core.PriorityThreadFactory $ 1.void run () (PriorityThreadFactory.java:53)
java.lang.Thread.run (Thread.java:818)
Posiblemente un duplicado de https://github.com/facebook/fresco/issues/2049.
Sí, esto parece ser un duplicado de # 2049 (especialmente https://github.com/facebook/fresco/issues/2049#issuecomment-367235216). @ jyh149129 , estoy cerrando el tema aquí para enfocar la discusión allí :)
¡Gracias @gengjiawen!
al diablo con la reacción
¿Dónde está la solución? Estoy enfrentando un problema en la versión 1.13.0 de la dependencia de Fresco. Por favor, ayúdame.
Creo que encontré por qué sucedió este error, porque el cpu_abi de / data / data / yourpackage / lib y / data / data / yourpackage / lib-main es diferente.
¿Y por qué es diferente? porque ExtractFromZipSoSource.ensureDsos () tenía un defecto.
¿Qué defecto? Se suponía que el sistema operativo Android pensaba que era una aplicación de 64 bits cuando tenía bibliotecas de 32 y 64 bits. Pero, la regla se rompió en el OPPO R7sm (Android 5.1.1 ColorOS: V3.0_170510_beta).
He solucionado el error en mi OPPO modificando el código, haré una solicitud de extracción más tarde, esperando ayudar a sus muchachos.
¡Genial, gracias por investigar a @artemisia!
@artemisia Deseo ver tus relaciones públicas! Este error me confunde mucho ...
Perdón mi ingles es malo.
Dispositivo: Dispositivo móvil: OPPC R7sm (AndroLinkid 5.1.1)
Recomendaciones:
Cuando existe armeabi-v7a nad arm64-v8a en apk, generalmente se carga arm64-v8a. Pero OPPO R7sm se carga armeabi-v7a.
Verifico datos de ruta / aplicación /
Cuando inicie soloader, descomprimirá datos / aplicación /
Los archivos no son los mismos. copiará a datos / datos /
El get supportedAbis es ["arm64-v8a", "armeabi-v7a", "armeabi"]. Confirme el archivo * .so secuencialmente.
Pero data / app // lib / está armado en OPPC R7sm, así que siempre copie arm64-v8a el archivo del sistema operativo a data / data /
Llevar a * .so es un problema de 64 bits en lugar de 32 bits.
Mi solución:
Modifique la biblioteca de SoLoader. Agregar datos de verificación / aplicación /
Expediente:
ExtractFromZipSoSource.java
...
final ZipDso[] ensureDsos() {
if (mDsos == null) {
Set<String> librariesAbiSet = new LinkedHashSet<>();
HashMap<String, ZipDso> providedLibraries = new HashMap<>();
Pattern zipSearchPattern = Pattern.compile(mZipSearchPattern);
String[] supportedAbis = SysUtil.getSupportedAbis();
Enumeration<? extends ZipEntry> entries = mZipFile.entries();
+ // Fixed couldn't find DSO to load: "xxx.os" is 64-bit instead of 32-bit
+ File sysLibPath = new File(mContext.getApplicationInfo().nativeLibraryDir);
+ String sysLibAbi = sysLibPath.getPath().substring(sysLibPath.getPath().lastIndexOf("/")+1);
+ if(sysLibAbi.equalsIgnoreCase("arm")) {
+ // sys lib is load armeabi-v7a, this exception case
+ ArrayList<String> newSupportedAbis = new ArrayList();
+ for(String abi : supportedAbis) {
+ if(abi.equalsIgnoreCase("arm64-v8a")) {
+ //skip arm64-v8a
+ continue;
+ }
+
+ newSupportedAbis.add(abi);
+ }
+
+ supportedAbis = newSupportedAbis.toArray(new String[newSupportedAbis.size()]);
+ }
while (entries.hasMoreElements()) {
ZipEntry entry = entries.nextElement();
Matcher m = zipSearchPattern.matcher(entry.getName());
...
al diablo con la reacción
Bienvenido Flutter
Comentario más útil
al diablo con la reacción