uni-app 安卓11一体机bug fchown failed: Operation not permitted
uni-app 安卓11一体机bug fchown failed: Operation not permitted
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows 10 家庭中文版 | 3.3.13 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
手机系统:Android
手机系统版本号:Android 11
手机机型:终端一体机
页面类型:nvue
vue版本:vue2
打包方式:云端
操作步骤:
- 重新打自定义包还是会这样
预期结果:
- 想正常调试
实际结果:
- 报错, 无法同步,跳转到该页面的时候直接白屏
bug描述:
真机自定义调试的时候报以下错误:
failed to copy 'F:\project\eye\eye-project-0406\unpackage\dist\dev\app-plus/pages/testFace/testFace.js' to '/sdcard/Android/data/uni.UNI095D11E/apps/UNI095D11E/www/pages/testFace/testFace.js': fchown failed: Operation not permitted
7 回复
有官方人员吗?这个问题我查了好多了,论坛也有很多人咨询
已反馈
我目前用的方式是:如果出现无法同步问题,就手动卸载app重新在HBX里运行一下就好了。 但是还是太麻烦了,希望官方能重视解决一下。如果后续有人看到这个问题,可以试用我的方法先调试。
这个方法我使用过了,偶尔可以,但是还是会出现无法同步的问题
问题又出现了,还是无法同步的问题。
在 uni-app 开发中,如果你在安卓 11 一体机上遇到 fchown failed: Operation not permitted
的错误,这通常与文件系统权限问题有关。以下是一些可能的原因和解决方案:
1. 文件系统权限问题
- 原因: 安卓 11 引入了更严格的存储权限管理(Scoped Storage),应用程序对文件系统的访问权限受到了更多限制。
- 解决方案:
- 确保你的应用在
AndroidManifest.xml
中正确声明了存储权限:<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- 在运行时请求存储权限:
// 使用 uni-app 提供的 API 请求权限 uni.authorize({ scope: 'scope.writePhotosAlbum', success() { console.log('授权成功'); }, fail() { console.log('授权失败'); } });
- 确保你的应用在
2. Scoped Storage 限制
- 原因: 安卓 11 引入了 Scoped Storage,限制了应用对文件系统的直接访问,尤其是在外部存储中。
- 解决方案:
- 使用
MediaStore
API 来访问共享存储中的文件。 - 如果你必须访问应用私有目录,确保你使用的是应用的私有目录(
getFilesDir()
或getCacheDir()
)。
- 使用
3. 文件路径问题
- 原因: 如果你尝试在外部存储中创建或修改文件,可能会遇到权限问题。
- 解决方案:
- 确保你使用的文件路径是应用私有目录,而不是外部存储的公共目录。
- 例如,在 uni-app 中,你可以使用
plus.io
API 来获取应用私有目录:const privateDir = plus.io.PRIVATE_WWW;