React Native 0.61.5安卓应用禁用屏幕旋转失效求助
解决方案:禁用Android屏幕旋转并避免应用重启
针对你的问题(React Native 0.61.5 + react-navigation 4.x,安卓平台旋转导致应用重启),核心问题在于你仅修改了activity-alias的配置,但实际运行的MainActivity未做对应设置,以下是修复步骤:
1. 修正AndroidManifest.xml配置
找到AndroidManifest.xml中.MainActivity的标签(不是activity-alias),添加以下关键属性:
<activity android:name=".MainActivity" android:screenOrientation="portrait" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|smallestScreenSize|screenLayout|uiMode" <!-- 保留原有的其他属性 --> >
screenOrientation="portrait":强制锁定竖屏- 扩展
configChanges属性,覆盖所有可能触发配置变更的场景,避免系统重启Activity
你的activity-alias配置可以保留,但必须确保MainActivity的配置正确——因为activity-alias仅作为启动入口,实际运行的是目标Activity。
2. 代码层面强制锁定方向(可选但更可靠)
安装适配RN 0.61.5的屏幕方向锁定库:
npm install react-native-orientation-locker@1.1.8 --save # 或 yarn add react-native-orientation-locker@1.1.8
RN 0.60+支持自动链接,无需额外配置。在应用入口(如App.js)添加锁定逻辑:
类组件写法
import Orientation from 'react-native-orientation-locker'; class App extends Component { componentDidMount() { Orientation.lockToPortrait(); } // 其他代码... }
函数组件写法
import Orientation from 'react-native-orientation-locker'; import { useEffect } from 'react'; function App() { useEffect(() => { Orientation.lockToPortrait(); }, []); // 其他代码... }
3. 清理缓存并重新编译
执行以下命令确保配置生效:
# 清理安卓构建缓存 cd android && ./gradlew clean # 返回项目根目录重启RN服务 cd .. && npx react-native start --reset-cache # 重新安装应用 npx react-native run-android
排查额外问题
- 检查是否有第三方库(如媒体播放器、地图)强制修改屏幕方向,需针对性禁用其旋转逻辑
- 确认设备系统设置中未强制开启自动旋转(部分设备的系统级设置可能覆盖应用配置)
内容的提问来源于stack exchange,提问作者Taha Ateş
相关产品推荐
相关产品推荐

