تعذر العثور على DSO للتحميل: 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) فشل: فشل dlopen: "/ data / data / xxx / lib-main /libimagepipeline.so "هو 64 بت بدلاً من 32 بت
03-23 19: 21: 55.955 17814 17931 E SoLoader: تعذر تحميل: 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 تخصيص (int) (NativeMemoryChunkPool.java:58)
com.facebook.imagepipeline.memory.NativeMemoryChunkPool.void free (java.lang.Object) (NativeMemoryChunkPool.java:20)
com.facebook.imagepipeline.memory.BasePool.java.lang.Object الحصول على (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)
نسخة طبق الأصل من https://github.com/facebook/fresco/issues/2049.
نعم ، يبدو أن هذه نسخة مكررة من # 2049 (خاصة https://github.com/facebook/fresco/issues/2049#issuecomment-367235216). @ jyh149129 ، أغلق المشكلة هنا لتركيز المناقشة هناك :)
gengjiawen شكرا!
اللعنة على رد الفعل
اين الحل؟ أواجه مشكلة في إصدار 1.13.0 من تبعية Fresco. أرجوك أن تساعدني.
أعتقد أنني وجدت سبب حدوث هذا الخطأ ، لأن cpu_abi لـ / data / data / yourpackage / lib و / data / data / yourpackage / lib-main مختلفة.
ولماذا هو مختلف؟ لأن ExtractFromZipSoSource.ensureDsos () به عيب.
ما العيب؟ كان هناك افتراض بأن نظام التشغيل Android يعتقد أنك كنت تطبيق 64 بت عندما كان لديك مكتبات 32 بت و 64 بت. ولكن ، تم كسر القاعدة في OPPO R7sm (Android 5.1.1 ColorOS: V3.0_170510_beta).
لقد أصلحت الخلل في OPPO الخاص بي عن طريق تعديل الكود ، وسأقدم طلب سحب لاحقًا ، متوقعًا أن أساعد رفاقك.
رائع ، شكرًا لاستقصاءartemisia!
artemisia أتمنى رؤية العلاقات العامة الخاصة بك! هذا الخطأ
آسف لغتي الإنجليزية سيئة.
الجهاز: Mobile Device: OPPC R7sm (AndroLinkid 5.1.1)
الموجودات:
عندما يوجد armeabi-v7a nad arm64-v8a في apk ، يتم تحميل arm64-v8a بشكل عام. لكن OPPO R7sm محملة armeabi-v7a.
أتحقق من بيانات المسار / التطبيق /
عند بدء soloader ، سيتم فك ضغط البيانات / التطبيق /
الملفات ليست هي نفسها. سوف ينسخ إلى البيانات / البيانات /
الحصول على supportAbis هو ["arm64-v8a" ، "armeabi-v7a" ، "armeabi"]. قم بتأكيد ملف * .so بالتسلسل.
لكن data / app // lib / is arm على OPPC R7sm ، لذلك قم دائمًا بنسخ ملف arm64-v8a إلى بيانات / بيانات /
تؤدي إلى *. لذا فهي مشكلة 64 بت بدلاً من 32 بت.
بلدي الحل:
تعديل مكتبة SoLoader. إضافة بيانات الشيك / التطبيق /
ملف:
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());
...
اللعنة على رد الفعل
مرحبًا Flutter
التعليق الأكثر فائدة
اللعنة على رد الفعل