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

Android应用debug版DynamoDB查询正常,上架Play商店后mapper查询失败

问题根因

Release构建开启的R8/ProGuard代码混淆是导致该问题的核心原因:

  • Debug版本默认不开启代码混淆,DynamoDBMapper可以通过反射正常读取实体类的注解、字段配置,所以查询正常
  • 上架Play的签名AAB默认走Release构建,没有配置对应混淆规则的情况下,混淆工具会删除DynamoDB相关注解、修改实体类字段名,导致DynamoDBMapper无法识别你定义的GSI哈希键,即使你代码中已经传入了哈希值,Mapper仍然判定查询没有哈希键条件,触发报错。

解决方案

1. 补充混淆规则

在你项目的proguard-rules.pro文件中添加如下规则:

# 保留DynamoDB所需的注解属性
-keepattributes *Annotation*, Signature, RuntimeVisibleAnnotations

# 保留AWS DynamoDB SDK相关类不被混淆
-keep class com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.** { *; }
-keep class com.amazonaws.services.dynamodbv2.** { *; }

# 保留你自己的DynamoDB实体类所有字段和方法不被混淆,替换为你实际的DbClass所在包路径
-keep class com.yourpackage.model.DbClass { *; }
# 如果有多个DynamoDB实体类,可以直接保留整个实体包
# -keep class com.yourpackage.model.** { *; }

2. 验证实体类注解配置

确认你的DbClass中Contact字段的注解配置正确,GSI哈希键需要使用专门的索引注解:

@DynamoDBIndexHashKey(globalSecondaryIndexName = "Contact-index", attributeName = "Contact")
public String getContact() {
    return contact;
}

3. 本地验证

修改完成后本地构建签名Release包安装测试,确认查询逻辑正常后再上传至Play商店即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:15:03