我在项目的config.xml中添加了edit-config指令,现在每次运行“ cordova run android”时,都会从正在编辑的文件中删除另一行。
这是我的编辑配置:
<platform name="android">
...
<edit-config file="AndroidManifest.xml" mode="merge" target="/manifest/application">
<application android:allowBackup="false" />
</edit-config>
</platform>
如何在每次调用“ cordova run android”时都在不删除标签的情况下使它工作?
我怀疑这是一个错误,但是我没有找到它的其他实例-如果我对如何创建它有更好的了解,我很乐意报告它。
答案 0 :(得分:3)
当尝试使用<edit-config>
来更改<application>
元素上的属性时,我遇到了类似的问题。
当Cordova将<edit-config>
所做的更改应用到<application>
元素时,它似乎是自己的默认更改,即设置android:label
等。
我的解决方法是在Cordova完成更改后使用after_prepare
挂钩脚本来应用更改。
在您的情况下,您需要这样的东西:
config.xml
<platform name="android">
...
<hook type="after_prepare" src="scripts/set_allowBackup.js" />
...
</platform>
scripts / set_allowBackup.js:
#!/usr/bin/env node
var TARGET_ATTRIBUTE = 'android:allowBackup';
var TARGET_VALUE = TARGET_ATTRIBUTE+'="false"';
var TARGET_REGEX = new RegExp(TARGET_ATTRIBUTE+'="([^"]+)"');
module.exports = function(context) {
var fs = context.requireCordovaModule('fs'),
path = context.requireCordovaModule('path');
var platformRoot = path.join(context.opts.projectRoot, 'platforms/android');
var manifestFile = path.join(platformRoot, 'AndroidManifest.xml');
if (fs.existsSync(manifestFile)) {
fs.readFile(manifestFile, 'utf8', function (err, data) {
if (err) {
throw new Error('Unable to find AndroidManifest.xml: ' + err);
}
var result;
if(!data.match(TARGET_ATTRIBUTE)) {
result = data.replace(/<application/g, '<application ' + TARGET_VALUE);
}else if (data.match(TARGET_REGEX) && !data.match(TARGET_VALUE)){
result = data.replace(TARGET_REGEX, TARGET_VALUE);
}
if(result){
fs.writeFile(manifestFile, result, 'utf8', function (err) {
if (err) throw new Error('Unable to write AndroidManifest.xml: ' + err);
})
}
});
}
};
另一种替代方法是使用cordova-custom-config,它默认应用更改after_prepare
:
添加插件:
cordova plugin add cordova-custom-config
在config.xml
中设置自定义首选项:
<platform name="android">
...
<custom-preference name="android-manifest/application/@android:allowBackup" value="false" />
...
</platform>
答案 1 :(得分:1)
每位:https://stackoverflow.com/a/53282161/62917
将edit-config移到平台元素之外对我来说是固定的。我还必须将文件属性更改为:
file =“ app / src / main / AndroidManifest.xml”