2016-09-15 137 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

相關問題