【问题标题】:ionic build android's Error : copyFileSync: could not write to dest fileionic build android的错误:copyFileSync:无法写入目标文件
【发布时间】:2018-06-08 22:13:27
【问题描述】:

当我使用命令时:ionic cordova build android 这是我得到的:

cp: copyFileSync: 无法写入目标文件 (code=ENOENT):/Users/mehdiriche/work/cam1/test/platforms/android/res/xml/config.xml

解析 /Users/mehdigriche/work/cam1/test/platforms/android/res/xml/config.xml 失败(节点:2306)UnhandledPromiseRejectionWarning:未处理的承诺 拒绝(拒绝 id:1):错误:ENOENT:没有这样的文件或目录, 打开 '/Users/mehdigriche/work/cam1/test/platforms/android/res/xml/config.xml'

[10:50:14] lint 已完成

【问题讨论】:

标签: cordova ionic-framework ionic3 ionic-native


【解决方案1】:

将此钩子添加到cordova项目:patch-android-studio-check.js

  1. 把文件patch-android-studio-check.js放到hooks目录下你的项目

  2. 将以下行添加到您项目的 config.xml 中:

    <platform name="android">
        <hook src="hooks/patch-android-studio-check.js" type="before_plugin_install" />
        <hook src="hooks/patch-android-studio-check.js" type="before_plugin_add" />
        <hook src="hooks/patch-android-studio-check.js" type="before_build" />
        <hook src="hooks/patch-android-studio-check.js" type="before_run" />
        <hook src="hooks/patch-android-studio-check.js" type="before_plugin_rm" />
    </platform>
    
  3. 删除插件目录:

    rm -rf plugins
    
  4. 重新安装插件:

    ionic build
    
  5. 重新安装平台android:

    cordova platform rm android
    cordova platform add android@latest
    

【讨论】:

    【解决方案2】:

    您的命令:ionic cordova build android 错误
    我想你的意思是:ionic cordova build android

    但也可以试试:ionic cordova build --release android

    我遇到了同样的错误,经过 2 天的调试,我找到了适合我的解决方案:

    在目录:platforms/android/cordova 我在文件 Api.js 中更新了位置对象,因为路径不正确。

    当前位置对象在我的 Api.js 中如下所示:

        this.locations = {
        root: self.root,
        www: path.join(self.root, 'assets/www'),
        res: path.join(self.root, 'res'),
        platformWww: path.join(self.root, 'platform_www'),
        configXml: path.join(self.root, 'app/src/main/res/xml/config.xml'),
        defaultConfigXml: path.join(self.root, 'cordova/defaults.xml'),
        strings: path.join(self.root, 'app/src/main/res/values/strings.xml'),
        manifest: path.join(self.root, 'app/src/main/AndroidManifest.xml'),
        build: path.join(self.root, 'build'),
        javaSrc: path.join(self.root, 'app/src/main/java/'),
        // NOTE: Due to platformApi spec we need to return relative paths here
        cordovaJs: 'bin/templates/project/assets/www/cordova.js',
        cordovaJsSrc: 'cordova-js-src'
    };
    

    在这些更改之后,我能够构建我的应用程序。 由于cordova-sqlite-storage之类的插件,我也遇到了错误,所以我删除了它并构建了应用程序。

    希望对你有帮助

    【讨论】:

    • 我已经尝试过了,但没有成功很抱歉,当我使用 ionic 1 构建时一切正常,一切顺利,但是当我使用 ionic 3 时,它也给了我这个问题。平台文件夹,当我使用它修复的 ionic 1 项目中的另一个文件夹时
    【解决方案3】:

    解决这个问题

    cp: copyFileSync: 无法写入目标文件 (code=ENOENT):/Users/mehdiriche/work/cam1/test/platforms/android/res/xml/config.xml

    platforms/android/res中创建一个名为xml的文件夹

    【讨论】:

      【解决方案4】:

      显然,添加android +7时某些文件没有正确生成,所以我通过以下方式解决了这个问题:

      首先删除您的平台,

      ionic cordova platform rm android
      

      然后重新安装较低版本(6.3 对我有用)

      ionic cordova platform add android@6.3.0
      

      【讨论】:

      • @Vivek Android 7+ 破坏了很多东西,所以如果您时间紧迫并且找不到替代插件,现在回滚到 6.4.0 会更容易。
      【解决方案5】:

      我今天早上遇到了同样的问题,我的(相当激烈的)解决方案是这样的:

      1. 移除平台:
      ionic cordova platform rm android
      
      1. 从您的应用程序文件夹中删除以下文件夹:platforms,plugins & www
      2. 通过运行确保您的依赖项可用:npm install
      3. 重新添加平台,此步骤将重新创建上面步骤2中删除的文件夹:
      ionic cordova platform add android
      
      1. 最后,构建您的应用程序:
      ionic cordova build android
      

      【讨论】:

      • 当您进行此重置时,我会保留“www”文件夹!您可能在那里有重要的资产文件。 :)
      • 它们已经存在于 src 文件夹中,因此无需担心,尽管删除 www 不会有任何影响 @xke
      • 这取决于您的 Ionic 版本 - 对于 Ionic v1 项目,您不应该删除“www”文件夹!
      【解决方案6】:

      注意 dtmp 的答案,似乎不推荐使用 hooks 目录。使用 'scripts' 目录可能更合适。

      尝试使用 ionic 2 进行构建时,使用“钩子”目录会导致找不到钩子 js。

      【讨论】:

        【解决方案7】:

        假设

        安卓

        这里的部分只是一个错字。

        检查一下: https://github.com/ionic-team/ionic/issues/13702

        这是一个已知问题,尚未修复!

        【讨论】:

          【解决方案8】:

          如果您像我一样试图克服相同的问题并尝试一直写为解决方案,但不是。试试这个解决方案;

          1. 打开项目文件夹的project.json 文件。
          2. 添加此"android-versions" : "1.3.0" 依赖项。
          3. 运行 npm i。
          4. 运行命令sudo ionic cordova run android

          编码愉快!

          【讨论】:

            【解决方案9】:
            ionic cordova rm platform android
            

            删除 www 和 plugins 文件夹

            npm cache clean
            npm install audit fix
            ionic cordova build  android
            

            【讨论】:

              猜你喜欢
              • 2019-03-01
              • 1970-01-01
              • 2021-07-13
              • 1970-01-01
              • 2018-12-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多