3

現在、インスタントアプリのバージョンを作成するために、終了しているAndroidアプリケーションを開発中です。AndroidインスタントアプリでFirebaseAppの初期化に失敗しました

Androidのメーカーは現在、いくつかのモジュールに分割されるマイ:

  • (ライブラリ)で、ビジネス・オブジェクト・モジュール
  • ベース-feature-モジュール
  • moduleA -feature-モジュール
  • アプリモジュール(電話機/タブレットモジュール)
  • インスタントモジュール(インスタントアプリモジュール)

私のインスタントアプリケーションモジュールは、Firebaseの問題によりクラッシュするたびに、電話機/タブレットでコンパイルして起動できます。私はlogcatに次のメッセージがあります

I/FirebaseInitProvider: FirebaseApp initialization unsuccessful

documentationによるとFirebaseライブラリは、インスタントのアプリと互換性がありますが、私は右の場所にGoogleの-services.jsonファイルを移動しないことをかなり確信しています私のプロジェクトで...

私がやっていることここで

:クラスパス「com.google.gms:グーグル

  1. を私は、Android Studioプロジェクトのbuild.gradleファイルに次のクラスパスの依存関係を定義しました - サービス:3.1.1 '

  2. (文書がそれを要求するので)私はプラグイン(プラグインを適用する適用しようとした場合、私は、今私のモジュールベースに

をグーグル-services.jsonファイルを置く:「com.googleを.gms.google-services ')をベースモジュールのbuild.gradleファイルに追加すると、コンパイルできません。 documentationに係る基地ライブラリが同じパッケージ名を持つことができないので

Error:Execution failed for task ':base:processGooglePlayProductionDebugFeatureGoogleServices'.

> No matching client found for package name 'com.mycompany.myapp.base'

実際には、Googleの-services.jsonファイルに定義されたパッケージ名が(アプリずつ使用である:私は次のメッセージを持っています

また、インストールされたアプリケーションのbuild.gradleファイルと、google-services.jsonファイルをベースモジュールに残したインスタントアプリモジュールにプラグインを適用しようとしました。私はログを持っています: "FirebaseAppの初期化に失敗しました"。

私はe google-services.jsonファイルを私のインスタントアプリケーションモジュールに追加しましたが、まだログがあります: "FirebaseAppの初期化に失敗しました"

FirebaseAppクラスから静的メソッドinitializeAppを呼び出す初期化を強制しようとしましたが、

ウェブ上で実装の例が見つかりません。実際には、Google Sample repositoryはgoogle-services.jsonファイルを使用していません。

ありがとうございました!

編集:ここでは私のモジュールの依存関係:私のベース-feature-モジュールの

依存関係:

implementation project(':businessobject') 
    feature project(':moduleA') 
    application project(':app') 

私moduleA -feature-モジュールの依存関係:

api project(':base') 
api project(':businessobject') 

私のアプリケーションモジュール(電話機/タブレットモジュール)の依存関係:

implementation (project(':base')) 
implementation (project(':businessobject')) 
implementation (project(':moduleA')) 

(インスタントアプリケーションモジュールである)私のインスタントモジュールの依存関係:

implementation project(':base') 
implementation project(':businessobject') 
implementation project(':moduleA') 
+0

doc(https://developer.android.com/topic/instant-apps/guides/analytics.html#adding_google_analytics_to_an_instant_app_project)では、google-services.jsonファイルを基本機能/モジュールに配置する必要があります。プロジェクトビューに切り替えますgoogle-services.jsonファイルをベースモジュールのルートディレクトリに移動します。このSOの投稿は、Androidアプリケーション用のFirebaseの設定方法を示しています。https://stackoverflow.com/a/40800682/8320998 –

+0

このサンプルアプリケーションでは、Googleアナリティクスfor Firebaseをインスタントアプリに統合する方法を示しています。https://github.com/googlesamples/android-instant-apps/tree/master/analytics このサンプルアプリケーションを複製した後、プロジェクトをFirebaseコンソールに追加し、このプロジェクト用に生成されたgoogle-services.jsonファイルをダウンロードしてベース/モジュールに配置する必要があります。 –

答えて

1

because according to the documentation the base library cannot have the same package name as the installed android app.

私はドキュメントは少し古くなっていると思います。各 "フィーチャー"モジュールは、Rクラスの名前を生成するために使用されているので、別のパッケージ名を使用する必要があります。あなたが "ベース"機能にアプリケーション自体と同じパッケージ名を使用させることができない理由はありません。

それは「google-services」プラグインのように思えるがあることを、後に上書きされますAndroidManifest.xmlで指定した名前ではなく、アプリケーションIDを使用するには、「機能」プラグインのために更新する必要がありますアプリケーションIDと同じ)。

TL; DRは--- "com.mycompany.myappとは" 物事が作業を取得する必要がありますし、 "ベース" のパッケージ名を変更します。

関連する問題