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

React Native Android构建失败求助:Kotlin编译错误

React Native Android构建失败:react-native-screens类型不匹配问题

核心错误

项目Android构建失败,根源是react-native-screens模块的CustomSearchView.kt文件出现类型不匹配:推断类型为Context?但需要Context,导致:react-native-screens:compileDebugKotlin任务执行失败。

已尝试的操作

  • 按React Native官方文档配置开发环境
  • 更新Gradle、Kotlin、React Native、npm、Node.js版本
  • 统一Firebase相关依赖版本
  • 配置Android SDK工具
  • 重装Node.js和VS Code

详细信息

完整错误日志

BUILD FAILED in 1m 33s

error Failed to install the app. Make sure you have the Android development environment set up: https://reactnative.dev/docs/environment-setup.
Error: Command failed: gradlew.bat app:installEmembershipcardDebug -PreactNativeDevServerPort=8081
Warning: Mapping new ns http://schemas.android.com/repository/android/common/02 to old ns http://schemas.android.com/repository/android/common/01    
Warning: Mapping new ns http://schemas.android.com/repository/android/generic/02 to old ns http://schemas.android.com/repository/android/generic/01  
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/addon2/02 to old ns http://schemas.android.com/sdk/android/repo/addon2/01        
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/addon2/03 to old ns http://schemas.android.com/sdk/android/repo/addon2/01        
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/repository2/02 to old ns http://schemas.android.com/sdk/android/repo/repository2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/repository2/03 to old ns http://schemas.android.com/sdk/android/repo/repository2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/sys-img2/03 to old ns http://schemas.android.com/sdk/android/repo/sys-img2/01    
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/sys-img2/02 to old ns http://schemas.android.com/sdk/android/repo/sys-img2/01    
Note: D:\ememberProject\eMembership-React-Native\node_modules\@react-native-community\art\android\src\main\java\com\reactnativecommunity\art\ARTGroupShadowNode.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: D:\ememberProject\eMembership-React-Native\node_modules\@react-native-async-storage\async-storage\android\src\main\java\com\reactnativecommunity\asyncstorage\AsyncStorageModule.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: D:\ememberProject\eMembership-React-Native\node_modules\@react-native-async-storage\async-storage\android\src\main\java\com\reactnativecommunity\asyncstorage\AsyncStoragePackage.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: D:\ememberProject\eMembership-React-Native\node_modules\react-native-camera\android\src\main\java\com\google\android\cameraview\Camera2.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: D:\ememberProject\eMembership-React-Native\node_modules\@react-native-firebase\messaging\android\src\main\java\io\invertase\firebase\messaging\ReactNativeFirebaseMessagingModule.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: D:\ememberProject\eMembership-React-Native\node_modules\react-native-html-to-pdf\android\src\main\java\android\print\PdfConverter.java uses or 
overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: D:\ememberProject\eMembership-React-Native\node_modules\react-native-safe-area-context\android\src\main\java\com\th3rdwave\safeareacontext\InsetsChangeEvent.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: D:\ememberProject\eMembership-React-Native\node_modules\react-native-share\android\src\main\java\cl\json\RNSharePathUtil.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
e: D:\ememberProject\eMembership-React-Native\node_modules\react-native-screens\android\src\main\java\com\swmansion\rnscreens\CustomSearchView.kt: (8, 76): Type mismatch: inferred type is Context? but Context was expected
Note: D:\ememberProject\eMembership-React-Native\node_modules\react-native-svg\android\src\main\java\com\horcrux\svg\VirtualView.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':react-native-screens:compileDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction
   > Compilation error. See log for more details

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. 

* Get more help at https://help.gradle.org

BUILD FAILED in 1m 33s

    at makeError (D:\ememberProject\eMembership-React-Native\node_modules\execa\index.js:174:9)
    at D:\ememberProject\eMembership-React-Native\node_modules\execa\index.js:278:16
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async runOnAllDevices (D:\ememberProject\eMembership-React-Native\node_modules\@react-native-community\cli-platform-android\build\commands\runAndroid\runOnAllDevices.js:109:5)
    at async Command.handleAction (D:\ememberProject\eMembership-React-Native\node_modules\@react-native-community\cli\build\index.js:192:9)
info Run CLI with --verbose flag for more details.
PS D:\ememberProject\eMembership-React-Native>

android/build.gradle配置

buildscript {
    ext {
        buildToolsVersion = "30.0.2"
        minSdkVersion = 21
        compileSdkVersion = 29
        targetSdkVersion = 31
        ndkVersion = "21.4.7075529"
        kotlin_version = '1.7.0'
    }
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath("com.android.tools.build:gradle:4.2.2")
        classpath 'com.google.gms:google-services:4.3.10'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.0"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        mavenCentral()
        mavenLocal()
        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")
        }

        google()
        maven { url 'https://www.jitpack.io' }
    }
}

