CodenameOne - FirebaseApp не инициализируется - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь переключиться с gcm на fcm. Я выполнил шаги, подробно описанные в руководстве по миграции с gcm на fcm, хотя FirebaseApp не инициализируется.

Я определил пару возможных проблем, однако коденамеон не помогает их решить.

По-видимому, к зависимостям buildscript необходимо добавить google-сервисы, например:

buildscript {
    repositories {
        ...
    }
    dependencies {

        classpath 'com.android.tools.build:gradle:2.3.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
    }
}

Однако я не могу найти подсказки по сборке коденамеона, чтобы помочь мне сделать это.

Также необходимо добавить плагин google-services, например:

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

Я выполнил это с помощью подсказки сборки android.gradlePlugin:

codename1.arg.android.gradlePlugin=apply plugin\:'com.google.gms.google-services'

Но сборка терпит неудачу, жалуясь на то, что не может найти плагин, поскольку, вероятно, он нуждается в том, что определено как описано выше.

Кроме того, я видел, что в большинстве случаев эта строка должна появляться после раздела «зависимости», а не до, как подсказывает текущая сборка.

Не совсем уверен, если это проблема в данный момент.

Я также попытался вручную запустить FirebaseApp с помощью некоторого нативного кода, например:

Context context = AndroidNativeUtil.getContext();
FirebaseApp.initializeApp(context);

но это не помогает. Ошибка не выдается, но при попытке получить токен с помощью

String token = FirebaseInstanceId.getInstance().getToken();

Я получаю ошибку, подобную этой:

IllegalStateException: Default FirebaseApp is not initialized in this process

Мой файл build.gradle, созданный серверами сборки codenameone, выглядит следующим образом:

apply plugin: 'com.android.application'

buildscript {
    repositories {
     jcenter()
     mavenLocal()
      mavenCentral()
      google()
    maven { url "https://maven.google.com" }
     mavenLocal()
      mavenCentral()
      google()
    }
    dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
    }
}

android {
    compileSdkVersion 27
    buildToolsVersion '27'

    dexOptions {
        preDexLibraries = false
        incremental false
        jumboMode = true
        javaMaxHeapSize "3g"
    }
    defaultConfig {
        applicationId "<appid>"
        minSdkVersion 15
        targetSdkVersion 27
        versionCode 85
        versionName "0.85"
        multiDexEnabled true
    }
    sourceSets {
        main {
            aidl.srcDirs = ['src/main/java']
        }
    }

    lintOptions {
        lintOptions {
        checkReleaseBuilds false
        abortOnError false
        }
    }
    signingConfigs {
        release {
            storeFile file("keyStore")
            storePassword "android"
            keyAlias "androiddebugkey"
            keyPassword "android"
        }
    }
buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.cfg'
            signingConfig signingConfigs.release
        }
        debug {
            signingConfig signingConfigs.release
        }
    }
}

repositories {
    jcenter()
    maven { url "https://maven.google.com" }
     mavenLocal()
      mavenCentral()
      google()
    flatDir{
              dirs 'libs'
       }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:support-v4:27.+'
     implementation 'com.android.support:appcompat-v7:27.+'

 compile 'com.facebook.android:facebook-android-sdk:4.7.0'
compile 'com.google.android.gms:play-services:10.0.1'
compile 'com.google.gms:google-services:4.1.0'
compile 'com.google.firebase:firebase-core:16.0.3'
compile 'com.google.firebase:firebase-messaging:17.3.0'}

Пожалуйста, помогите.

Обновление: похоже, нужны две новые подсказки для сборки, которые могут разрешить:

  1. Вставить оператор применения плагина после раздела зависимостей
  2. Вставить оператор clsspath в раздел зависимостей buildscript

1 Ответ

0 голосов
/ 12 сентября 2018

Я нашел обходной путь для инициализации FirebaseApp без плагина google-services.

Мне пришлось вручную инициализировать его, как описано здесь: Можно ли инициализировать Firebase без использования google-services.json?

...