0

I am trying to release my application which has

  1. Firebase
  2. Facebook integration
  3. Twitter Integration (tweet composer)
  4. Google plus integration
  5. paypal integration
  6. Glide
  7. Crashlytics
  8. Google map and
  9. Joda-time,yalantis/phoenix- pull to refresh library

When I turn minifyEnabled true, the app end up crashing. It won't even start. I have the following proguardfile

# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /Users/Avi/Documents/android-sdk-macosx 2/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$**     {
  **[] $VALUES;
  public *;
  }
 -keepattributes SourceFile,LineNumberTable,*Annotation*
 # Basic ProGuard rules for Firebase Android SDK 2.0.0+
 -keep class com.firebase.** { *; }
 -keep class org.apache.** { *; }
 # -keepnames class com.fasterxml.jackson.** { *; }
 -keepnames class javax.servlet.** { *; }
 -keepnames class org.ietf.jgss.** { *; }
 # -dontwarn org.apache.**
 -dontwarn org.w3c.dom.**
 # avoid on Chat.class
 -keep class com.packagename.Chat { *; }
 -keep class com.facebook.** {
    *;
 }
 -dontwarn com.paypal.android.**
 -keep class org.joda.** { *; }
 # -dontwarn javax.naming.**
 #-dontwarn java.lang.invoke**
 -dontwarn org.joda.time.**
 -dontwarn com.google.android.gms.**

 -dontwarn com.shaded.fasterxml.**
 -dontwarn org.apache.**
 -dontwarn org.shaded.apache.**
 -keepnames class com.shaded.fasterxml.jackson.** { *; }
 -keepnames class org.shaded.apache.**

I get the following error from the crashlytics dashboard

Fatal Exception: java.lang.NoSuchFieldError
   at libcore.reflect.AnnotationAccess.decodeValue(AnnotationAccess.java:688)
   at libcore.reflect.AnnotationAccess.toAnnotationInstance(AnnotationAccess.java:663)
   at libcore.reflect.AnnotationAccess.toAnnotationInstance(AnnotationAccess.java:641)
   at libcore.reflect.AnnotationAccess.getDeclaredAnnotation(AnnotationAccess.java:170)
   at libcore.reflect.AnnotationAccess.getAnnotation(AnnotationAccess.java:72)
   at java.lang.Class.getAnnotation(Class.java:343)
   at com.shaded.fasterxml.jackson.databind.introspect.VisibilityChecker$Std.(VisibilityChecker.java)
   at com.shaded.fasterxml.jackson.databind.introspect.VisibilityChecker$Std.defaultInstance(VisibilityChecker.java:180)
   at com.shaded.fasterxml.jackson.databind.ObjectMapper.(ObjectMapper.java)
   at com.firebase.client.core.view.QueryParams.(QueryParams.java)
   at com.firebase.client.Firebase.(Firebase.java)
   at com.firebase.client.Firebase.(Firebase.java)
   at com.firebase.client.Firebase.(Firebase.java)
   at com.silverfox.avi.codehack.BaseClasses.LoginActivity.onCreate(LoginActivity.java:102)
   at android.app.Activity.performCreate(Activity.java:5953)
   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1128)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2267)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2388)
   at android.app.ActivityThread.access$800(ActivityThread.java:148)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:135)
   at android.app.ActivityThread.main(ActivityThread.java:5312)
   at java.lang.reflect.Method.invoke(Method.java)
   at java.lang.reflect.Method.invoke(Method.java:372)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
Caused by java.lang.NoSuchFieldException: PUBLIC_ONLY
   at java.lang.Class.getDeclaredField(Class.java:886)
   at libcore.reflect.AnnotationAccess.decodeValue(AnnotationAccess.java:685)
   at libcore.reflect.AnnotationAccess.toAnnotationInstance(AnnotationAccess.java:663)
   at libcore.reflect.AnnotationAccess.toAnnotationInstance(AnnotationAccess.java:641)
   at libcore.reflect.AnnotationAccess.getDeclaredAnnotation(AnnotationAccess.java:170)
   at libcore.reflect.AnnotationAccess.getAnnotation(AnnotationAccess.java:72)
   at java.lang.Class.getAnnotation(Class.java:343)
   at com.shaded.fasterxml.jackson.databind.introspect.VisibilityChecker$Std.(VisibilityChecker.java)
   at com.shaded.fasterxml.jackson.databind.introspect.VisibilityChecker$Std.defaultInstance(VisibilityChecker.java:180)
   at com.shaded.fasterxml.jackson.databind.ObjectMapper.(ObjectMapper.java)
   at com.firebase.client.core.view.QueryParams.(QueryParams.java)
   at com.firebase.client.Firebase.(Firebase.java)
   at com.firebase.client.Firebase.(Firebase.java)
   at com.firebase.client.Firebase.(Firebase.java)
   at com.._._._.LoginActivity.onCreate(LoginActivity.java:102)
   at android.app.Activity.performCreate(Activity.java:5953)
   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1128)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2267)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2388)
   at android.app.ActivityThread.access$800(ActivityThread.java:148)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:135)
   at android.app.ActivityThread.main(ActivityThread.java:5312)
   at java.lang.reflect.Method.invoke(Method.java)
   at java.lang.reflect.Method.invoke(Method.java:372)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)

where the line with at com._._._.BaseClasses.LoginActivity.onCreate(LoginActivity.java:102) refers to ref = new Firebase(Constant.FIREBASE_URL);

Please let me know where I am making the mistake. TIA

silverFoxA
  • 4,549
  • 7
  • 33
  • 73
  • See http://stackoverflow.com/questions/26273929/what-proguard-configuration-do-i-need-for-firebase-on-android – Frank van Puffelen Feb 27 '16 at 06:28
  • I have tried the above but it will lead me to another error when I am trying to authenticate user `Fatal Exception: java.lang.RuntimeException: org.shaded.apache.commons.logging.LogConfigurationException: No suitable Log implementation at com.firebase.client.android.AndroidPlatform$2.run(AndroidPlatform.java:82)` – silverFoxA Feb 28 '16 at 18:30

1 Answers1

1

Looks like you also need to have rules for getters and setters for firebase in your proguard settings.

Have a look at Android app crashes when Proguard is enabled

Community
  • 1
  • 1
Amit Barjatya
  • 249
  • 3
  • 14