我已经在基于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'
答案 0 :(得分:0)
一个新项目的问题已经消失。这是我为避免这种情况所做的事情。
其中任何一个都可能解决了这个问题。我不确定我可以避免多长时间使用multidex,但如果我发现MultiDex是问题和/或找到替代解决方案,我会更新这个答案。