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 匹配
相关推荐
歪歪1002 天前
React Native开发Android&IOS流程完整指南
android·开发语言·前端·react native·ios·前端框架
歪歪1002 天前
React Native开发有哪些优势和劣势?
服务器·前端·javascript·react native·react.js·前端框架
勤劳打代码2 天前
触类旁通 —— Flutter 与 React 对比解析
前端·flutter·react native
若梦plus2 天前
多端开发之React-Native原理浅析
前端·react native
XiaoSong2 天前
React Native 主题配置终极指南,一篇文章说透
前端·react native·react.js
程序员老刘3 天前
跨平台开发地图:客户端技术选型指南 | 2025年10月
flutter·react native·客户端
Cxiaomu3 天前
React Native 项目中 WebSocket 的完整实现方案
websocket·react native·react.js
少卿3 天前
react-native图标替换
前端·react native
少卿4 天前
React Native Vector Icons 安装指南
前端·react native
前端鳄鱼崽4 天前
【react-native-inspector】全网唯一开源 react-native 点击组件跳转到编辑器
前端·react native·react.js