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

Firebase Test Lab签名App Bundle崩溃:ItemModel序列化异常排查

问题分析

崩溃的核心原因是Release包的ProGuard/R8混淆把ItemModel类的序列化相关属性、方法给优化删除了——Debug模式没开混淆所以运行正常,签名打包后混淆生效,导致序列化库(比如Firebase Realtime Database、Gson这类)找不到可序列化的字段,进而抛出异常。

解决方案

直接从ProGuard规则和代码注解两个方向入手:

方法1:修改ProGuard规则

在proguard-rules.pro文件中添加以下规则,强制保留ItemModel类的所有内容不被混淆:

-keep class com.example.poultryscope.ItemModel {
    *;
}

如果项目里还有其他同类型的实体类,也可以批量保留整个包下的类:

-keep class com.example.poultryscope.models.** {
    *;
}

(把models换成你实体类实际所在的包名)

方法2:用注解标记类(更精准)

在ItemModel类上添加@Keep注解(AndroidX自带注解,需确保依赖androidx.annotation:annotation),ProGuard会自动跳过这个类的混淆:

import androidx.annotation.Keep;

@Keep
public class ItemModel {
    // 你的类原有内容
}

如果用的是Firebase相关序列化,也可以用Firebase的@IgnoreExtraProperties或@PropertyName注解,这类注解本身会被ProGuard识别,避免类被过度优化。

验证步骤

  1. 保存修改后的ProGuard规则或代码
  2. 重新生成签名Android App Bundle
  3. 先本地安装Release包测试功能是否正常
  4. 再上传到Firebase Test Lab验证崩溃是否解决
额外注意点
  • 若使用Gson这类序列化库,需确保ProGuard保留Gson的注解和核心类,可补充规则:
-keepattributes *Annotation*
-keep class com.google.gson.** { *; }
-keep class com.google.gson.annotations.** { *; }
  • 检查build.gradle的Release构建配置,minifyEnabled true是开启混淆的开关,确认该配置保留(毕竟Release包需要混淆),我们仅针对特定类做保留即可。

内容的提问来源于stack exchange,提问作者mahmoud elmahgoub

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:25:25