You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行3年前React Native项目遇编译报错:android:enableOnBackInvokedCallback未找到

解决React Native项目编译失败的两个问题

问题1::react-native-navigation:compileReactNative57_5DebugKotlin编译失败

原因

ModalContentLayout类未实现RootView新增的抽象方法onChildStartedNativeGesture,核心是当前使用的react-native-navigation版本与项目依赖的React Native版本(对应compileSdk 31)不兼容,RN后续版本给RootView新增了这个必须实现的抽象方法。

解决方法

  • 优先方案:升级react-native-navigation
    查找与当前RN版本匹配的react-native-navigation版本(比如RN 0.68+对应react-native-navigation 7.x系列),修改package.json中的依赖版本后执行:

    npm install
    # 或 yarn install
    

    重新执行编译命令即可。

  • 临时方案:补全方法实现
    如果暂时无法升级依赖,找到react-native-navigation源码中的ModalContentLayout.kt文件,添加方法实现:

    override fun onChildStartedNativeGesture(child: View?) {
        // 空实现即可,无需额外逻辑
    }
    

    注意:这种修改会在依赖重新安装后丢失,仅作为临时过渡方案。

问题2::app:processDebugResources AAPT报错(enableOnBackInvokedCallback属性未找到)

原因

android:enableOnBackInvokedCallback是Android 13(API 33)新增的属性,而当前项目compileSdkVersion为31,AAPT无法识别该属性。

解决方法

  • 方案1:升级compileSdkVersion到33
    修改模块级build.gradle的配置:

    android {
        compileSdkVersion 33
        targetSdkVersion 33
        // 其他原有配置...
    }
    

    同步gradle后重新编译,可保留gradle.properties中的android.suppressUnsupportedCompileSdk=33来抑制兼容警告。

  • 方案2:移除/屏蔽该属性
    如果不想升级compileSdk,直接删除所有AndroidManifest.xml文件中的android:enableOnBackInvokedCallback属性;或者在主AndroidManifest.xml中用tools:remove统一移除:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools">
        <activity
            android:name=".MainActivity"
            <!-- 其他属性 -->
            tools:remove="android:enableOnBackInvokedCallback" />
    </manifest>
    

    注意:使用tools:remove需要在manifest根标签添加xmlns:tools声明。

内容的提问来源于stack exchange,提问作者user16525780

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 22:15:35