致命异常:使用Firebase的java.lang.NoSuchFieldError

时间:2016-02-27 03:48:18

标签: android firebase proguard

我正在尝试发布我的

应用程序
  1. 火力地堡
  2. Facebook整合
  3. Twitter集成(推特作曲家)
  4. Google plus integration
  5. paypal集成
  6. 滑翔
  7. Crashlytics
  8. Google地图和
  9. Joda-time,yalantis / phoenix- pull to refresh library
  10. 当我转向minifyEnabled true时,应用程序最终崩溃。它甚至没有开始。 我有以下proguard文件

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

    我从crashlytics信息中心收到以下错误

    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)
    

    at com._._._.BaseClasses.LoginActivity.onCreate(LoginActivity.java:102)行引用ref = new Firebase(Constant.FIREBASE_URL);

    请让我知道我在哪里弄错了。 TIA

1 个答案:

答案 0 :(得分:1)

看起来您还需要在proguard设置中为firebase设置getter和setter规则。

看一看 Android app crashes when Proguard is enabled