Fresco.initialize()报错 failed resolution of: landroidx/core/util/pools$synchronizedpool;

今天弄了一天的这个问题,记录一下解决方法:

根据官网配置的的是:

implementation 'com.facebook.fresco:fresco:2.1.0'
implementation 'com.facebook.fresco:animated-gif:2.1.0'
implementation 'com.facebook.fresco:webpsupport:2.1.0'

但是运行时报错:

2020-03-28 16:48:23.054 3901-3901/com.example.apple.frescoapp E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.apple.frescoapp, PID: 3901
    java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/core/util/Pools$SynchronizedPool;
        at com.facebook.imagepipeline.platform.PlatformDecoderFactory.buildPlatformDecoder(PlatformDecoderFactory.java:35)
        at com.facebook.imagepipeline.core.ImagePipelineFactory.getPlatformDecoder(ImagePipelineFactory.java:308)
        at com.facebook.imagepipeline.core.ImagePipelineFactory.getPlatformBitmapFactory(ImagePipelineFactory.java:300)
        at com.facebook.imagepipeline.core.ImagePipelineFactory.getAnimatedFactory(ImagePipelineFactory.java:163)
        at com.facebook.imagepipeline.core.ImagePipelineFactory.getImageDecoder(ImagePipelineFactory.java:223)
        at com.facebook.imagepipeline.core.ImagePipelineFactory.getProducerFactory(ImagePipelineFactory.java:323)
        at com.facebook.imagepipeline.core.ImagePipelineFactory.getProducerSequenceFactory(ImagePipelineFactory.java:356)
        at com.facebook.imagepipeline.core.ImagePipelineFactory.getImagePipeline(ImagePipelineFactory.java:278)
        at com.facebook.drawee.backends.pipeline.PipelineDraweeControllerBuilderSupplier.<init>(PipelineDraweeControllerBuilderSupplier.java:52)
        at com.facebook.drawee.backends.pipeline.PipelineDraweeControllerBuilderSupplier.<init>(PipelineDraweeControllerBuilderSupplier.java:43)
        at com.facebook.drawee.backends.pipeline.PipelineDraweeControllerBuilderSupplier.<init>(PipelineDraweeControllerBuilderSupplier.java:36)
        at com.facebook.drawee.backends.pipeline.Fresco.initializeDrawee(Fresco.java:121)
        at com.facebook.drawee.backends.pipeline.Fresco.initialize(Fresco.java:110)
        at com.facebook.drawee.backends.pipeline.Fresco.initialize(Fresco.java:54)
        at com.facebook.drawee.backends.pipeline.Fresco.initialize(Fresco.java:40)
        at com.example.apple.frescoapp.MyApp.onCreate(MyApp.java:21)
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1024)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5361)
        at android.app.ActivityThread.-wrap2(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1528)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6077)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.core.util.Pools$SynchronizedPool" on path: DexPathList[[zip file "/data/app/com.example.apple.frescoapp-2/base.apk"],nativeLibraryDirectories=[/data/app/com.example.apple.frescoapp-2/lib/x86, /data/app/com.example.apple.frescoapp-2/base.apk!/lib/x86, /system/lib, /vendor/lib]]……

后来阴差阳错修改了一下Fresco版本号这个问题就解决了,把2.1.0改为1.12.0

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.apple.frescoapp"
        minSdkVersion 15
        targetSdkVersion 28
        multiDexEnabled true
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

    implementation 'com.android.support:multidex:1.0.3'
    implementation 'com.facebook.fresco:fresco:1.12.0'
    implementation 'com.facebook.fresco:animated-gif:1.12.0'
    implementation 'com.facebook.fresco:webpsupport:1.12.0'
}

最后几个注意事项:

1.初始化Fresco和配置MultiDex

package com.example.apple.frescoapp;

import android.app.Application;
import android.content.Context;
import android.support.multidex.MultiDex;

import com.facebook.drawee.backends.pipeline.Fresco;

/**
 * Name:
 *
 * @author dengyalan
 * Company MAIGOO 长沙榜中榜网络科技有限公司
 * Date: 2020/3/28 10:44
 */
public class MyApp extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);
    }

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        try {
            MultiDex.install(this);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

       2.清单文件开启网络权限

       3.com.facebook.drawee.view.SimpleDraweeView控件不能设置wrapcontent

       4.defaultConfig添加属性:multiDexEnabled true

仅为个人操作经验,不知道原理,如有知道原理望指正。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值