Proguard 问题:"java.lang.IllegalArgumentException: Illegal query expression: No hash key condition is found in the query"

Proguard Issue : "java.lang.IllegalArgumentException: Illegal query expression: No hash key condition is found in the query"

我在我的应用程序中使用了 AWS 服务和 dynemo 数据库。

我正在使用 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.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 请求查询时出现以下错误 错误: "java.lang.IllegalArgumentException: Illegal query expression: No hash key condition is found in the query".

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

把这一行也放在 ProGuard 文件中

-keep public class com.amazonaws.** { *;}

它不会缩小 com.amazonaws 的整个 类 包,如果它是 Pro-guard 的真正问题,那么您的问题将得到解决。

经过多次努力,我找到了解决办法。存在一些冲突问题,我在 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.** {
  *;
}