ReactNative0.81版本发布

1,265 阅读5分钟

本版本新增 Android 16(API 36)支持,同时包含一系列稳定性改进和 bug 修复,还首次提供了实验性支持,可通过预编译技术显著加快 iOS 构建速度。([reactnative.dev][1])

亮点:

  • 支持 Android 16 React Native 0.81 默认将目标平台设置为 Android 16(API 级别 36)。由于 Google 要求应用全面启用 edge-to-edge 渲染(无法关闭),因此内置的 <SafeAreaView> 组件也被弃用并将在未来移除。建议迁移至 react-native-safe-area-context 等更通用的方案。现在默认启用了预测性后退手势(predictive back gesture),需注意如有自定义原生后退逻辑的项目可能需要调整。([reactnative.dev][1]) 针对大型屏幕设备(如平板或折叠屏),Google 要求适配响应式布局。虽然暂可选择跳过,但强烈建议测试并适配。([reactnative.dev][1]) 此外,自 2025 年 11 月 1 日起,所有发布至 Google Play 的新应用及更新(针对 Android 15 及以上)必须满足 16 KB 页面大小要求。React Native 已符合该要求,但请确保所有本地库及第三方组件也符合。([reactnative.dev][1])

  • 弃用 <SafeAreaView> 基于其在 Android Edge-to-Edge 渲染方面的局限性,官方已弃用该组件,并将在未来版本完全移除,推荐使用更灵活的社区解决方案。([reactnative.dev][1])

  • 社区维护的 JavaScriptCore(JSC)支持 React Native 不再内置 JSC 引擎;如果您仍依赖 JSC,请自行安装社区维护版本。使用 Hermes 引擎的项目不受影响。([reactnative.dev][1])

  • 实验性:iOS 预编译构建 本次版本引入与 Expo 合作开发的预编译 iOS 构建,可将项目中 React Native 的编译时间缩短 高达 10 倍。开启方式为在运行 pod install 时设置环境变量 RCT_USE_RN_DEP=1 RCT_USE_PREBUILT_RNCORE=1。此功能仍属实验阶段,暂不支持在 Xcode 26 Beta 中使用(可通过设置 SWIFT_ENABLE_EXPLICIT_MODULES = NO 临时解决)。([reactnative.dev][1], [Expo][2])

重大变更(Breaking Changes):

  • Node.js 最低要求提高到 20.19.4 或以上版本。([reactnative.dev][1])
  • Xcode 最低版本要求提升至 16.1 或以上。([reactnative.dev][1])
  • Metro 打包器行为调整:若您在 Community CLI 项目的 metro.config.js 中使用了 resolveRequestgetModulesRunBeforeMainModule,这些选项现在会被 Metro 生效,之前的无效行为已修正,可能需删除这些配置以恢复旧行为。([reactnative.dev][1])
  • 改进 JavaScript 错误报告:DevTools 现在会显示原始错误信息、原因(cause)以及组件“Owner Stack”,有助于调试。但这可能影响现有错误上报逻辑,建议相应更新后端日志处理方式。([reactnative.dev][1])
  • 新增宏 RN_SERIALIZABLE_STATE:用于支持 New Architecture 中组件的可序列化状态。若您作为库作者使用自定义 CMake 配置,需调用 target_compile_reactnative_options(yourLibName PRIVATE) 添加该宏,否则可能编译失败。([reactnative.dev][1])

总结(要点整理)

项目说明
发布日期 & 版本React Native 0.81,发布于 2025 年 8 月 12 日
新增功能支持 Android 16(API 36);实验性 iOS 预编译构建(最高 10× 编译速度提升)
弃用与迁移弃用 <SafeAreaView>,推荐使用社区方案;JSC 不再内置,需通过社区包维护
兼容性要求Node.js ≥20.19.4;Xcode ≥16.1
兼容性提醒Metro 配置选项行为变化;错误报告机制增强;需要处理新增序列化宏以避免编译问题
发布时间节点Google Play 上传政策变更(16KB 页面支持)将于 2025 年 11 月 1 日执行,建议开发者提前适配

升级可能遇到的问题

如果遇到如下报错

The project is using an incompatible version (AGP 8.11.0) of the Android Gradle plugin. Latest supported version is AGP 8.8.0

你这个是 Android Gradle Plugin (AGP) 版本和当前开发环境/工具链不匹配 的典型问题。

错误信息意思是:

你的项目用了 AGP 8.11.0,但是当前 Gradle / Android Studio / React Native 等环境最高只支持到 AGP 8.8.0


解决方式有两条路

方案 1:降级 AGP 到 8.8.0(最稳)

修改项目根目录的 build.gradle(不是 app/build.gradle):

plugins {
    id "com.android.application" version "8.8.0" apply false
    id "com.android.library" version "8.8.0" apply false
    // 其他插件...
}

或者如果你用的是 buildscript 方式:

buildscript {
    dependencies {
        classpath "com.android.tools.build:gradle:8.8.0"
    }
}

然后同步:

./gradlew clean build

方案 2:升级 Gradle + 环境支持 AGP 8.11.0

如果你想保留 8.11.0:

  1. 升级 Gradle Wrapper

    ./gradlew wrapper --gradle-version 8.14.3
    
  2. 升级 Android Studio 到最新稳定版(或 Canary,支持 AGP 8.11.0)。

  3. 确保 gradle.properties 里启用了兼容选项(如果必要)。


💡 建议

  • React Native 0.81 官方在 Changelog 里明确建议 AGP 8.8.0,所以如果你是在升级 RN 后出现的这个问题,建议走 方案 1 降级,避免兼容性坑。
  • 降级后,Gradle 版本保持在 8.8~8.10 之间比较稳。

一站式解决方案

  • 新版本 RN 的 AGP 版本是在 settings.gradlepluginManagement 中管理的,不是在 build.gradle
  • 你现在用的 RN Gradle 插件版本要求 AGP ≤ 8.8.0,但是你的环境里可能全局或者 Gradle 缓存里还在用 8.11.0。
  • 解决方法是显式声明 AGP 版本并且放到正确位置。

你可以这样改 settings.gradle

pluginManagement {
    repositories {
        maven { url 'https://maven.aliyun.com/repository/public' } // 阿里云加速
        gradlePluginPortal()
        google()
        mavenCentral()
        maven {
            url "$rootDir/../node_modules/react-native/android"
        }
    }
    plugins {
        id "com.android.application" version "8.8.0"
        id "com.android.library" version "8.8.0"
        id "org.jetbrains.kotlin.android" version "1.9.24"
    }
    includeBuild("../node_modules/@react-native/gradle-plugin")
}
plugins {
    id("com.facebook.react.settings")
}
extensions.configure(com.facebook.react.ReactSettingsExtension) { ex ->
    ex.autolinkLibrariesFromCommand()
}
rootProject.name = 'RnDemo81'
include ':app'
includeBuild('../node_modules/@react-native/gradle-plugin')

同时,如果是国内用户使用,建议添加阿里云加速。

这样:

  • 强制 AGP 用 8.8.0
  • 不会再从默认仓库下载 8.11.0
  • 和 RN 0.81 的 @react-native/gradle-plugin 匹配