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

meh*_*che 15 cordova ionic-framework ionic-native ionic3

当我使用命令时: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]皮特说完了

dtm*_*tmp 22

将此挂钩添加到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>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 删除插件目录:

    rm -rf plugins
    
    Run Code Online (Sandbox Code Playgroud)
  4. 重新安装插件:

    ionic build
    
    Run Code Online (Sandbox Code Playgroud)
  5. 重新安装平台android:

    cordova platform rm android
    cordova platform add android@latest
    
    Run Code Online (Sandbox Code Playgroud)


Apo*_*his 15

你的命令:离子cordova build androird是错误的
我认为你的意思是:离子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'
};
Run Code Online (Sandbox Code Playgroud)

在这些变化之后,我能够构建我的应用程序.我也有错误,因为像cordova-sqlite-storage这样的插件,所以我删除它并构建应用程序.

我希望它有所帮助


Bla*_*mba 8

解决这个问题

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

创建一个命名的文件夹xmlplatforms/android/res


zue*_*est 6

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

首先删除你的平台,

ionic cordova platform rm android
Run Code Online (Sandbox Code Playgroud)

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

ionic cordova platform add android@6.3.0
Run Code Online (Sandbox Code Playgroud)


小智 5

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

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

  • 当您进行此重置时,我会保留“www”文件夹!您可能在那里有重要的资产文件。:) (4认同)
  • 它们已经存在于 src 文件夹中,因此无需担心,尽管删除 www 不会有任何影响 @xke (4认同)