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

Expo React Native构建报错:expo-camera未指定compileSdkVersion

解决Expo React Native构建时expo-camera的compileSdkVersion未指定错误

问题重现

构建Expo RN应用时触发Gradle报错:

脚本'/DELIBERATELY_HIDDEN/node_modules/expo-modules-autolinking/scripts/android/autolinking_implementation.gradle'第377行出现问题,评估项目':expo'失败,具体为配置':expo-camera'项目时出错,提示未指定compileSdkVersion,且无法获取'release'属性。

环境:expo-camera 14.1.3、react 18.2.0、react native 0.73.6、expo 50.0.0,此前可正常构建,未改动版本,所有相关build.gradle已指定compileSdkVersion,不想修改node_modules内容。

解决方案

1. 彻底清理缓存

执行以下命令清除各类缓存,避免旧配置干扰:

# 清理Android Gradle缓存
cd android && ./gradlew clean && cd ..

# 清理Expo预构建缓存
npx expo prebuild --clean

# 重置依赖
rm -rf node_modules package-lock.json
npm install

2. 强制统一子模块compileSdkVersion(无需修改node_modules)

在项目级android/build.gradle中添加全局子项目配置,强制所有依赖模块使用项目定义的compileSdkVersion:

buildscript {
    ext {
        // 确保这些版本与Expo 50兼容(Expo 50对应compileSdk 34)
        compileSdkVersion = 34
        buildToolsVersion = "34.0.0"
        minSdkVersion = 21
        targetSdkVersion = 34
    }
    // ... 其他buildscript配置
}

// 新增:强制子模块使用全局版本
subprojects {
    afterEvaluate { project ->
        if (project.hasProperty('android')) {
            android {
                compileSdkVersion rootProject.ext.compileSdkVersion
                buildToolsVersion rootProject.ext.buildToolsVersion
                // 可选:统一minSdk和targetSdk
                defaultConfig {
                    minSdkVersion rootProject.ext.minSdkVersion
                    targetSdkVersion rootProject.ext.targetSdkVersion
                }
            }
        }
    }
}

3. 验证Expo插件配置

检查app.json/app.config.js中expo-camera插件是否正确配置:

{
  "expo": {
    "plugins": [
      [
        "expo-camera",
        {
          "cameraPermission": "Allow $(PRODUCT_NAME) to access your camera",
          "microphonePermission": "Allow $(PRODUCT_NAME) to access your microphone"
        }
      ]
    ],
    // ... 其他Expo配置
  }
}

4. 确认Gradle版本兼容性

Expo 50要求特定的Gradle和AGP版本,检查android/gradle/wrapper/gradle-wrapper.properties:

distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-all.zip

同时确认android/build.gradle中的AGP版本:

dependencies {
    classpath("com.android.tools.build:gradle:8.2.0")
    // ... 其他依赖(如expo、kotlin插件)
}

5. 处理VS Code的.settings提示(可选)

如果VS Code提示Missing Gradle project configuration folder: .settings,可以:

  • 用Android Studio打开项目,它会自动生成.settings目录并同步Gradle
  • 或手动在android目录下创建.settings空文件夹

问题原因分析

该报错通常是缓存导致的配置不一致,或是autolinking脚本读取模块配置时出现异常。通过强制统一子模块的compileSdkVersion,既能覆盖可能存在的模块配置冲突,又无需修改node_modules内的文件,避免重新安装依赖后配置失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 14:02:31