与本地裸机应用程序进行本机Firebase集成

时间:2019-11-14 17:11:35

标签: android firebase react-native gradle

我遇到一个有趣的问题。我有一个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()
}

1 个答案:

答案 0 :(得分:0)

由于您是使用expo-minimum创建项目的,因此本机版本为0.59.10。现在,这将为RNFirebase造成此类困难。我知道这是因为几天前我在同一个坑中。我的建议如下,并将为您带来奇迹。

  1. 备份当前项目,并创建一个最新版本至少为v60的新React-Native(完全没有Expo)应用程序。
  2. 现在,您需要单独添加react-native-unimodules,这是a **中的一种补充。由于您需要在MainApplictaion.java文件中添加一些准确的行。但是请确保可以完成。我已经做了。阅读其文档,以便将其成功添加到您的项目中。
  3. 在您的android文件夹中>在settings.gradle中确保添加 apply from: '../node_modules/react-native-unimodules/gradle.groovy' includeUnimodulesProjects()rootProject.name =""

  4. 行之后
  5. 在您的android> build.gradle中,确保您在classpath("com.android.tools.build:gradle:3.4.1") classpath('com.google.gms:google-services:4.2.0')

  6. 中有dependencies{}
  7. 确保添加 apply from: '../../node_modules/react-native-unimodules/gradle.groovy' addUnimodulesDependencies()implementation "com.facebook.react:react-native:+"

  8. 之后
  9. 现在,像之前的项目一样,小心地添加模块和依赖项。记住,刚升级项目基础时,某些依赖项现在可能会显示错误。

  

我知道这是很多工作,但是为了使它起作用,需要完成此工作。许多RN开发人员都在博览会-unimodules-RNFirebase之间遇到了这个版本的漏洞。