本版本新增 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
中使用了resolveRequest
或getModulesRunBeforeMainModule
,这些选项现在会被 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:
-
升级 Gradle Wrapper
bash./gradlew wrapper --gradle-version 8.14.3
-
升级 Android Studio 到最新稳定版(或 Canary,支持 AGP 8.11.0)。
-
确保
gradle.properties
里启用了兼容选项(如果必要)。
💡 建议:
- React Native 0.81 官方在 Changelog 里明确建议 AGP 8.8.0 ,所以如果你是在升级 RN 后出现的这个问题,建议走 方案 1 降级,避免兼容性坑。
- 降级后,
Gradle
版本保持在 8.8~8.10 之间比较稳。
一站式解决方案
- 新版本 RN 的 AGP 版本是在
settings.gradle
的pluginManagement
中管理的 ,不是在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
匹配