Search code examples
androidamazon-dynamodbproguard

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


I have used AWS services and used dynemo db in my application.

I am using following 3 Services of 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'

Everything works fine and project successfully builds too.

Now I have enabled proguard in my project and added following rules in proguard.pro file.

-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.**

But I am getting following error when i try to request for query using DynamoDBQueryExpression Error : "java.lang.IllegalArgumentException: Illegal query expression: No hash key condition is found in the query".

Could you please help me with this issue?


Solution

  • After many efforts i found the solution for it. There was some issue of conflict, i have added following rules for Realm in proguard-rules.pro file

    # 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.** {
      *;
    }