【问题标题】:Android RuntimeException: Unable to get provider com.squareup.picasso.PicassoProviderAndroid RuntimeException:无法获取提供程序 com.squareup.picasso.PicassoProvider
【发布时间】:2021-10-30 00:30:30
【问题描述】:

我在应用启动时遇到 PicassoProvider 崩溃。当我将一个库('com.github.loopsocial:firework_sdk:5.3.8')移动到动态模块时,这种情况就开始发生了。早些时候,这种依赖关系在 app 模块中。当依赖项在 app 模块中时,就不会发生这样的崩溃。

这个崩溃有什么解决办法吗?

java.lang.RuntimeException: Unable to get provider com.squareup.picasso.PicassoProvider: java.lang.ClassNotFoundException: Didn't find class "com.squareup.picasso.PicassoProvider" on path: DexPathList[[zip file "/data/app/com.abc-7SimyXXbKeA9ZazLIuesbw==/base.apk", zip file "/data/app/com.abc-7SimyXXbKeA9ZazLIuesbw==/split_config.arm64_v8a.apk", zip file "/data/app/com.abc-7SimyXXbKeA9ZazLIuesbw==/split_config.xxhdpi.apk"],nativeLibraryDirectories=[/data/app/com.abc-7SimyXXbKeA9ZazLIuesbw==/lib/arm64, /data/app/com.abc-7SimyXXbKeA9ZazLIuesbw==/base.apk!/lib/arm64-v8a, /data/app/com.abc-7SimyXXbKeA9ZazLIuesbw==/split_config.arm64_v8a.apk!/lib/arm64-v8a, /data/app/com.abc-7SimyXXbKeA9ZazLIuesbw==/split_config.xxhdpi.apk!/lib/arm64-v8a, /system/lib64, /system/product/lib64]]
        at android.app.ActivityThread.installProvider(ActivityThread.java:7194)
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:6672)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6567)
        at android.app.ActivityThread.access$1400(ActivityThread.java:224)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1887)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:224)
        at android.app.ActivityThread.main(ActivityThread.java:7562)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)

【问题讨论】:

  • 能否请您发布您的应用级别build.gradle

标签: android picasso


【解决方案1】:
  1. 您必须禁用“即时运行”
  2. 如果在 libs build.gradle 中定义了 publishNonDefault true,请 删除它或使其为假。请尝试。我已经解决了这个问题 通过删除 lib 的 build.gradle 中的 publishNonDefault true 发生 NoClassDefFoundError。

如果不行,请补充

dexOptions {
    preDexLibraries false
}

【讨论】:

    【解决方案2】:

    PicassoProvider 已被移除,以支持使用手动或基于框架的 DI 创建和管理您自己的 Picasso 实例。

    为此,我们必须创建自己的毕加索对象并将其传递到需要的地方。

    另外一种解决方案添加了 build gradle java 版本

    android {
    ....
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    }
    

    更多详情请参考PicassoProvider issue

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-02
      • 2019-03-18
      • 2017-01-05
      • 2018-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-16
      相关资源
      最近更新 更多