You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Expo裸工作流构建Android失败:compileSdkVersion未识别+‘release’属性获取失败

Expo裸工作流构建Android失败:compileSdkVersion未识别+‘release’属性获取失败

嘿,我之前迁移Expo裸工作流项目到新电脑时,也碰到过几乎一模一样的Gradle报错,太懂这种明明配置了却不生效的憋屈感了!结合你的情况,我来拆解这两个问题的原因和实际解决办法:

问题1:明明定义了compileSdkVersion却提示未指定

这种情况大概率是Gradle脚本执行顺序或变量继承出了问题,试试这几个方向:

  • 调整ext变量的定义位置:你现在把ext块放在buildscript内部,但Expo的自动链接脚本可能在这个变量加载前就执行了。把ext块移到buildscript外面,变成全局变量:
    // 项目根目录的build.gradle
    ext {
        buildToolsVersion = findProperty('android.buildToolsVersion') ?: '34.0.0'
        minSdkVersion = Integer.parseInt(findProperty('android.minSdkVersion') ?: '23')
        compileSdkVersion = Integer.parseInt(findProperty('android.compileSdkVersion') ?: '34')
        targetSdkVersion = Integer.parseInt(findProperty('android.targetSdkVersion') ?: '34')
        kotlinVersion = findProperty('android.kotlinVersion') ?: '1.8.10'
        ndkVersion = "25.1.8937393"
    }
    
    buildscript {
        // 原来的buildscript内容(比如dependencies、repositories)
    }
    
  • 让Expo自动注入配置:在app.json里明确指定Android的SDK版本,然后重新执行expo prebuild,让Expo帮你同步所有模块的配置:
    {
      "expo": {
        "android": {
          "compileSdkVersion": 34,
          "targetSdkVersion": 34,
          "minSdkVersion": 23
        }
      }
    }
    
  • 补全local.properties配置:新电脑的android/local.properties可能缺失相关属性,手动加一行:android.compileSdkVersion=34,Gradle会优先读取这个文件的配置。

问题2:Could not get unknown property 'release' for SoftwareComponentContainer

这个错误基本和Android Gradle插件(AGP)与Gradle版本不兼容,或者依赖模块未正确应用Gradle插件有关:

  • 对齐AGP和Gradle版本:React Native 0.73.6推荐搭配AGP 7.4.2和Gradle 7.5,你可以调整这两个版本:
    // 根目录build.gradle的buildscript依赖
    classpath("com.android.tools.build:gradle:7.4.2")
    
    // gradle/wrapper/gradle-wrapper.properties
    distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
    
  • 重新安装依赖:新电脑上的依赖可能安装不完整,导致某些模块(比如expo-application)没正确应用com.android.library插件。删除node_modulespackage-lock.json(或yarn.lock),然后重新执行npm install
  • 调整自动链接脚本的执行时机:你自定义了settings.gradle,可能useExpoModules()的调用太早了。把apply from: new File(...)useExpoModules()移到settings.gradle的末尾,确保所有依赖解析配置完成后再加载Expo的自动链接脚本。

额外排查小技巧

  • 执行./gradlew cleanBuildCache彻底清理Gradle缓存,再重新构建。
  • 确认新电脑的Android SDK Manager里已经安装了compileSdkVersion 34的SDK包。
  • 检查Firebase版本是否和当前React Native/Expo版本兼容,你用的21.14.0是没问题的,但可以试试升级到最新兼容版。

希望这些方法能帮你顺利解决问题!

内容来源于stack exchange

火山引擎 最新活动