运行`detox build -c android.emu.debug`任务时出错:app:compileDebugJavaWithJavac FAILED in react native

Posted

技术标签:

【中文标题】运行`detox build -c android.emu.debug`任务时出错:app:compileDebugJavaWithJavac FAILED in react native【英文标题】:error while running `detox build -c android.emu.debug` Task :app:compileDebugJavaWithJavac FAILED in react native 【发布时间】:2020-01-20 14:30:26 【问题描述】:

在遵循 Detox [android 安装教程][1] 时,我在运行 detox build -c android.emu.debug 时遇到以下错误


❯ detox build -c android.emu.debug detox[23052] INFO: [build.js] cd android && ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug && cd ..

任务:app:generatePackageList 任务:app:preBuild 任务:react-native-gesture-handler:preBuild UP-TO-DATE 任务:react-native-gesture-handler:preDebugBuild UP-TO-DATE 任务:react-native-gesture-handler:checkDebugManifest UP-TO-DATE 任务:react-native-gesture-handler:processDebugManifest UP-TO-DATE 任务:react-native-reanimated:preBuild UP-TO-DATE 任务:react-native-reanimated:preDebugBuild UP-TO-DATE 任务:react-native-reanimated:checkDebugManifest UP-TO-DATE 任务:react-native-reanimated:processDebugManifest UP-TO-DATE 任务:react-native-screens:preBuild UP-TO-DATE 任务:react-native-screens:preDebugBuild UP-TO-DATE 任务:react-native-screens:checkDebugManifest UP-TO-DATE 任务:react-native-screens:processDebugManifest UP-TO-DATE 任务:react-native-vector-icons:preBuild UP-TO-DATE 任务:react-native-vector-icons:preDebugBuild UP-TO-DATE 任务:react-native-vector-icons:checkDebugManifest UP-TO-DATE 任务:react-native-vector-icons:processDebugManifest UP-TO-DATE 任务:react-native-webview:preBuild UP-TO-DATE 任务:react-native-webview:preDebugBuild UP-TO-DATE 任务:react-native-webview:checkDebugManifest UP-TO-DATE 任务:react-native-webview:processDebugManifest UP-TO-DATE 任务 :app:preDebugBuild UP-TO-DATE 任务:react-native-screens:compileDebugAidl NO-SOURCE 任务:react-native-vector-icons:compileDebugAidl NO-SOURCE 任务:react-native-gesture-handler:compileDebugAidl NO-SOURCE 任务:react-native-reanimated:compileDebugAidl NO-SOURCE 任务:react-native-webview:compileDebugAidl NO-SOURCE 任务:app:compileDebugAidl NO-SOURCE 任务:react-native-gesture-handler:packageDebugRenderscript NO-SOURCE 任务:react-native-reanimated:packageDebugRenderscript NO-SOURCE 任务:react-native-screens:packageDebugRenderscript NO-SOURCE 任务:react-native-vector-icons:packageDebugRenderscript NO-SOURCE 任务:react-native-webview:packageDebugRenderscript NO-SOURCE 任务 :app:compileDebugRenderscript 无源 任务:app:checkDebugManifest UP-TO-DATE 任务:app:generateDebugBuildConfig UP-TO-DATE 任务 :app:bundleDebugJsAndAssets 已跳过 任务:app:prepareLintJar UP-TO-DATE 任务:app:generateDebugSources UP-TO-DATE 任务:react-native-gesture-handler:generateDebugBuildConfig UP-TO-DATE 任务:react-native-gesture-handler:compileDebugRenderscript NO-SOURCE 任务:react-native-gesture-handler:generateDebugResValues UP-TO-DATE 任务:react-native-gesture-handler:generateDebugResources UP-TO-DATE 任务:react-native-gesture-handler:prepareLintJar UP-TO-DATE 任务:react-native-gesture-handler:generateDebugSources UP-TO-DATE 任务:react-native-gesture-handler:javaPreCompileDebug UP-TO-DATE 任务:react-native-gesture-handler:packageDebugResources UP-TO-DATE 任务:react-native-gesture-handler:generateDebugRFile UP-TO-DATE

