我遇到一个有趣的问题。我有一个react native expo项目,最低限度,所以它不使用任何expo服务器和所有服务器,它的纯react react native项目包含在react-native-unimodules中。所以现在我想在其中集成react-native-firebase,IOS成功了,但在android上我面临多个问题, 让我们从头开始。
1:首先,我尝试做react-native link firebase...
,然后我重新检查所有链接是否都已完成,例如,在一切正常之后,在运行{{之后,检查了settings.gradle,MainApplicaiton.java等。 1}}。我知道的第一个问题
在以下位置找不到参数[com.google.firebase:firebase-bom:21.1.0]的方法platform() org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler类型的对象。
好的,所以我进行了一些研究,发现的每个地方都有一个解决方案,升级gradle。 所以我将gradle升级到5.1.1,甚至尝试了其他几个,升级错误后,我明白了。
无法添加任务“包装器”作为具有该名称的任务
所以我再次研究了一下,然后尝试删除它或添加此解决方案 Cannot add task 'wrapper' as a task with that name already exists 工作正常(有点),现在又出现另一个错误。
毕竟, 当我尝试编译时,我得到了这个。
错误:清单合并失败:属性 application @ appComponentFactory 值=(android.support.v4.app.CoreComponentFactory)来自 [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
我也尝试解决此问题,在分机中添加react-native run-android
,依此类推。
但是什么都没有。
所以现在我很困惑,将react-native-firebase与unimodule集成在一起非常重要。
我们将不胜感激。 我将在此处发布有关我的应用程序的一些信息,这个阶段是在尝试集成任何内容之前。 android / build.gradle
googlePlayServices, firebase
我的依赖项
buildscript {
ext {
buildToolsVersion = "28.0.3"
minSdkVersion = 21
compileSdkVersion = 28
targetSdkVersion = 28
supportLibVersion = "28.0.0"
}
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
mavenLocal()
google()
jcenter()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
}
maven { url 'https://maven.google.com' }
maven { url "https://www.jitpack.io" }
}
}
//task wrapper(type: Wrapper) {
// gradleVersion = '4.7'
// distributionUrl = distributionUrl.replace("bin", "all")
//}
wrapper {
gradleVersion = '5.1'
distributionUrl = distributionUrl.replace("bin", "all")
}
本机信息
dependencies {
implementation project(':@react-native-firebase_app')
implementation project(':appcenter-analytics')
implementation project(':appcenter')
implementation project(':react-native-splash-screen')
implementation project(':react-native-sms-retriever')
implementation project(':react-native-image-crop-picker')
implementation project(':@sentry-react-native')
implementation project(':react-native-config')
implementation project(':react-native-onesignal')
implementation project(':react-native-code-push')
implementation project(':@react-native-community_async-storage')
implementation project(':react-native-reanimated')
implementation project(':react-native-gesture-handler')
implementation project(':react-native-vector-icons')
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
implementation "com.facebook.react:react-native:+" // From node_modules
compile 'com.google.android.gms:play-services-maps:8.1.0'
compile 'com.google.android.gms:play-services-plus:8.1.0'
addUnimodulesDependencies()
}
答案 0 :(得分:0)
由于您是使用expo-minimum创建项目的,因此本机版本为0.59.10。现在,这将为RNFirebase造成此类困难。我知道这是因为几天前我在同一个坑中。我的建议如下,并将为您带来奇迹。
MainApplictaion.java
文件中添加一些准确的行。但是请确保可以完成。我已经做了。阅读其文档,以便将其成功添加到您的项目中。在您的android文件夹中>在settings.gradle中确保添加
apply from: '../node_modules/react-native-unimodules/gradle.groovy'
includeUnimodulesProjects()
在rootProject.name =""
在您的android> build.gradle中,确保您在classpath("com.android.tools.build:gradle:3.4.1")
classpath('com.google.gms:google-services:4.2.0')
dependencies{}
确保添加
apply from: '../../node_modules/react-native-unimodules/gradle.groovy'
addUnimodulesDependencies()
在implementation "com.facebook.react:react-native:+"
现在,像之前的项目一样,小心地添加模块和依赖项。记住,刚升级项目基础时,某些依赖项现在可能会显示错误。
我知道这是很多工作,但是为了使它起作用,需要完成此工作。许多RN开发人员都在博览会-unimodules-RNFirebase之间遇到了这个版本的漏洞。