2016-09-15 141 views
1

我有一个使用大量库的应用程序。该应用程序适用于MultiDex。但是,当我尝试集成Firebase SDK时,该应用程序需要很长时间才能加载Android设备的第一个应用程序启动文件< Android Lollipop。使用com.google.gms.google服务首次启动应用程序时,Android应用程序需要更多时间启动

在运行4.4.4的Nexus 5上,我遇到了一个持续大约一分钟的黑屏,然后应用程序恢复正常。它似乎是MultiDex过程。经过一番实验后,一次一步重新整合Firebase,问题首先发生在我apply plugin: 'com.google.gms.google-services'

有关为什么这个插件增加了很多膨胀的想法?请不要评论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

我认为你的问题主要是由于多重dexed应用程序。你为什么使用'com.google.android.gms:play-services:9.4.0'播放服务的通用版本?你可以添加更多特定的库,如'com.google.android.gms:play-services-gcm:9.4.0'? –

+0

不幸的是,即使我删除Google Play服务,我们的应用程序仍然需要MultiDex。 – lgdroid57

回答

0

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 Services库。这可能会消除对Multidex的需求,并可以改善您的应用程序的启动时间。

+0

不幸的是,即使我删除了Google Play服务,我们的应用程序仍然需要MultiDex。 – lgdroid57

相关问题