2016-09-15 11 views
1

多くのライブラリを使用するアプリケーションがあります。アプリケーションはMultiDexで正常に動作します。しかし、Firebase SDKを統合しようとすると、Androidデバイスの最初のアプリ起動時にアプリケーションをロードするのに時間がかかります< Android Lollipop。最初のアプリの起動時にAndroidアプリケーションの起動にcom.google.gms.google-servicesで起動するまでに時間がかかります

4.4.4のNexus 5では、アプリケーションが正常に再開するまで約1分間続く黒い画面が表示されます。これはMultiDexプロセスのようです。いくつかの実験の後、一度に1ステップずつ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サービスを削除しても、Googleのアプリケーションには引き続きMultiDexが必要です。 – lgdroid57

答えて

0

Set Up Guide Googleがサービスを再生するためには、修正する必要があります。ビルドの依存関係にcompile 'com.google.android.gms:play-services:9.4.0'を指定するのは良い方法ではありません。アプリにGoogle PlayとFirebaseライブラリのすべてが追加されます。これにより、ビルド時間が長くなり、APKファイルのサイズが大きくなり、Mulitdexを強制的に使用して64Kメソッドの参照制限を超えることが頻繁に発生します。

compile 'com.google.android.gms:play-services:9.4.0'を削除し、必要なPlay Servicesライブラリのみに置き換えます。これはMultidexの必要性をなくし、アプリケーションの起動時間を改善するはずです。

+0

残念ながらGoogle Playサービスを削除しても、Googleのアプリケーションには引き続きMultiDexが必要です。 – lgdroid57

関連する問題