package.json依赖

"dependencies": {
  "@react-native-async-storage/async-storage": "^1.16.0",
  "@react-native-community/clipboard": "^1.5.1",
  "@react-native-community/masked-view": "^0.1.11",
  "@react-native-community/netinfo": "^7.1.5",
  "@react-native-firebase/app": "^14.12.0",
  "@react-native-firebase/messaging": "^14.2.2",
  "@react-navigation/drawer": "^6.1.8",
  "@react-navigation/native": "^6.0.6",
  "@react-navigation/stack": "^6.0.11",
  "android": "^0.0.8",
  "axios": "^0.24.0",
  "linkify-html": "^3.0.5",
  "moment": "^2.29.1",
  "react": "17.0.2",
  "react-native": "0.69.1",
  "react-native-barcode-builder": "^2.0.0",
  "react-native-camera": "^4.2.1",
  "react-native-collapsible": "^1.6.0",
  "react-native-config": "^1.4.11",
  "react-native-dots-pagination": "^0.2.0",
  "react-native-flash-message": "^0.2.0",
  "react-native-floating-action": "^1.22.0",
  "react-native-geolocation-service": "^5.3.0-beta.4",
  "react-native-gesture-handler": "^2.0.0",
  "react-native-gradient-buttons": "^2.0.2",
  "react-native-html-to-pdf": "^0.12.0",
  "react-native-hyperlink": "^0.0.19",
  "react-native-image-pan-zoom": "^2.1.12",
  "react-native-linear-gradient": "^2.5.6",
  "react-native-marquee": "^0.3.2",
  "react-native-material-menu": "^2.0.0",
  "react-native-modal": "^13.0.1",
  "react-native-open-maps": "^0.4.0",
  "react-native-pager-view": "^5.4.9",
  "react-native-permissions": "^3.2.0",
  "react-native-phone-number-input": "^2.1.0",
  "react-native-qrcode-scanner": "^1.5.4",
  "react-native-qrcode-svg": "^6.1.2",
  "react-native-reanimated": "^2.2.4",
  "react-native-render-html": "^6.3.1",
  "react-native-safe-area-context": "^3.3.2",
  "react-native-screens": "^3.14.0",
  "react-native-share": "^7.3.5",
  "react-native-splash-screen": "^3.3.0",
  "react-native-sqlite-storage": "^6.0.1",
  "react-native-svg": "^12.1.1",
  "react-native-unimodules": "^0.14.10",
  "react-native-uuid": "^2.0.1",
  "react-native-viewpager": "^0.2.13",
  "react-native-wallet": "^1.0.8",
  "react-native-webview": "^11.15.0",
  "rn-fetch-blob": "^0.12.0"
},
"devDependencies": {
  "@babel/core": "^7.12.9",
  "@babel/runtime": "^7.12.5",
  "@react-native-community/eslint-config": "^2.0.0",
  "babel-jest": "^26.6.3",
  "eslint": "7.14.0",
  "jest": "^26.6.3",
  "metro-react-native-babel-preset": "^0.66.2",
  "react-test-renderer": "17.0.2"
},
"jest": {
  "preset": "react-native"
}

环境版本

eMembershipCard: '0.0.4',
npm: '9.1.3',
node: '19.1.0',
v8: '10.7.193.20-node.19',
uv: '1.44.2',
zlib: '1.2.11',
brotli: '1.0.9',
ares: '1.18.1',
modules: '111',
nghttp2: '1.47.0',
napi: '8',
llhttp: '8.1.0',
openssl: '3.0.7+quic',
cldr: '42.0',
icu: '72.1',
tz: '2022e',
unicode: '15.0',
ngtcp2: '0.8.1',
nghttp3: '0.7.0'

解决方向

  1. 升级react-native-screens版本:当前3.14.0版本可能与Kotlin 1.7.0不兼容,升级到适配版本:
npm install react-native-screens@latest --save
  1. 临时修改空安全处理:直接编辑node_modules/react-native-screens/android/src/main/java/com/swmansion/rnscreens/CustomSearchView.kt第8行,给上下文添加非空断言!!,但该方法在依赖更新后会失效。
  2. 降低Kotlin版本:将android/build.gradle中kotlin_version改为1.6.21,同步修改kotlin-gradle-plugin版本,匹配React Native 0.69.x的默认兼容版本。
  3. 清理构建缓存:
cd android && ./gradlew clean
cd .. && rm -rf node_modules package-lock.json
npm install

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 17:40:22