android - CodenameOne - FirebaseApp 未初始化
问题描述
我正在尝试从 gcm 切换到 fcm。我已按照 gcm 到 fcm 迁移指南中详述的步骤操作,尽管 FirebaseApp 没有初始化。
我已经确定了几个可能的问题,但是 codenameone 无助于解决这些问题。
显然,需要将 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 文件由 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'}
请帮忙。
更新:所以似乎需要两个可以允许的新构建提示:
- 在依赖部分之后注入应用插件语句
- 在 buildscript 依赖项部分注入一个 clsspath 语句
解决方案
我找到了一种在没有 google-services 插件的情况下初始化 FirebaseApp 的解决方法。
我必须按照此处所述手动初始化它:我可以在不使用 google-services.json 的情况下初始化 Firebase 吗?
推荐阅读
- javascript - android中的navigator.share api更改用户共享文件的名称
- java - 暂停的@transactional 方法是否会阻塞资源?
- python - 每次触发 KeyboardInterrupt 或其他错误后,Selenium 驱动程序都会因 MaxRetryError 而崩溃
- react-bootstrap - 另一个选项卡中的选项卡在 React Boostrap 5 中不起作用
- bash - 如何在 Emacs 中从另一个 Git 分支打开文件?
- javascript - 我想多拍
- python - Pyinstaller exe没有为简单的hello-world程序执行
- javascript - 即使在获取时,机器人也不会检测到自己的反应
- flutter - Flutter - 如何防止滚动超过指定限制(可滚动)
- javascript - 如何用 Js 重置选择框?