【问题标题】:CodenameOne - FirebaseApp not initializingCodenameOne - FirebaseApp 未初始化
【发布时间】:2018-09-11 14:26:54
【问题描述】:

我正在尝试从 gcm 切换到 fcm。我已按照 gcm 到 fcm 迁移指南中详述的步骤操作,尽管 FirebaseApp 没有初始化。

我已经确定了几个可能的问题,但是代号无法帮助解决这些问题。

显然,需要将 google-services 添加到 buildscript 依赖项中,如下所示:

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 文件由代号构建服务器生成,如下所示:

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. 在 buildscript 依赖项部分中注入 clsspath 语句

【问题讨论】:

  • 通常apply plugin: 'com.google.gms.google-services' 应该放在应用程序build.gradle 文件的底部。您确定要在最后添加吗?
  • 我无法在最后添加它,因为我无法直接访问 build.gradle。这由代号 one build server 通过构建提示控制,目前唯一的选择是在开头添加它。
  • 您需要找到一个解决方案才能使其正常工作,请在文档中阅读此处:firebase.google.com/docs/android/setup#add_the_sdk 在显示 app/build.gradle 代码的部分中有一条红色注释,其中明确指出在文件底部添加行
  • 是的...为此我需要代号团队的帮助。也许他们可以通过新的构建提示帮助我实现这一目标。
  • 你读过这个吗? github.com/codenameone/CodenameOne/wiki/Push-Notifications 新的推送实现支持 FCM。默认情况下包含播放服务,如果您使用当前推送指令,一切都将按预期使用 FCM。您无需采用原生 Android 方法来执行此操作。

标签: android firebase firebase-cloud-messaging codenameone


【解决方案1】:

我找到了一种在不使用 google-services 插件的情况下初始化 FirebaseApp 的解决方法。

我必须按照此处所述手动初始化它:Can I initialize Firebase without using google-services.json?

【讨论】:

    猜你喜欢
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    • 2022-10-05
    • 2021-07-11
    • 1970-01-01
    • 2016-10-26
    • 2022-08-04
    • 2018-11-21
    相关资源
    最近更新 更多