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;
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!