Cordova - Config.xml - 资源文件指令不起作用

Cordova - Config.xml - resource-file directive not working

我的 Cordova 根目录中有一个 backup.xml 文件。此文件用于调节 Android6+ 的自动备份功能,并在我的 AndroidManifest.xml 文件中定义为

android:fullBackupContent="@xml/backup"

在我的 config.xml 文件中,我使用资源指令设置文件(期望它将文件复制到目标目录)。

<resource-file src="backup.xml" target="platforms/android/app/src/main/res/xml/backup.xml" />

但我的构建失败并出现以下错误。

  /work/Quasar_Projects/eSentry/src-cordova/platforms/android/app/build/intermediates/merged_manifests/release/AndroidManifest.xml:49: AAPT: error: resource xml/backup (aka za.co.securesa.esentry:xml/backup) not found.

  error: failed processing manifest.

从我的项目根目录手动复制 backup.xml 到 platforms/android/app/src/main/res/xml/backup.xml 解决了这个问题并且我的构建完成了。但是,我确实想找到从根目录(GIT 可以跟踪它的地方)复制我的 backup.xml 的正确方法,而不是使用此副本 "hack".

cordova --version - 9.0.0 (cordova-lib@9.0.1)

PS:我正在尝试按照 cordova.plugins.diagnostic 插件的建议更改自动备份规则。来自 https://www.npmjs.com/package/cordova.plugins.diagnostic - 要排除此插件的数据,请将以下规则添加到您的 XML 备份规则中:<exclude domain="sharedpref" path="Diagnostic.xml"/> 但文档中没有提供有关如何执行此操作的更多信息(因此,如果我走错了路,请指正)。

我有一个类似的问题,经过长时间的调试我发现标签**仅在备份文件大小不同或源备份文件的修改日期比目标备份文件更新时才复制目的地。

检查我找到的代码的摘录:

// Copy if the source has been modified since it was copied to the target, or if
// the file sizes are different. (The latter catches most cases in which something
// was done to the file after copying.) Comparison is >= rather than > to allow
// for timestamps lacking sub-second precision in some filesystems.
if (sourceStats.mtime.getTime() >= targetStats.mtime.getTime() ||
    sourceStats.size !== targetStats.size) {
  log('copy  ' + sourcePath + ' ' + targetPath + ' (updated file)');
  fs.copySync(sourceFullPath, targetFullPath);
  updated = true;
}

如果您的源备份文件大小相同且较旧,则您必须更新修改日期。这可以通过像 (on a mac)

这样的命令来完成
touch -m backup.xml

然后你 运行 cordova prepare 然后应该复制文件。

我知道这不理想和奇怪。该文档也没有说明这样的要求。所以这绝对是需要解决的问题。哦,顺便说一下,这已经存在于以前的版本中