ReactNative0.81版本发布

本版本新增 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 日执行,建议开发者提前适配

升级可能遇到的问题

如果遇到如下报错

csharp 复制代码
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):

groovy 复制代码
plugins {
    id "com.android.application" version "8.8.0" apply false
    id "com.android.library" version "8.8.0" apply false
    // 其他插件...
}

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

groovy 复制代码
buildscript {
    dependencies {
        classpath "com.android.tools.build:gradle:8.8.0"
    }
}

然后同步:

bash 复制代码
./gradlew clean build

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

如果你想保留 8.11.0:

  1. 升级 Gradle Wrapper

    bash 复制代码
    ./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

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 匹配
相关推荐
pe7er4 小时前
Reactnative 项目开发(最佳?)实践
react native
每天开心6 小时前
从零开始:使用 Expo 构建你的第一个 React Native 应用
react native
冯志浩6 小时前
React Native 状态管理 - useState
react native·掘金·金石计划
木西1 天前
React Native DApp 开发全栈实战·从 0 到 1 系列(expo-router)
react native·web3·app
pe7er2 天前
React Native 多环境配置全攻略:环境变量、iOS Scheme 和 Android Build Variant
前端·react native·react.js
麦客奥德彪6 天前
解决 React Native iOS 与 OpenHarmony 开发环境冲突问题
react native·ios·harmonyos
尘云逸9 天前
将开发的软件安装到手机:环境配置、android studio设置、命令行操作
android·react native·adb·智能手机·gradle·android studio·android-studio
少恭写代码10 天前
duxapp中主题系统是如何实现动态切换的
react native·小程序·移动开发·taro·duxapp