web-dev-qa-db-ja.com

ionic3でシンボルインポートcom.google.firebase.iid.FirebaseInstanceIdServiceエラーが見つかりません

アプリのビルドを作成しようとするたびにこのエラーが発生する理由がわかりません。多くの解決策を試してみましたが、これを解決できませんでした。プラグインが問題を引き起こしているかどうか、または私の問題があるかどうかわかりませんコードまたはfirebaseまたはfirebase接続。ノードモジュールを削除してnpm installを実行し、削除して再度追加しましたAndroidプラットフォームですが、それでもこのエラーが発生します。

import com.google.firebase.iid.FirebaseInstanceIdService;
                              ^
  symbol:   class FirebaseInstanceIdService
  location: package com.google.firebase.iid
C:\Users\user\Downloads\mosque\platforms\Android\app\src\main\Java\org\Apache\cordova\firebase\FirebasePluginInstanceIDService.Java:9: error: cannot find symbol
public class FirebasePluginInstanceIDService extends FirebaseInstanceIdService {
                                                     ^
  symbol: class FirebaseInstanceIdService
C:\Users\user\Downloads\mosque\platforms\Android\app\src\main\Java\org\Apache\cordova\firebase\FirebasePlugin.Java:508: error: method getByteArray in class FirebaseRemoteConfig cannot be applied to given types;
                            : FirebaseRemoteConfig.getInstance().getByteArray(key, namespace);
                                                                ^
  required: String
  found: String,String
  reason: actual and formal argument lists differ in length
C:\Users\user\Downloads\mosque\platforms\Android\app\src\main\Java\org\Apache\cordova\firebase\FirebasePlugin.Java:525: error: method getValue in class
FirebaseRemoteConfig cannot be applied to given types;
                            : FirebaseRemoteConfig.getInstance().getValue(key, namespace);
                                                                ^
  required: String
  found: String,String
  reason: actual and formal argument lists differ in length
C:\Users\user\Downloads\mosque\platforms\Android\app\src\main\Java\org\Apache\cordova\firebase\FirebasePlugin.Java:579: error: no suitable method found
for setDefaults(Map<String,Object>,String)
                        FirebaseRemoteConfig.getInstance().setDefaults(defaultsToMap(defaults), namespace);
                                                          ^
    method FirebaseRemoteConfig.setDefaults(Map<String,Object>) is not applicable
      (actual and formal argument lists differ in length)
    method FirebaseRemoteConfig.setDefaults(int) is not applicable
      (actual and formal argument lists differ in length)
C:\Users\user\Downloads\mosque\platforms\Android\app\src\main\Java\org\Apache\cordova\firebase\FirebasePluginInstanceIDService.Java:18: error: method does not override or implement a method from a supertype
    @Override
    ^
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: C:\Users\user\Downloads\mosque\platforms\Android\app\src\main\Java\io\card\cordova\sdk\CardIOCordovaPlugin.Java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
6 errors
:app:compileDebugJavaWithJavac FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileDebugJavaWithJavac'.
27 actionable tasks: 1 executed, 26 up-to-date
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 54s
cmd: Command failed with exit code 1 Error output:
C:\Users\user\Downloads\mosque\platforms\Android\app\src\main\Java\org\Apache\cordova\firebase\FirebasePluginInstanceIDService.Java:6: error: cannot find symbol
import com.google.firebase.iid.FirebaseInstanceIdService;
                              ^
  symbol:   class FirebaseInstanceIdService
  location: package com.google.firebase.iid
C:\Users\user\Downloads\mosque\platforms\Android\app\src\main\Java\org\Apache\cordova\firebase\FirebasePluginInstanceIDService.Java:9: error: cannot find symbol
public class FirebasePluginInstanceIDService extends FirebaseInstanceIdService {
                                                     ^
  symbol: class FirebaseInstanceIdService
C:\Users\user\Downloads\mosque\platforms\Android\app\src\main\Java\org\Apache\cordova\firebase\FirebasePlugin.Java:508: error: method getByteArray in class FirebaseRemoteConfig cannot be applied to given types;
                            : FirebaseRemoteConfig.getInstance().getByteArray(key, namespace);
                                                                ^
  required: String
  found: String,String
  reason: actual and formal argument lists differ in length
C:\Users\user\Downloads\mosque\platforms\Android\app\src\main\Java\org\Apache\cordova\firebase\FirebasePlugin.Java:525: error: method getValue in class
FirebaseRemoteConfig cannot be applied to given types;
                            : FirebaseRemoteConfig.getInstance().getValue(key, namespace);
                                                                ^
  required: String
  found: String,String
  reason: actual and formal argument lists differ in length
C:\Users\user\Downloads\mosque\platforms\Android\app\src\main\Java\org\Apache\cordova\firebase\FirebasePlugin.Java:579: error: no suitable method found
for setDefaults(Map<String,Object>,String)
                        FirebaseRemoteConfig.getInstance().setDefaults(defaultsToMap(defaults), namespace);
                                                          ^
    method FirebaseRemoteConfig.setDefaults(Map<String,Object>) is not applicable
      (actual and formal argument lists differ in length)
    method FirebaseRemoteConfig.setDefaults(int) is not applicable
      (actual and formal argument lists differ in length)
C:\Users\user\Downloads\mosque\platforms\Android\app\src\main\Java\org\Apache\cordova\firebase\FirebasePluginInstanceIDService.Java:18: error: method does not override or implement a method from a supertype
    @Override
    ^
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: C:\Users\user\Downloads\mosque\platforms\Android\app\src\main\Java\io\card\cordova\sdk\CardIOCordovaPlugin.Java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
6 errors

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 54s
[ERROR] An error occurred while running subprocess cordova.

