我正在开发Cordova Plugin
,我想添加
android:allowBackup="true"
进入AndroidManifest.xml
,但我不知道如何在plugin.xml
中指定它。
答案 0 :(得分:7)
对我有用的配置编辑是:
<platform name="android">
<edit-config file="AndroidManifest.xml" target="/manifest/application" mode="merge">
<application android:allowBackup="false"/>
</edit-config>
</platform>
答案 1 :(得分:4)
如果您正在编写需要在应用的AndroidManifest.xml中添加/编辑内容的插件,那么plugin.xml中内置了一些功能来执行此操作。对于问题示例,它应该是这样的:
<edit-config file="AndroidManifest.xml" target="/manifest/application" mode="merge">
<application android:allowBackup="true" />
</edit-config>
答案 2 :(得分:3)
你必须通过钩子来做(下面是Ionic应用程序的一个例子):
在您的config.xml中添加一个钩子:
<platform name="android">
<hook type="before_plugin_install" src="hooks/androidBeforeInstall.js" />
在hooks文件夹中创建js文件androidBeforeInstall.js并在下面添加以下代码:
module.exports = function(ctx) {
var fs = ctx.requireCordovaModule('fs'),
path = ctx.requireCordovaModule('path'),
xml = ctx.requireCordovaModule('cordova-common').xmlHelpers;
var manifestPath = path.join(ctx.opts.projectRoot, 'platforms/android/AndroidManifest.xml');
var doc = xml.parseElementtreeSync(manifestPath);
if (doc.getroot().tag !== 'manifest') {
throw new Error(manifestPath + ' has incorrect root node name (expected "manifest")');
}
doc.getroot().find('./application').attrib['android:allowBackup'] = "true";
//write the manifest file
fs.writeFileSync(manifestPath, doc.write({
indent: 4
}), 'utf-8');
};
答案 3 :(得分:3)
这是一个更简单的示例,但它需要cordova custom config插件。
<platform name="android">
<preference name="android-manifest/application/@android:allowBackup" value="true" />
</platform>`
答案 4 :(得分:3)
答案shared适用于 cordova-android <7 。但是 cordova-android> = 7
的情况发生了变化https://cordova.apache.org/announcements/2017/12/04/cordova-android-7.0.0.html
所以您需要对其进行一些更改
<platform name="android">
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
<application android:allowBackup="false"/>
</edit-config>
</platform>
对我有用的配置编辑是:
<platform name="android">
<edit-config file="AndroidManifest.xml" target="/manifest/application" mode="merge">
<application android:allowBackup="false"/>
</edit-config>
</platform>
答案 5 :(得分:0)
对于最新的cordova version 8.1.2
,没有一个答案对我有用。以下是我的操作方式以及工作情况。同样,您也可以更新AndroidManifest.xml
的任何其他配置。
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
<application android:allowBackup="false" />
</edit-config>
您完成了!
答案 6 :(得分:0)
为避免android应用恢复安装时的备份,请在config.xml中添加以下配置。
确保已定义xml名称空间。没有我,科尔多瓦的建设失败了。
通过添加以下内容解决。
<platform name="android">
<edit-config file="AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
<application android:allowBackup="false" />
</edit-config>
</platform>
答案 7 :(得分:0)
首先请确保您的外观如下:(要导入android)
false
然后在您的android部分
<widget id="com.myapp" version="0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android">
注意:此编辑配置部分可用于对AndroidManifest.xml进行许多更改
如果有人想知道的话,可以在以下部分添加此功能以实现与iOS类似的功能:
<platform name="android">
...
...
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
<application android:allowBackup="false" />
</edit-config>
答案 8 :(得分:0)
使用edit-config会中断插件,因此请谨慎使用并随后测试所有插件。
更多信息: https://issues.apache.org/jira/browse/CB-13514
不破坏插件的方法是使用以下命令(要求cordova-custom-config)
arguments[0].scrollIntoView({block: "center"});
答案 9 :(得分:0)
就我而言,我使用了插件cordova-custom-config
cordova plugin add cordova-custom-config
问题已经解决。
在config.xml中进行聚合
<platform name="android">
...
<custom-preference name="android-manifest/application/@android:allowBackup" value="false" />
...
</platform>
在cordova-custom-config-example
中的示例中查看插件的更多详细信息和guide中的andoid文档
答案 10 :(得分:0)
安卓
编辑"platforms/android/CordovaLib/AndroidManifest.xml"
喜欢
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ...>
// ... exiting conf directives ....
<application android:allowBackup="false"/>
</manifest>
或编辑"platforms/android/app/src/main/AndroidManifest.xml"
<application // exiting attributes
android:allowBackup="false"
> </application>