Proguard问题:“ java.lang.IllegalArgumentException:查询表达式非法:在查询中找不到哈希键条件”

时间:2018-10-01 12:15:05

标签: android amazon-dynamodb proguard

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

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

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

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

2 个答案:

答案 0 :(得分:2)

经过多方努力,我找到了解决方案。发生了一些冲突,我在 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.** {
  *;
}

答案 1 :(得分:0)

只需在ProGuard文件上也添加此行

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

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