首页 > 解决方案 > Proguard 问题:“java.lang.IllegalArgumentException:非法查询表达式:在查询中找不到哈希键条件”

问题描述

我在我的应用程序中使用了 AWS 服务并使用了 dynemo db。

我正在使用 AWS 的以下 3 项服务。

implementation 'com.amazonaws:aws-android-sdk-core:2.6.15'
implementation 'com.amazonaws:aws-android-sdk-s3:2.6.15'
implementation 'com.amazonaws:aws-android-sdk-ddb-mapper:2.6.15'

一切正常,项目也成功构建。

现在我在我的项目中启用了 proguard,并在 proguard.pro 文件中添加了以下规则。

-keepnames class com.amazonaws.**
-keepnames class com.amazon.**
-keep class com.amazonaws.services..Handler
-dontwarn com.fasterxml.jackson.
-dontwarn org.apache.commons.logging.*
-dontwarn org.apache.http.**
-dontwarn com.amazonaws.http.**
-dontwarn com.amazonaws.metrics.**

但是当我尝试使用 DynamoDBQueryExpression Error 请求查询时出现以下错误: "java.lang.IllegalArgumentException: Illegal query expression: No hash key condition is found in the query".

你能帮我解决这个问题吗?

标签: androidamazon-dynamodbproguard

解决方案


经过多次努力,我找到了解决方案。存在一些冲突问题,我在proguard-rules.pro文件中添加了以下Realm规则

# Realm
-dontnote io.realm.internal.SyncObjectServerFacade
-keep class io.realm.annotations.RealmModule
-keep @io.realm.annotations.RealmModule class *
-keep class io.realm.internal.Keep
-keep @io.realm.internal.Keep class * { *; }
-keep class io.realm.internal.KeepMember
-keep @io.realm.internal.KeepMember class * { @io.realm.internal.KeepMember 
*; }
-dontwarn javax.**
-dontwarn io.realm.**
-keep class io.realm.RealmCollection
-keep class io.realm.OrderedRealmCollection
-keepclasseswithmembernames class io.realm.** {
  *;
}

推荐阅读