web-dev-qa-db-ja.com

Android-FirebaseApp / Firebase-Initializationが開始されていません

Firebase-MessagingプラグインをAndroid-Appに実装します。 githubの「quickstart-Android-master/messaging」の例から始めました: https://github.com/firebase/quickstart-Android/tree/master/messaging

これは私のために働く!ログ出力:

D/FirebaseApp﹕ com.google.firebase.auth.FirebaseAuth is not linked. Skipping initialization.
D/FirebaseApp﹕ Initialized class com.google.firebase.iid.FirebaseInstanceId.
D/FirebaseApp﹕ com.google.firebase.crash.FirebaseCrash is not linked. Skipping initialization
D/FirebaseApp﹕ Initialized class com.google.Android.gms.measurement.AppMeasurement.
I/FirebaseInitProvider﹕ FirebaseApp initialization successful

しかし、プラグイン「com.google.firebase:firebase-messaging:9.0.2」をアプリに実装する場合、FirebaseAppは初期化されません!そのため、FirebaseAppプラグインは起動していません! -ログまたはトークンを受信して​​いません!

「app」ディレクトリのbuild.gradleファイルに適用プラグインも追加しました。

    apply plugin: 'com.Android.application'

Android {
  // ...
}

dependencies {
  // ...
  compile 'com.google.firebase:firebase-messaging:9.0.2'
}

// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'

そして、「ルート」ディレクトリにあるbuild.gradleへのgoogle-servicesプラグイン:

buildscript {
    // ...
    dependencies {
        // ...
        classpath 'com.google.gms:google-services:3.0.0'
    }
}

問題は次のとおりです。

  • AndroidAnnotations、Proguard、製品フレーバー...
13

私の問題は「マニフェスト合併」でした。私が使用する場合

xmlns:tools="http://schemas.Android.com/tools"

そして

tools:node="replace"

マニフェストのアプリケーションタグでは、FirebaseAppは初期化されません!

replaceattr ontools:nodeを使用すると、下位を置き換えます注釈付きの優先度宣言(詳細は こちら を参照)。代わりにmergeまたはmerge only属性を使用する必要があります。

だから私が正確にやったこと:

これは機能しません:

<application
            Android:name="xxx"
            Android:icon="@mipmap/ic_launcher"
            Android:label="@string/application_name"
            Android:theme="@style/Theme.TemplateStyle"
            tools:node="replace">

これは動作します:

<application
            Android:name="xxx"
            Android:icon="@mipmap/ic_launcher"
            Android:label="@string/application_name"
            Android:theme="@style/Theme.TemplateStyle">
            <!-- tools:node="replace"-->

一部の属性を上書きまたは置換する場合は、代わりにtools:replaceを使用してください!

18

これで問題は解決しました。

  • 実装 'com.google.firebase:firebase-crash:16.2.1'

  • 実装 'com.google.firebase:firebase-auth:16.1.0'

0
Ashot

私の場合、これらの権限はAndroid Manifest file:

<permission
        Android:name="com.app.appname.permission.C2D_MESSAGE"
        Android:protectionLevel="signature" />

   <uses-permission Android:name="com.app.appname.permission.C2D_MESSAGE" />
    <uses-permission Android:name="com.google.Android.c2dm.permission.RECEIVE" />
0
Srihari Karanth