任务':react-native-gesture-handler:compileDebugJavaWithJavac'的执行失败

时间:2019-06-20 00:11:28

标签: react-native react-native-android

我通过为我的RN 0.59项目在gradle.properties下的android添加2行来解决与AndroidX相关的不兼容问题。

android.useAndroidX=true
android.enableJetifier=true

现在run-android另一个与react-native-gesture-handler有关的错误。然后我yarn remove react-native-gesture-handler的当前1.2.0并将其添加回去。新版本为1.3.0。这是错误:

> Task :react-native-gesture-handler:compileDebugJavaWithJavac
C:\D\code\js\emps_app\node_modules\react-native-gesture-handler\android\src\main\java\com\swmansion\gesturehandler\react\RNGestureHandlerEvent.java:3: error: package android.support.v4.util does not exist
import android.support.v4.util.Pools;
                              ^
C:\D\code\js\emps_app\node_modules\react-native-gesture-handler\android\src\main\java\com\swmansion\gesturehandler\react\RNGestureHandlerEvent.java:19: error: package Pools does not exist
  private static final Pools.SynchronizedPool<RNGestureHandlerEvent> EVENTS_POOL =
                            ^
C:\D\code\js\emps_app\node_modules\react-native-gesture-handler\android\src\main\java\com\swmansion\gesturehandler\react\RNGestureHandlerStateChangeEvent.java:3: error: package android.support.v4.util does not exist
import android.support.v4.util.Pools;
                              ^
C:\D\code\js\emps_app\node_modules\react-native-gesture-handler\android\src\main\java\com\swmansion\gesturehandler\react\RNGestureHandlerStateChangeEvent.java:19: error: package Pools does not exist
  private static final Pools.SynchronizedPool<RNGestureHandlerStateChangeEvent> EVENTS_POOL =
                            ^
C:\D\code\js\emps_app\node_modules\react-native-gesture-handler\android\src\main\java\com\swmansion\gesturehandler\react\RNGestureHandlerEvent.java:20: error: package Pools does not exist
          new Pools.SynchronizedPool<>(TOUCH_EVENTS_POOL_SIZE);
                   ^
C:\D\code\js\emps_app\node_modules\react-native-gesture-handler\android\src\main\java\com\swmansion\gesturehandler\react\RNGestureHandlerStateChangeEvent.java:20: error: package Pools does not exist
          new Pools.SynchronizedPool<>(TOUCH_EVENTS_POOL_SIZE);
                   ^
Note: C:\D\code\js\emps_app\node_modules\react-native-gesture-handler\android\src\main\java\com\swmansion\gesturehandler\react\RNGestureHandlerButtonViewManager.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
6 errors

> Task :react-native-gesture-handler:compileDebugJavaWithJavac FAILED

FAILURE: Build failed with an exception.

该错误与6个软件包丢失有关,我想它仍然与Androidx有关。但是我不知道如何解决它。有一个问题帖子(针对RN-gesture-handler)建议降级至版本1.0.5进行修复,但我不想使用这样的旧版本。

5 个答案:

答案 0 :(得分:2)

它导致RN 0.60出现此错误。 您可以通过以下方法解决此问题,

npm i jetifier
npx jetify

RN 0.60上为我修复了该问题。

祝你有美好的一天。

答案 1 :(得分:1)

按照我的说法,此错误是由于npm库的安装和链接不完整而发生的。 遵循以下步骤: 首先,在您的项目中运行此命令(npm install --save react-native-gesture-handler)。 然后通过运行此命令链接该库(React-native链接)。 然后在设备或模拟器上运行项目,它将起作用。    如果它不起作用,请手动安装并通过下面给出的链接链接此库。 https://www.npmjs.com/package/react-native-gesture-handler

答案 2 :(得分:0)

npm i jetifier
npx jetify

已将本机固定为反应本色0.60

请小心不要使用最新的本机版本

react-native link react-native-gesture-handler

它由本机0.60自动链接

答案 3 :(得分:0)

  

$ npm i react-native-gesture-handler

     

$ react-native链接react-native-gesture-handler

     

安装Jetifier->

     

$ npm install --save-dev jetifier

  

$纱线添加-D喷射器

然后->编辑您的package.json并添加一个后安装脚本:“ postinstall”:“ npx jetify”,如下所示:

{
    "version": "2.0.0",
    "lockfileVersion": 1,
    "requires": true,
    "scripts": {
          "postinstall": "npx jetify"
    },
    ....
 }
  

$ npm安装或$ yarn

     

$ npx jetify

link

答案 4 :(得分:0)

这是使用RN <0.60的人们的另一个答案,OP也是如此。我正在使用react-native-gesture-handler v 1.3.0,因为这是库更新为AndroidX之前的最新版本。

尽管OP通过添加来遇到了这个问题

android.useAndroidX=true
android.enableJetifier=true

在他的项目中,我无意中添加了另一个已转换为AndroidX的库react-native-safe-area-context。我原以为我的构建会在到达该库时失败,但是在构建react-native-gesture-handler时,如果之前失败,我会感到非常困惑。显然,如果useAndroidXenableJetifier在构建中的任何地方设置为true,都会影响整个构建。

我通过修补新库以还原AndroidX来解决了该问题。我得到了补丁msbuild spec