ionic build android的错误:copyFileSync:无法写入目标文件

Posted

技术标签:

【中文标题】ionic build android的错误:copyFileSync:无法写入目标文件【英文标题】:ionic build android's Error : copyFileSync: could not write to dest file 【发布时间】: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 已完成

【问题讨论】:

您是否检查了错误中提到的文件的存在或权限? 我不应该只放这个链接,而是这个帖子为我修复了它:github.com/ionic-team/ionic-cli/issues/2835 【参考方案1】:

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

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

    将以下行添加到您项目的 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>
    

    删除插件目录:

    rm -rf plugins
    

    重新安装插件:

    ionic build
    

    重新安装平台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】:

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

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

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

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

编码愉快!

【讨论】:

【参考方案9】:
ionic cordova rm platform android

删除 www 和 plugins 文件夹

npm cache clean
npm install audit fix
ionic cordova build  android

【讨论】:

以上是关于ionic build android的错误:copyFileSync:无法写入目标文件的主要内容,如果未能解决你的问题,请参考以下文章

Ionic Cordova Build Android 期间面临错误

ionic4 build error Could not find plugin “proposal-numeric-separator”

ionic build android的错误:copyFileSync:无法写入目标文件

Ionic 2 RC0 和 Angular 2 最新的 Build android 错误(ngc:错误:遇到静态解析符号值的错误)

ionic2踩坑之ionic build android报错

Azure DevOps ionic Android Build 错误“Build-tool 31.0.0 is missing DX at /usr/local/lib/android/sdk/bu