использовать fcm eventlog с конфликтами gms-сервиса gms в android java - PullRequest
0 голосов
/ 26 февраля 2020

Я занимаюсь разработкой для android - Andorid Studio (язык Java).

Я хочу использовать firebase analytics.

Как я уже знаю, что предпочтительный новые библиотеки - fcm (вместо gms).

Проблема в том, что существует так много конфликтов (версий), и мне нужно их решить - лучше просто.

Для firebase eventlog notification Я хочу использовать такой код:

    import com.google.firebase.analytics.FirebaseAnalytics;
    import com.google.firebase.messaging.FirebaseMessaging;
    import com.google.firebase.messaging.FirebaseMessagingService;
    import com.google.firebase.messaging.RemoteMessage;
    import com.google.firebase.iid.FirebaseInstanceId;

...
    private static FirebaseAnalytics mFirebaseAnalytics;

...

// in constuctor:   

    Context context = MyApplication.getAppContext();
    if (mFirebaseAnalytics == null)
        mFirebaseAnalytics = FirebaseAnalytics.getInstance(context);

...
// in code:

    mFirebaseAnalytics.logEvent("notify_myMessage", params);

Мой старый проект работает нормально (без eventLog ...)

Мой старый файл build.gradle (на root)

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
        google()
        maven { url 'https://maven.fabric.io/public' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.2'
        classpath 'com.google.gms:google-services:3.2.0'
        classpath 'io.fabric.tools:gradle:1.27.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}


allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Мой старый файл build.gradle (в приложении)

    apply plugin: 'com.android.application'
    apply plugin: 'io.fabric'
    apply plugin: 'com.google.gms.google-services'


    android {
        compileSdkVersion 27
        buildToolsVersion '28.0.3'
        flavorDimensions "default"
        defaultConfig {
            applicationId "myapp.com"
            minSdkVersion 19
            targetSdkVersion 26
            versionCode 1
            versionName "2.4.17"
            multiDexEnabled true
            vectorDrawables.useSupportLibrary = true
        }
...
    repositories {
        jcenter()
        maven {
            url 'https://esri.bintray.com/arcgis'
        }
        flatDir {
            dirs 'libs/jemi'
        }
        google()
        maven { url 'https://maven.fabric.io/public' }
    }


    dependencies {
        implementation fileTree(include: ['*.jar'], dir: 'libs')
        implementation files('libs/jemi/JemiCore.jar')
        implementation(name: 'Jemi-debug', ext: 'aar')
        implementation(name: 'JemiESRI100-debug', ext: 'aar')
        implementation 'com.android.volley:volley:1.1.0'
        implementation 'com.android.support:appcompat-v7:27.1.0'
        implementation 'com.android.support:design:27.1.0'
        implementation 'com.android.support:multidex:1.0.3'
        implementation 'com.android.support:support-v4:27.1.0'
        implementation 'com.android.support:support-vector-drawable:27.1.0'
        implementation 'com.esri.arcgisruntime:arcgis-android:100.4.0'
        implementation 'com.google.android.gms:play-services:12.0.1'
        implementation 'com.google.firebase:firebase-messaging:12.0.1'
        implementation 'com.google.android.gms:play-services-analytics:12.0.1'
        implementation 'com.crashlytics.sdk.android:crashlytics:2.9.8'
        implementation 'com.android.support:exifinterface:27.1.1'
    }

Когда я добавляю базу данных для журнала событий (как я описал в верхней части этого сообщения), мне нужно использовать новый версия журнала событий, поэтому вот изменения в новой версии:

Мой новый файл build.gradle (root) - изменения:

...
   dependencies {
        //noinspection GradleDependency
//        classpath 'com.android.tools.build:gradle:3.6.0' // - bug ???
        classpath 'com.android.tools.build:gradle:3.3.2'
        classpath 'com.google.gms:google-services:4.3.3'
        classpath 'io.fabric.tools:gradle:1.28.0' // 1.28.0 because crashlytics need that version
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }

Я не знаю о classpath 'com. android .tools.build: gradle: 3.6.0' (возможно, это приведет к решению, но программа cra sh в этой версии, поэтому мне нужно использовать стабильную версию).

M y старый файл build.gradle (в приложении) - изменения:

android {
    compileSdkVersion 28
    buildToolsVersion '28.0.3'
    flavorDimensions "default"
    defaultConfig {
        applicationId "myapp.com"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 1
        versionName "2.4.17"
        multiDexEnabled true
        vectorDrawables.useSupportLibrary = true
    }

and on dependencies:

    dependencies {
        implementation fileTree(include: ['*.jar'], dir: 'libs')
        implementation files('libs/jemi/JemiCore.jar')
        implementation(name: 'Jemi-debug', ext: 'aar')
        implementation(name: 'JemiESRI100-debug', ext: 'aar')
        implementation 'com.android.volley:volley:1.1.0'

        implementation 'com.android.support:appcompat-v7:28.0.0-rc01'
        implementation 'com.android.support:design:28.0.0-rc01'
        implementation 'com.android.support:multidex:1.0.3'
        implementation 'com.android.support:support-v4:28.0.0-rc01'
        implementation 'com.android.support:support-vector-drawable:28.0.0-rc01'
        implementation 'com.android.support:exifinterface:28.0.0-rc01'
        implementation 'com.esri.arcgisruntime:arcgis-android:100.4.0'
        // **********
        // implementation 'com.google.firebase:firebase-messaging:20.1.0'
        // *******
        implementation 'com.google.firebase:firebase-analytics:17.2.2'

        implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
    }

Старая версия crashlytics не работает с версией io.fabri c .tools: gradle: 1.28.0, поэтому мне нужно изменить версии. Основная проблема заключается в примечании строки со звездочками.

На данный момент syn c работает, но есть некоторые конфликты: и теперь я получаю ошибку:

Не удалось объединить манифест: Атрибут application@appComponentFactory value = (android .support.v4.app.CoreComponentFactory) из [com. android .support: support-compat: 28.0.0-rc01] AndroidManifest. xml: 22: 18-91 также присутствует в [androidx.core: core: 1.0.0] AndroidManifest. xml: 22: 18-86 value = (androidx.core.app.CoreComponentFactory). Предложение: добавьте 'tools: replace = "android: appComponentFactory"' к элементу на AndroidManifest. xml: 24: 5-150: 19, чтобы переопределить.

Итак, я добавляю это предложение , и получил ошибку:

Ошибка слияния манифеста с несколькими ошибками, см. журналы: Ошибки объединения: Ошибка: инструменты: заменить указанное в строке: 24 для атрибута android: appComponentFactory, но нет нового значения указанный манифест приложения (этот файл), строка 23 Ошибка: проверка не пройдена, выход из главного манифеста приложения (этот файл)

следующие строки в gradle.properties не решают никаких проблем:

android.useAndroidX=true
android.enableJetifier=true

Я понятия не имею, как мне решить конфликт, или есть какой-нибудь простой способ это выяснить. Может быть, я могу использовать оба SDK - 27 и 28 без конфликтов.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...