我有一个使用大量库的应用程序。该应用程序适用于MultiDex。但是,当我尝试集成Firebase SDK时,该应用程序需要花费很长时间来加载Android设备的首次应用程序启动< Android Lollipop。
在运行4.4.4的Nexus 5上,我遇到黑屏,持续大约一分钟,然后应用程序恢复正常。它似乎是MultiDex过程。经过一些实验,一次重新整合Firebase,问题首先出现在我apply plugin: 'com.google.gms.google-services'
。
有关为什么这个插件增加了这么多臃肿的想法?请不要对Instant Run发表评论。我已经看到其他堆栈溢出文章提示,但是没有启用Instant Run,无论我是首次从我的计算机,调试apk还是发布apk启动,都会发生这种情况。
提前致谢。
的build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion '23.0.3'
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
defaultConfig {
applicationId "com.example.app"
minSdkVersion 15
multiDexEnabled true
targetSdkVersion 21
versionCode 1
versionName "1"
}
dexOptions {
incremental = true
javaMaxHeapSize = "4g"
}
lintOptions {
abortOnError false
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// Firebase - https://firebase.google.com/docs/android/setup
compile 'com.google.firebase:firebase-ads:9.4.0'
compile 'com.google.firebase:firebase-auth:9.4.0'
compile 'com.google.firebase:firebase-config:9.4.0'
compile 'com.google.firebase:firebase-core:9.4.0'
compile 'com.google.firebase:firebase-crash:9.4.0'
compile 'com.google.firebase:firebase-database:9.4.0'
compile 'com.google.firebase:firebase-invites:9.4.0'
compile 'com.google.firebase:firebase-messaging:9.4.0'
compile 'com.google.firebase:firebase-storage:9.4.0'
// Google Play Services - https://developer.android.com/google/play-services/setup.html
compile 'com.google.android.gms:play-services:9.4.0'
// SDKs
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:multidex:1.0.1'
compile 'com.android.support:recyclerview-v7:23.4.0'
compile 'com.android.support:support-v13:23.4.0'
}
apply plugin: 'com.google.gms.google-services'
答案 0 :(得分:0)
需要更正Google Play服务的Set Up Guide。在构建依赖项中指定compile 'com.google.android.gms:play-services:9.4.0'
不是一种好习惯。它会将所有 Google Play和Firebase库添加到您的应用中。这会增加构建时间,增加APK文件的大小,并经常通过64K方法参考限制,强制使用Mulitdex。
删除compile 'com.google.android.gms:play-services:9.4.0'
并将其替换为您需要的Play服务库。这可能会消除对Multidex的需求,并且应该可以改善应用程序的启动时间。