        cordova build Android exited with exit code 1.
11
theCoder

はい、減価償却されています。修正は非常に簡単で、コードを移動するだけです...

FirebaseInstanceIdServiceサブクラスのonTokenRefresh()から

FirebaseMessagingServiceサブクラスのonNewToken()

減価償却に関する情報: https://firebase.google.com/support/release-notes/Android#update_-_april_02_2019

古いバージョンのfirebaseを使用して、この小さなコードを変更することをお勧めします。おそらく、AndroidX [ https://developer.Android.com/jetpack/androidx/migrate] に移行している間に移行することをお勧めします。

17

これは、4月5日にFirebaseが更新されたためです。ここで https://firebase.google.com/support/release-notes/Android#update_-_april_02_2019 96、最後に機能していたバージョンを見つけて調整しました俺の project.propertiesそれに応じて次のようにします。

cordova.system.library.4=com.google.firebase:firebase-core:16.0.8

cordova.system.library.5=com.google.firebase:firebase-messaging:17.5.0

cordova.system.library.6=com.google.firebase:firebase-config:16.4.1

cordova.system.library.7=com.google.firebase:firebase-perf:16.2.4

ここでは、すべての依存関係が+ではなく特定のバージョン(Update-April 02、2019)にロックされています。これにより、最新バージョンが取得され、ビルドが壊れます。処理する。

これで正常にビルドできます!それが役に立てば幸い!

project.propertiesplatforms/Android/project.propertiesにあります

12
Spicy Software

サーバーテストの後、私の解決策は、cordova-plugin-firebasexをcordova-plugin-firebasexに変更することでした。 https://github.com/dpa99c/cordova-plugin-firebase#migrating-from-cordova-plugin-firebase

rm -Rf platforms/Android
cordova plugin rm cordova-plugin-firebase
rm -Rf plugins/ node_modules/
npm install
cordova plugin add cordova-plugin-firebasex
cordova platform add Android

これがお役に立てば幸いです。

https://github.com/dpa99c/cordova-plugin-firebase#androidx

このプラグインは、Androidサポートライブラリの後継であるAndroidX(Jetpack)を使用するように移行されました。これは、CordovaプロジェクトのAndroidプラットフォームでAndroidXを有効にするcordova-plugin-androidxへの依存関係を追加することで実装されます。

これは、2019年6月17日のFirebaseおよびPlay ServicesライブラリのメジャーリリースがAndroidXに移行されたためです。

したがって、レガシーAndroidサポートライブラリに依存するプラグインがプロジェクトに含まれている場合は、cordova-plugin-androidx-adapterをプロジェクトに追加する必要があります。このプラグインは、プラグインコードをAndroidサポートライブラリから同等のAndroidXに動的に移行します。

7
Juan Ignacio

この問題はAndroidXをサポートする主要なFirebaseリリースが原因で発生します

ソリューション:

  1. 削除Androidプラットフォーム(私はこのステップに従いましたが、私が知らない可能性がある回避策があるはずです)-cordova platform rm Android

  2. 古いFirebaseプラグインを削除-cordova plugin rm cordova-plugin-firebase

  3. 新しいFirebaseプラグインを追加-cordova plugin add cordova-plugin-firebasex

  4. もう一度プラットフォームを追加-cordova platform add Android

これでビルドは成功します。

3
PRASAD PATIL

OK。これはgradleエラーです。これは4月のFirebaseの更新によるもので、FirebaseInstanceIdServiceはサポートが終了しており、多くの人々がこの問題に直面しています。

FirebaseInstanceIdServiceのリファレンスドキュメントを確認してください

このクラスは廃止されました。

FirebaseMessagingServiceのonNewTokenのオーバーライドを支持します。それが実装されたら、このサービスは安全に削除できます。

1
olajide

この問題がReact Nativeフレームワークで発生した場合.2つの解決策があります:

ソリューション1(推奨)

以下のファイルでFirebaseバージョンを変更します:Android\app\build.gradle

...
//implementation 'com.google.firebase:firebase-core'
//implementation 'com.google.firebase:firebase-messaging'
implementation 'com.google.firebase:firebase-core:16.0.8'
implementation 'com.google.firebase:firebase-messaging:17.6.0'
...

そしてAndroid\gradle.propertiesファイルの最後に追加

firebaseCoreVersion=16.0.8
firebaseMessagingVersion=17.6.0

ソリューション2:

変化する \node_modules\react-native-fcm\Android\src\main\Java\com\evollu\react\fcm\InstanceIdService.Javaファイルを以下に記入してください。

package com.evollu.react.fcm;

import Android.content.Intent;
import Android.os.Bundle;
import Android.os.Handler;
import Android.os.Looper;
import Android.support.v4.content.LocalBroadcastManager;
import Android.util.Log;

import com.facebook.react.ReactApplication;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.bridge.ReactContext;
import com.google.firebase.iid.FirebaseInstanceId;
//import com.google.firebase.iid.FirebaseInstanceIdService; //Commented FirebaseInstanceIdService
import com.google.firebase.messaging.FirebaseMessagingService;  //ADD FirebaseMessagingService

public class InstanceIdService extends FirebaseMessagingService {

    private static final String TAG = "InstanceIdService";

    /**
     * Called if InstanceID token is updated. This may occur if the security of
     * the previous token had been compromised. This call is initiated by the
     * InstanceID provider.
     */
    // [START refresh_token]
    @Override
    public void onNewToken(String token) { //Added onNewToken method
        // Get updated InstanceID token.
        String refreshedToken = FirebaseInstanceId.getInstance().getToken();
        Log.d(TAG, "Refreshed token: " + refreshedToken);

        // Broadcast refreshed token
        Intent i = new Intent("com.evollu.react.fcm.FCMRefreshToken");
        Bundle bundle = new Bundle();
        bundle.putString("token", refreshedToken);
        i.putExtras(bundle);

        final Intent message = i;

        Handler handler = new Handler(Looper.getMainLooper());
        handler.post(new Runnable() {
            public void run() {
                // Construct and load our normal React JS code bundle
                ReactInstanceManager mReactInstanceManager = ((ReactApplication) getApplication()).getReactNativeHost().getReactInstanceManager();
                ReactContext context = mReactInstanceManager.getCurrentReactContext();
                // If it's constructed, send a notification
                if (context != null) {
                    LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(message);
                } else {
                    // Otherwise wait for construction, then send the notification
                    mReactInstanceManager.addReactInstanceEventListener(new ReactInstanceManager.ReactInstanceEventListener() {
                        public void onReactContextInitialized(ReactContext context) {
                            LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(message);
                        }
                    });
                    if (!mReactInstanceManager.hasStartedCreatingInitialContext()) {
                        // Construct it in the background
                        mReactInstanceManager.createReactContextInBackground();
                    }
                }
            }
        });
    }
}
1