> 任务:react-native-gesture-handler:compileDebugJavaWithJavac FAILED /home/rogerd/dev/app_cachacagestor/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.java:4: 错误:com.facebook.react.module.annotations 包不存在 导入 com.facebook.react.module.annotations.ReactModule; ^ /home/rogerd/dev/app_cachacagestor/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.java:17: 错误:找不到符号@ReactModule(name = RNGestureHandlerRootViewManager.REACT_CLASS) ^ 符号:类 反应模块 /home/rogerd/dev/app_cachacagestor/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.java:16: 错误:包 com.facebook.react.module.annotations 不存在 导入 com.facebook.react.module.annotations.ReactModule; ^ /home/rogerd/dev/app_cachacagestor/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.java:19: 错误:找不到符号导入 com.facebook.react.uimanager.UIBlock; ^ 符号:类 UIBlock 位置:包 com.facebook.react.uimanager /home/rogerd/dev/app_cachacagestor/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.java:40: 错误:找不到符号 @ReactModule(name=RNGestureHandlerModule.MODULE_NAME) ^ 符号: 类 ReactModule /home/rogerd/dev/app_cachacagestor/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.java:218: 错误:找不到符号 @ReactProp(name = ViewProps.BORDER_RADIUS) ^ 符号:变量 BORDER_RADIUS 位置:类 ViewProps /home/rogerd/dev/app_cachacagestor/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.java:41: 错误:Event 类中的方法 init 不能应用于给定类型; super.init(handler.getView().getId()); ^ 必需:int,long 找到:int 原因:实际参数列表和形式参数列表的长度不同,其中 T 是类型变量: T 扩展类 Event /home/rogerd/dev/app_cachacagestor/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.java:45 中声明的事件: 错误:找不到符号 return parent.getChildAt(((ReactViewGroup) parent).getZIndexMappedChildIndex(index)); ^ 符号:方法 getZIndexMappedChildIndex(int) 位置:类 ReactViewGroup /home/rogerd/dev/app_cachacagestor/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.java:54: 错误:找不到符号 字符串溢出 = ((ReactViewGroup) view).getOverflow(); ^ 符号:方法 getOverflow() 位置:类 ReactViewGroup /home/rogerd/dev/app_cachacagestor/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.java:574: 错误:找不到符号 final int rootViewTag = uiManager.resolveRootTagFromReactTag(ancestorViewTag); ^ 符号:方法 resolveRootTagFromReactTag(int) 位置:变量 uiManager 类型 UIManager 模块 /home/rogerd/dev/app_cachacagestor/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.java:582: 错误:找不到符号 if (root.getRootView().getRootViewTag() == rootViewTag) ^ 符号:方法 getRootViewTag() 位置:类 ReactRootView /home/rogerd/dev/app_cachacagestor/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.java:598: 错误:找不到符号 uiManager.addUIBlock(新 UIBlock() ^ 符号:类 UIBlock 位置:类 RNGestureHandlerModule /home/rogerd/dev/app_cachacagestor/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.java:634: 错误:找不到符号 int rootViewTag = uiManager.resolveRootTagFromReactTag(viewTag); ^ 符号:方法 resolveRootTagFromReactTag(int) 位置:变量 uiManager 类型 UIManager 模块 /home/rogerd/dev/app_cachacagestor/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.java:641: 错误:找不到符号 if (root.getRootView().getRootViewTag() == rootViewTag) ^ 符号:方法 getRootViewTag() 位置:类 ReactRootView /home/rogerd/dev/app_cachacagestor/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerPackage.java:18: 错误:RNGestureHandlerPackage 不是抽象的并且不会覆盖 ReactPackage 公共类中的抽象方法 createJSModules() RNGestureHandlerPackage 实现 ReactPackage ^ /home/rogerd/dev/app_cachacagestor/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.java:45: 错误:Event 类中的方法 init 不能应用于给定类型; super.init(handler.getView().getId()); ^ 必需:int,long 找到:int 原因:实际参数列表和形式参数列表的长度不同,其中 T 是类型变量: T extends Event 类中声明的事件注意事项:/home/rogerd/dev/app_cachacagestor/node_modules/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.java 使用或覆盖已弃用的 API。注意:重新编译 -Xlint:deprecation 了解详情。注意:某些输入文件使用未经检查或不安全的操作。注意:使用 -Xlint:unchecked 重新编译 细节。 16 个错误

FAILURE:构建失败并出现异常。

出了什么问题:任务 ':react-native-gesture-handler:compileDebugJavaWithJavac' 执行失败。

编译失败;有关详细信息,请参阅编译器错误输出。

尝试:使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。

通过https://help.gradle.org获得更多帮助

此版本中使用了已弃用的 Gradle 功能,使其 与 Gradle 6.0 不兼容。使用 '--warning-mode all' 显示 个别弃用警告。看 https://docs.gradle.org/5.4.1/userguide/command_line_interface.html#sec:command_line_warnings

在 5 秒内构建失败 22 个可操作的任务:2 个已执行,20 个是最新的 排毒 [23052] 错误:[cli.js] 错误:命令失败:cd android && ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug && 光盘..


“反应”:“16.8.6”,

"react-native": "0.60.5",

“排毒”:“^14.3.2”,

“摩卡”:“^6.2.0”,


有人知道怎么解决吗?

【问题讨论】:

欢迎堆栈溢出。 1- 通常应避免弃用的代码。 2- 它说“包 com.facebook.react.module.annotations 不存在”所以你可能会错过在你的项目中添加一些东西。 嘿,你解决了吗? 【参考方案1】:

我通过更改 android/build.gradle 中的 maven 存储库的顺序解决了这个问题。我的所有项目如下所示:

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 
        // Android JSC is installed from npm
        url("$rootDir/../node_modules/jsc-android/dist")
    
    maven 
        // All of Detox' artifacts are provided via the npm module
        url "$rootDir/../node_modules/detox/Detox-android"
    
    maven  url 'https://www.jitpack.io' 

感谢gypsicoder

https://github.com/software-mansion/react-native-gesture-handler/issues/1002

【讨论】:

以上是关于运行`detox build -c android.emu.debug`任务时出错:app:compileDebugJavaWithJavac FAILED in react native的主要内容,如果未能解决你的问题,请参考以下文章

Detox - Android / iOS - 无法在 android 上运行相同的测试

如何仅在 IOS 上运行 Detox 测试并禁用 Android 运行

在使用 Detox 运行测试期间,Android 模拟器无法启动应用程序

Bitrise 上的 Detox 无法在 Android 上运行 - React Native

运行 detox/wix 测试用例 android.util.AndroidException: INSTRUMENTATION_FAILED:

在 MainActivity.java 中检测在 Detox 上下文下运行的 Android React Native 应用程序