evollu/response-native-fcm - ClassNotFoundException

Мое приложение работает нормально, но... когда оно получает уведомление от Firebase, оно выходит из строя.

Я думаю, что это происходит потому, что моя конфигурация плохая, так как я реализовал пример "response-native-fcm".

Я получаю FCMToken() успешно.

Вы смотрите какую-нибудь ошибку? Вы знаете, почему это происходит? Идеи? Помогите!!

ОШИБКИ КОНСОЛИ

package.json

"dependencies": {
    "firebase": "^4.8.2",
    "lodash": "^4.17.4",
    "moment": "^2.20.1",
    "react": "16.0.0-alpha.12",
    "react-firebase-storage-connector": "^1.1.0",
    "react-native": "0.47",
    "react-native-fbsdk": "^0.7.0",
    "react-native-fcm": "^13.3.1",
    "react-native-fetch-blob": "^0.10.8",
    "react-native-image-picker": "^0.26.7",
    "react-native-modal": "^5.0.0",
    "react-native-responsive-image": "^2.2.0",
    "react-native-side-menu": "^1.1.3",
    "react-native-textinput-effects": "^0.4.2",
    "react-native-vector-icons": "^4.5.0",
    "react-navigation": "^1.0.0-beta.11",
    "react-redux": "^5.0.6",
    "redux": "^3.7.2",
    "redux-thunk": "^2.2.0",
    "slugify": "^1.2.9"
},

Приложение / build.gradlew

      compileSdkVersion 27
      buildToolsVersion "27.0.1"

      defaultConfig {
          applicationId "com.reactnavigationdrawer"
          minSdkVersion 16
          targetSdkVersion 22
          versionCode 1
          versionName "1.0"
          ndk {
              abiFilters "armeabi-v7a", "x86"
          }
      }

  dependencies {
      compile fileTree(dir: "libs", include: ["*.jar"])
      compile "com.android.support:appcompat-v7:+"
      compile "com.facebook.react:react-native:+"  // From node_modules
      compile(project(':react-native-fbsdk')) {
       exclude(group: 'com.facebook.android', module: 'facebook-android-sdk')
      }
      compile('com.facebook.android:facebook-android-sdk:4.22.1')
      compile ("com.google.android.gms:play-services-base:11.2.0") {
        force = true;
     }
      compile ('com.google.firebase:firebase-core:11.2.0') {
          force = true;
      }
      compile ('com.google.firebase:firebase-auth:11.2.0') {
          force = true;
      }
      compile (project(':react-native-fcm')){
          exclude group: "com.google.firebase"
      }
      compile ("com.google.android.gms:play-services-gcm:11.2.0") {
          force = true;
      }
      compile project(':react-native-vector-icons')
      compile project(':react-native-fetch-blob')
      compile project(':react-native-image-picker')

  }

  apply plugin: 'com.google.gms.google-services'

build.gradlew

    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.+' // <- USE 2.2.+ version
        classpath 'com.android.tools.build:gradle:2.2.3'
        classpath 'com.google.gms:google-services:3.0.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }

MainActivity.java

  package com.reactnavigationdrawer;

  import com.facebook.react.ReactActivity;
  import android.content.Intent;

  public class MainActivity extends ReactActivity {

      @Override
      public void onNewIntent (Intent intent) {
          super.onNewIntent(intent);
          setIntent(intent);
      }

      @Override
      public void onActivityResult(int requestCode, int resultCode, Intent data) {
          super.onActivityResult(requestCode, resultCode, data);
          MainApplication.getCallbackManager().onActivityResult(requestCode, resultCode, data);
      }

      @Override
      protected String getMainComponentName() {
          return "reactnavigationdrawer";
      }
  }

MainApplication.java

  @Override
  protected List<ReactPackage> getPackages() {
     return Arrays.<ReactPackage>asList(
        new MainReactPackage(),
        new VectorIconsPackage(),
        new ImagePickerPackage(),
        new RNFetchBlobPackage(),
        new FIRMessagingPackage(),
        new FBSDKPackage(mCallbackManager)
    );
 }

AndroidManifest.xml

  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.reactnavigationdrawer"
      android:versionCode="1"
      android:versionName="1.0">

      <uses-permission android:name="android.permission.INTERNET" />
      <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
      <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
      <uses-permission android:name="android.permission.CAMERA" />
      <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
      <uses-permission android:name="android.permission.VIBRATE" />
      <uses-feature android:name="android.hardware.camera" android:required="false"/>
      <uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>

      <uses-sdk
          android:minSdkVersion="16"
          android:targetSdkVersion="22" />

      <application
        android:name=".MainApplication"
        android:allowBackup="true"
        android:label="@string/app_name"
        android:icon="@mipmap/ic_launcher"
        android:theme="@style/AppTheme">

        <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
        <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/ic_launcher"/>

        <service android:name="com.evollu.react.fcm.MessagingService" android:enabled="true" android:exported="true">
           <intent-filter>
             <action android:name="com.google.firebase.MESSAGING_EVENT"/>
           </intent-filter>
        </service>

        <service android:name="com.evollu.react.fcm.InstanceIdService" android:exported="false">
           <intent-filter>
             <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
           </intent-filter>
        </service>

        <receiver android:name="com.evollu.react.fcm.FIRLocalMessagingPublisher"/>
        <receiver android:enabled="true" android:exported="true"  android:name="com.evollu.react.fcm.FIRSystemBootEventReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
                <action android:name="android.intent.action.QUICKBOOT_POWERON"/>
                <action android:name="com.htc.intent.action.QUICKBOOT_POWERON"/>
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>
        <activity
          android:name=".MainActivity"
          android:launchMode="singleTop"
          android:label="@string/app_name"
          android:screenOrientation="portrait"
          android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
          android:windowSoftInputMode="adjustResize">
          <intent-filter>
              <action android:name="android.intent.action.MAIN" />
              <category android:name="android.intent.category.LAUNCHER" />
          </intent-filter>
        </activity>
        <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
      </application>
  </manifest>

если вам нужно больше информации, вы скажете мне!

1 ответ

Решение

Ошибка читает...

невозможно разрешить суперкласс com.evullu.react.fcm.MessagingService

это означает, что любая ссылка в Mainfest.xml ошибочно и / или указанный класс com.evullu.react.fcm.MessagingService не существует. это может быть скорее com.reactnavigationdrawer.MessagingService (или так), и нет необходимости компилировать устаревший пакет play-services-gcm или.

лучше добавить зависимость для com.google.firebase:firebase-messaging:11.8.0... который должен содержать superclass из com.evullu.react.fcm.MessagingService, который не может быть решен. вы можете проверить с ./gradlew app:dependencies | grep firebase присутствует ли он.

этот файл build.gradlew должен быть назван build.gradle и Android Studio может жаловаться на устаревшие версии... пока что com.android.tools.build:gradle:3.0.1 & com.google.gms:google-services:3.1.2, тот force = true; также кажется бесполезным в этом контексте, по крайней мере, не понимаю, что он должен делать там, см. ResolutionStrategy.

Другие вопросы по тегам