在React Native项目中安装react-navigation后警告

时间:2018-12-28 20:48:23

标签: android react-native react-navigation

我是React Native的新手。我正在学习导航,因此我从一个全新的react native项目开始,然后按照React Navigation网站(react navigation doc)上的步骤进行操作:

1)npm install --save react-navigation

2)npm install --save react-native-gesture-handler (not using expo)

3)react-native link react-native-gesture-handler

4)修改网站上显示的MainActivity.java,用于Android

然后,当我运行命令react-native run-android时,我在手机中看到了该应用程序,但出现了以下消息:

  

配置项目:app   警告:配置“编译”已过时,已被“实现”和“ api”替换。   它将于2018年底删除。有关更多信息,请参阅:http://d.android.com/r/tools/update-dependency-configurations.html

     

任务:react-native-gesture-handler:compileDebugJavaWithJavac   注意:/ home / ana / code / react native / seeCompileError / node_modules / react-native-gesture-handler / android / src / main / java / com / swmansion / gesturehandler / react / RNGestureHandlerButtonViewManager.java使用或覆盖已弃用的API。   注意:有关详细信息,请使用-Xlint:deprecation重新编译。   注意:某些输入文件使用未经检查或不安全的操作。   注意:重新编译-Xlint:unchecked以获得详细信息。

我正在使用Linux Mint 19在我的物理Android手机上运行代码。

我的build.gradle文件:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext {
        buildToolsVersion = "27.0.3"
        minSdkVersion = 16
        compileSdkVersion = 27
        targetSdkVersion = 26
        supportLibVersion = "27.1.1"
    }
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.4'

        // 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"
        }
    }
}


task wrapper(type: Wrapper) {
    gradleVersion = '4.4'
    distributionUrl = distributionUrl.replace("bin", "all")
}

我的package.json文件:

{
  "name": "seeCompileError",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest"
  },
  "dependencies": {
    "jwt-decode": "^2.2.0",
    "react": "16.6.3",
    "react-native": "0.57.8",
    "react-native-gesture-handler": "^1.0.12",
    "react-navigation": "^3.0.9",
    "react-redux": "^6.0.0",
    "redux": "^4.0.1",
    "redux-persist": "^5.10.0",
    "redux-thunk": "^2.3.0"
  },
  "devDependencies": {
    "babel-jest": "23.6.0",
    "jest": "23.6.0",
    "metro-react-native-babel-preset": "0.51.1",
    "react-test-renderer": "16.6.3"
  },
  "jest": {
    "preset": "react-native"
  }
}

谢谢您的任何提示或帮助。

1 个答案:

答案 0 :(得分:0)

编译与实现

使用react-native link时,它将依赖性添加到build.gradle文件中;根据依赖项的设置方式,它会用compileimplementation添加它。您可以轻松地对其进行修复,只需将其手动更改为implementation

因此,在您的build.gradle(模块:应用)中,您可以更改

compile project(':react-native-gesture-handler')

implementation project(':react-native-gesture-handler')

您可以在此处详细了解编译和实现之间的区别:What's the difference between implementation and compile in Gradle?


react-native-gesture-handler

如果react-native-gesture-handler正在使用或覆盖已弃用的API,则可以在其回购中标记一个问题,或者通过发出拉取请求自己修复该问题。

可以删除已弃用的api,而不会发出警告,导致依赖项无法使用/不稳定。不推荐使用的api也可能存在缺陷,因此不推荐使用它们,这可能会在将来给您带来问题。

但是,由于在使用react-native-gesture-handler时需要使用react-navigation,因此您只能做些限制。

正如我已经说过的,有几种选择:标记问题,使用拉取请求自己解决,在react-navigation修复之前,请勿使用react-native-gesture-handler,或者您可以使用它