Cordova - Config. xml - директива файла ресурсов не работает - PullRequest
0 голосов
/ 12 января 2020

У меня есть резервная копия. xml файл, расположенный в моей директории Cordova root. Этот файл используется для регулирования функции автоматического резервного копирования Android6 + и определен в моем файле AndroidManifest. xml как

android:fullBackupContent="@xml/backup"

в моем файле конфигурации. 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.

Копирование резервной копии вручную. xml из моего проекта root на платформы / android /app/src/main/res/xml/backup.xml решает проблему, и моя сборка завершается. Однако я хочу найти правильный способ скопировать мою резервную копию. xml из root (где ее можно отследить с помощью GIT) вместо использования этой копии "hack".

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

PS: я пытаюсь изменить правила автоматического резервного копирования в соответствии с предложением плагина cordova.plugins.diagnosti c. с https://www.npmjs.com/package/cordova.plugins.diagnostic - Чтобы исключить данные этого плагина, добавьте следующее правило к своим XML правилам резервного копирования: <exclude domain="sharedpref" path="Diagnostic.xml"/>, но никакая дополнительная информация о том, как это сделать, не приведена в документации (так что если Я на неправильном пути, пожалуйста, поправьте меня).

1 Ответ

1 голос
/ 24 апреля 2020

У меня была похожая проблема, после длительной отладки я обнаружил, что тег ** копируется только в том случае, если файл резервной копии имеет другой размер ИЛИ, если дата изменения исходного файла резервной копии новее, чем в целевом месте назначения.

Извлечение выдержки из кода, который я нашел:

// 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;
}

Если исходный файл резервной копии имеет тот же размер и старше, то вам необходимо обновить дату изменения. Это можно сделать с помощью команды типа (на ма c)

touch -m backup.xml

И вы запускаете cordova prepare , а затем файл должен быть скопирован.

Я знаю, что это не идеально и не странно. В документации также не указано такое требование. Так что это определенно нужно исправить. О, кстати, это уже присутствовало в предыдущих версиях

...