Amplify-android: What is the pro-guard rules for AWS S3 ?

Created on 28 Oct 2020  路  2Comments  路  Source: aws-amplify/amplify-android

I have using below library in my application to upload data to Amazon S3.

implementation 'com.amplifyframework:aws-storage-s3:1.4.2'
implementation 'com.amplifyframework:aws-auth-cognito:1.4.2'

It's working fine in debug mode. Now I have generated a signed APK using below the Proguard configuration, with minifyEnabled true.

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

Now my app keeps on crashing when I upload upload videos to S3.

Error log:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.aws, PID: 9367
    java.lang.AssertionError: java.lang.NoSuchFieldException: ANY
        at g.c.c.w.n.n$j0.<init>()
        at g.c.c.w.n.n$w.b()
        at g.c.c.e.l()
        at g.c.c.w.n.i.a()
        at g.c.c.w.n.i.e()
        at g.c.c.w.n.i.b()
        at g.c.c.e.l()
        at g.c.c.e.w()
        at g.c.c.e.x()
        at g.c.c.e.t()
        at g.c.c.e.s()
        at com.amazonaws.mobileconnectors.s3.transferutility.TransferDBUtil.f()
        at com.amazonaws.mobileconnectors.s3.transferutility.TransferDBUtil.k()
        at com.amazonaws.mobileconnectors.s3.transferutility.TransferUtility.l()
        at com.amazonaws.mobileconnectors.s3.transferutility.TransferUtility.k()
        at com.amazonaws.mobileconnectors.s3.transferutility.TransferUtility.j()
        at com.amplifyframework.storage.s3.g.a.b()
        at com.amplifyframework.storage.s3.e.e.e()
        at com.amplifyframework.storage.s3.c.k()
        at g.a.i.b.k()
        at com.example.aws.Activity.VideoUploadActivity.Y0()
        at com.example.aws.Activity.VideoUploadActivity.onOptionsItemSelected()
        at android.app.Activity.onMenuItemSelected(Activity.java:3390)
        at androidx.fragment.app.d.onMenuItemSelected()
        at androidx.appcompat.app.e.onMenuItemSelected()
        at androidx.appcompat.d.i.onMenuItemSelected()
        at androidx.appcompat.d.i.onMenuItemSelected()
        at androidx.appcompat.app.l$b.onMenuItemClick()
        at androidx.appcompat.widget.Toolbar$a.onMenuItemClick()
        at androidx.appcompat.widget.ActionMenuView$d.a()
        at androidx.appcompat.view.menu.g.h()
        at androidx.appcompat.view.menu.i.k()
        at androidx.appcompat.view.menu.g.O()
        at androidx.appcompat.view.menu.g.N()
        at androidx.appcompat.widget.ActionMenuView.a()
        at androidx.appcompat.view.menu.ActionMenuItemView.onClick()
        at android.view.View.performClick(View.java:6312)
        at android.widget.TextView.performClick(TextView.java:11202)
        at android.view.View$PerformClick.run(View.java:23985)
        at android.os.Handler.handleCallback(Handler.java:751)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6816)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1563)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1451)
     Caused by: java.lang.NoSuchFieldException: ANY
        at java.lang.Class.getField(Class.java:1549)
        at g.c.c.w.n.n$j0.<init>()聽
        at g.c.c.w.n.n$w.b()聽
        at g.c.c.e.l()聽
        at g.c.c.w.n.i.a()聽
        at g.c.c.w.n.i.e()聽
        at g.c.c.w.n.i.b()聽
        at g.c.c.e.l()聽
        at g.c.c.e.w()聽
        at g.c.c.e.x()聽
        at g.c.c.e.t()聽
        at g.c.c.e.s()聽
        at com.amazonaws.mobileconnectors.s3.transferutility.TransferDBUtil.f()聽
        at com.amazonaws.mobileconnectors.s3.transferutility.TransferDBUtil.k()聽
        at com.amazonaws.mobileconnectors.s3.transferutility.TransferUtility.l()聽
        at com.amazonaws.mobileconnectors.s3.transferutility.TransferUtility.k()聽
        at com.amazonaws.mobileconnectors.s3.transferutility.TransferUtility.j()聽
        at com.amplifyframework.storage.s3.g.a.b()聽
        at com.amplifyframework.storage.s3.e.e.e()聽
        at com.amplifyframework.storage.s3.c.k()聽
        at g.a.i.b.k()聽
        at com.example.aws.Activity.VideoUploadActivity.Y0()聽
        at com.example.aws.Activity.VideoUploadActivity.onOptionsItemSelected()聽
        at android.app.Activity.onMenuItemSelected(Activity.java:3390)聽
        at androidx.fragment.app.d.onMenuItemSelected()聽
        at androidx.appcompat.app.e.onMenuItemSelected()聽
        at androidx.appcompat.d.i.onMenuItemSelected()聽
        at androidx.appcompat.d.i.onMenuItemSelected()聽
        at androidx.appcompat.app.l$b.onMenuItemClick()聽
        at androidx.appcompat.widget.Toolbar$a.onMenuItemClick()聽
        at androidx.appcompat.widget.ActionMenuView$d.a()聽
        at androidx.appcompat.view.menu.g.h()聽
        at androidx.appcompat.view.menu.i.k()聽
        at androidx.appcompat.view.menu.g.O()聽
        at androidx.appcompat.view.menu.g.N()聽
        at androidx.appcompat.widget.ActionMenuView.a()聽
        at androidx.appcompat.view.menu.ActionMenuItemView.onClick()聽
        at android.view.View.performClick(View.java:6312)聽
        at android.widget.TextView.performClick(TextView.java:11202)聽
        at android.view.View$PerformClick.run(View.java:23985)聽
        at android.os.Handler.handleCallback(Handler.java:751)聽
        at android.os.Handler.dispatchMessage(Handler.java:95)聽
        at android.os.Looper.loop(Looper.java:154)聽
        at android.app.ActivityThread.main(ActivityThread.java:6816)聽
        at java.lang.reflect.Method.invoke(Native Method)聽
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1563)聽
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1451)

Please let me know of any solutions. Please don't advise to set minifyEnabled false.

Auth Storage Usage Question

Most helpful comment

@raphkim thanks a lot for reply. Your solution work like charm.

All 2 comments

Hi @24Lathiya ,

Please try adding -keepclassmembers enum * { *; } to your proguard rule to avoid this error.

@raphkim thanks a lot for reply. Your solution work like charm.

Was this page helpful?
0 / 5 - 0 ratings