发布APK似乎打破了Firebase功能

时间:2017-07-08 21:36:40

标签: android firebase proguard

我已经在基于Firebase的社交应用程序上工作了一段时间。当我注意到每个人(除了我)一直遇到莫名其妙的崩溃时,应用程序正常。我认为这是因为应用程序是围绕开源代码构建的,所以我从头开始重新开始。同样,应用程序也很顺利,但是一发布它,就会发生类似的莫名其妙的崩溃事件。此时我意识到崩溃只发生在发布APK中。据我所知,所有这些崩溃都与Firebase有关。其中大多数是NullPointerExceptions,其中一些数据在发布APK中为空,但在测试版本中没有Null,具有完全相同的用例。

我设法通过正确实施multidex来解决这些神秘崩溃中的一个(我之前没有正确实现这个,我认为这导致了其中一个问题)。问题仍然存在。我完全转向了ProGuard,因为我怀疑这可能是其中一个问题。 ProGuard之前已被禁用,但现在我添加了这些行,只是为了确保:

-dontoptimize
-dontshrink
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose

仍在崩溃。

这已成为一个问题。什么可能解决这个问题?

这是我的Build.gradle。

apply plugin: 'com.android.application'
android {
    compileSdkVersion 25
    buildToolsVersion "25.0.0"
    defaultConfig {
        applicationId "app.id"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 16
        versionName "0.0.16"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        renderscriptTargetApi 24
        renderscriptSupportModeEnabled true
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    dataBinding {
        enabled = true
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.android.support:recyclerview-v7:25.3.1'
    compile 'com.android.support:design:25.3.1'
    compile 'com.android.support:support-v4:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.google.android.gms:play-services:11.0.1'

    compile 'com.google.firebase:firebase-messaging:11.0.1'
    compile 'com.google.firebase:firebase-auth:11.0.1'
    compile 'com.google.firebase:firebase-database:11.0.1'
    compile 'com.google.firebase:firebase-storage:11.0.1'
    compile 'com.firebaseui:firebase-ui-auth:2.0.1'
    [loads more dependencies]
    testCompile 'junit:junit:4.12'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0'
}

apply plugin: 'com.jakewharton.butterknife'
apply plugin: 'com.google.gms.google-services'

1 个答案:

答案 0 :(得分:0)

一个新项目的问题已经消失。这是我为避免这种情况所做的事情。

  • 切换到Android Studio 3.0(Canary 7),包括新的构建工具
  • 切换到Kotlin作为我的主要项目语言
  • 确保我的项目的build.gradle没有给出关于不同版本的错误通知(使用项目文件视图)。 Firebase UI导致​​其中一个错误。
  • 完全避免使用MultiDex

其中任何一个都可能解决了这个问题。我不确定我可以避免多长时间使用multidex,但如果我发现MultiDex是问题和/或找到替代解决方案,我会更新这个答案。