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

开启ProGuard后App签名APK启动崩溃,Debug版本正常求助

解决ProGuard导致签名APK启动崩溃的问题

看起来你遇到的核心问题是:Debug模式下应用正常运行,但生成签名Release APK后启动就崩溃,而ProGuard日志里明确提示了几个类找不到的警告——这是因为你只给ProGuard加了-dontwarn规则跳过警告,但没有保留必要的类,也没处理依赖缺失的问题,导致混淆过程中这些关键类被移除或者无法被正确引用。

下面针对每个警告给出具体的修复方案:

1. Picasso & OkHttp 类找不到的问题

日志里的com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.OkHttpClient,说明Picasso依赖的OkHttp类在混淆时被处理掉了,或者你的依赖版本不匹配。

修复步骤:

  • 先确认依赖配置:如果你的项目使用的是Picasso 2.5.2及以上版本,它默认依赖OkHttp 2.x;如果用的是OkHttp 3.x,需要额外引入picasso-okhttp3-downloader依赖(在build.gradle里添加)。
  • 更新ProGuard规则,替换原来的Picasso规则为:
    # Picasso 相关保留规则
    -keep class com.squareup.picasso.** { *; }
    -keepclassmembers class com.squareup.picasso.** { *; }
    
    # OkHttp 相关保留规则(根据你用的版本调整)
    # 如果你用的是OkHttp 2.x
    -keep class com.squareup.okhttp.** { *; }
    -keep interface com.squareup.okhttp.** { *; }
    # 如果你用的是OkHttp 3.x
    -keep class okhttp3.** { *; }
    -keep interface okhttp3.** { *; }
    

2. DataBinding 类找不到的问题

日志里的android.databinding.DataBindingUtil: can't find referenced class android.databinding.DataBindingComponent,说明DataBinding的混淆规则不完整,只加-dontwarn不足以保留DataBinding生成的绑定类和核心组件。

修复步骤:
替换原来的DataBinding规则为完整的保留规则:

# DataBinding 核心类保留
-keep class android.databinding.** { *; }
-keep class * extends android.databinding.DataBindingComponent { *; }

# 保留DataBinding相关注解和方法
-keepclasseswithmembers class * {
    @android.databinding.BindingMethods <methods>;
}
-keepclasseswithmembers class * {
    @android.databinding.InverseBindingMethods <methods>;
}
-keepclasseswithmembers class * {
    @android.databinding.InverseBindingAdapter <methods>;
}

# 保留自动生成的Binding类
-keep class **.*Binding { *; }

3. Apache HttpComponents 类找不到的问题

日志里的org.apache.http.entity.mime.content.StringBody: can't find referenced class org.apache.http.util.Args和org.apache.http.entity.ContentType,是因为Android 6.0之后系统默认移除了Apache HttpClient库,同时你的ProGuard规则也没保留相关类。

修复步骤:

  • 首先在app/build.gradle的android块里添加对Apache HttpClient的引用:
    android {
        // 其他配置...
        useLibrary 'org.apache.http.legacy'
    }
    
  • 然后更新ProGuard规则,保留Apache相关类:
    # Apache HttpComponents 保留规则
    -keep class org.apache.http.** { *; }
    -keep interface org.apache.http.** { *; }
    

最后要做的检查

  1. 执行Build -> Clean Project清理项目,然后再重新生成签名APK
  2. 如果还是有崩溃,可以尝试在ProGuard规则里添加以下内容,保留类的注解和签名信息,避免混淆破坏类结构:
    -keepattributes *Annotation*
    -keepattributes Signature
    

内容的提问来源于stack exchange,提问作者The Bat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:38:19