我通过为我的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
进行修复,但我不想使用这样的旧版本。
答案 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
答案 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
时,如果之前失败,我会感到非常困惑。显然,如果useAndroidX
和enableJetifier
在构建中的任何地方设置为true,都会影响整个构建。
我通过修补新库以还原AndroidX来解决了该问题。我得到了补丁msbuild spec。