离子构建android的错误:copyFileSync:无法写入dest文件

问题描述 投票:13回答:9

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

cp:copyFileSync:无法写入dest文件(代码= ENOENT):/ Users / mehdigriche / 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]皮特说完了

cordova ionic-framework ionic3 ionic-native
9个回答
20
投票

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

  1. 将文件patch-android-studio-check.js放在项目的目录钩子中
  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

15
投票

你的命令:离子cordova构建android是错误的 我想你的意思是:离子cordova构建android

但也尝试:离子cordova构建 - 释放android

我有同样的错误,经过2天的调试后我找到了一个解决方案:

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

当前位置对象在我的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这样的插件,所以我删除它并构建应用程序。

我希望它有所帮助


8
投票

解决这个问题

cp:copyFileSync:无法写入dest文件(代码= ENOENT):/ Users / mehdigriche / work / cam1 / test / platforms / android / res / xml / config.xml

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


6
投票

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

首先删除你的平台,

ionic cordova platform rm android

然后重新安装较低版本(6.3为我工作)

ionic cordova platform add [email protected]

4
投票

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

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

1
投票

注意关于dtmp的答案,使用hooks目录似乎已被弃用。使用'scripts'目录可能更合适。

当尝试使用离子2进行构建时,使用'hooks'目录会导致找不到钩子js。


1
投票
ionic cordova rm platform android

删除www和plugins文件夹

npm cache clean
npm install audit fix
ionic cordova build  android

0
投票

假设

Android的

这部分只是一个错字。

看看这个:https://github.com/ionic-team/ionic/issues/13702

这是一个已知的问题,尚未确定!


0
投票

如果你像我一样试图克服同样的问题并尝试一路写作解决方案但不是。试试这个解决方案

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

快乐的编码!

© www.soinside.com 2019 - 2024. All rights reserved.