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