You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将firework_sdk移至动态模块后App启动出现PicassoProvider崩溃如何解决

崩溃问题解决方案:依赖迁移到动态模块后PicassoProvider类找不到

问题根因

Android系统在App启动阶段就会自动安装所有在Manifest中注册的ContentProvider,此时动态模块的dex文件还未被加载。你把com.github.loopsocial:firework_sdk:5.3.8迁移到动态模块后,该SDK依赖的Picasso库也随之打包到动态模块的split包中,base.apk里不存在PicassoProvider类,系统启动查找该Provider时就会抛出ClassNotFoundException。

可行解决方案

  • 方案1(优先推荐,改造成本最低):app模块显式添加Picasso依赖
    直接在app模块的build.gradle中添加和动态模块内firework sdk依赖版本一致的Picasso依赖,确保Picasso相关类被打包到base.apk中,启动时系统能找到对应Provider:
    dependencies {
        // 版本需要和firework_sdk内部依赖的Picasso版本完全一致,避免类冲突
        implementation "com.squareup.picasso:picasso:xxx"
    }
    
    如果开启了代码混淆,需要在app模块的混淆规则中添加Picasso的保留规则,防止类被裁剪:
    -keep class com.squareup.picasso.PicassoProvider { *; }
    -keep class com.squareup.picasso.** { *; }
    
  • 方案2(适合对包大小要求严格的场景):移除自动注册的PicassoProvider,手动初始化
    如果你不想在app模块额外引入Picasso依赖,可以在app模块的AndroidManifest中移除PicassoProvider的自动注册,等动态模块加载完成后再手动初始化Picasso:
    1. 在app模块的AndroidManifest.xml的application节点下添加移除Provider的配置:
    <application ...>
        <provider
            android:name="com.squareup.picasso.PicassoProvider"
            tools:node="remove" />
    </application>
    
    1. 在动态模块加载完成、首次使用firework sdk之前,调用Picasso.Builder完成手动初始化即可,不影响SDK的正常使用。

内容的提问来源于stack exchange,提问作者Ankush Kapoor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:39:02