app端横竖屏锁定必须在manifest.json的app-plus同级配对写死orientation:ios填数组["portrait-primary","portrait-secondary"]或["landscape-primary","landscape-secondary"],android填字符串"portrait"或"landscape";缺一不可且需清空unpackage后云打包,并手动验证info.plist和androidmanifest.xml是否同步更新。

manifest.json 里 app-plus.orientation 必须配对写死
App 端横竖屏锁定的“开关闸门”就在这里,没它,后续所有 JS 层调用都无效。iOS 和 Android 配置项互不兼容,必须分别写、同时写。
iOS 要填数组:["portrait-primary", "portrait-secondary"](竖屏)或 ["landscape-primary", "landscape-secondary"](横屏),单字符串 "portrait" 或 "landscape" 会被忽略;Android 只接受字符串:"portrait" 或 "landscape",填数组直接失效。
- 配置位置在
manifest.json的app-plus同级,不是嵌套在h5或mp-weixin下 - 必须清空
unpackage目录后再云打包或重制自定义基座,否则旧原生工程残留,配置不生效 -
pages.json里的pageOrientation对 App 端完全无效,写了等于没写
真机不生效?先查 Info.plist 和 AndroidManifest.xml 是否同步更新
manifest.json 只是编译指令,真正起作用的是生成的原生文件。云打包后必须手动验证这两个文件是否被正确注入。
iOS:打开 unpackage/res/ios/Info.plist,确认存在 UISupportedInterfaceOrientations 键,值为两个 string —— UIInterfaceOrientationPortrait(竖屏)或 UIInterfaceOrientationLandscapeLeft/UIInterfaceOrientationLandscapeRight(横屏)。
Android:打开 unpackage/res/android/AndroidManifest.xml,检查所有 <activity></activity> 标签是否都加了 android:screenOrientation="portrait" 或 "landscape";漏掉任意一个 activity,对应页面就会旋转异常。
- Android 8.0+ 若某 activity 在 nativeplugins 中硬编码了
screenOrientation,会覆盖 manifest.json 配置 - iOS 上若 Info.plist 缺失对应方向声明,
plus.screen.lockOrientation即使调用成功也会静默失败 - 不要依赖“运行到手机”调试,它不触发原生层更新,只跑 JS 层
plus.screen.lockOrientation 调用前必须确保 manifest 已生效
这个 API 不是独立开关,而是“在已允许的方向范围内做锁定”。如果 manifest 没放开竖屏,你调 plus.screen.lockOrientation('portrait-primary') 就会返回 { result: 'fail' }。
- 必须用
#ifdef APP-PLUS包裹,否则 H5 或小程序构建报错plus is not defined - 不能在
onLoad立即调用——部分 Android 机型 WebView 未就绪,建议在onShow里加setTimeout(() => { ... }, 800) - 返回值是 Promise,但失败时仍 resolve,务必检查
res.result === 'fail',不能只看是否进.then - 页面卸载前必须调
plus.screen.unlockOrientation(),否则其他页面可能被意外锁住
多端共存时别混用配置逻辑
App、H5、小程序三端的屏幕方向控制机制完全不同,强行用同一套配置只会失效。
H5 完全无视 manifest.json 和 pages.json 的方向字段,只能靠 CSS 媒体查询 + uni.onWindowResize 模拟;微信小程序必须在 pages.json 的页面 style 里写 "mp-weixin": { "pageOrientation": "portrait" },且 manifest.json 的 mp-weixin.settings.screenOrientation 也要同步配。
- App 端唯一可靠的路径是:manifest.json 原生配置 +
plus.screen.lockOrientation运行时加固 - 如果你的项目要同时上线 App 和小程序,
pageOrientation必须按平台包裹,不能裸写 - iOS 系统级限制极严,哪怕 manifest 和 Info.plist 都对了,若用户系统设置里禁用了应用旋转,
lockOrientation依然会失败











