我正在开发一个Ionic应用程序,我想通过config.xml在AndroidManifest.xml文件中添加android@autoBackup=“false”。根据cordova文档,cordova版本6.4支持config.xml中的edit-config标签,通过该标签,我可以实现类似于plugin.xml的功能。
这是我写在config.xml文件。
<platform name="android">
<edit-config file="AndroidManifest.xml" target="/manifest/application" mode="merge">
<application android:autoBackup="false" />
</edit-config>
<icon src="resources/android/icon/drawable-ldpi-icon.png" density="ldpi"/>
<icon src="resources/android/icon/drawable-mdpi-icon.png" density="mdpi"/>
<splash src="resources/android/splash/drawable-port-ldpi-screen.png" density="port-ldpi"/>
<splash src="resources/android/splash/drawable-port-mdpi-screen.png" density="port-mdpi"/>
<splash src="resources/android/splash/drawable-port-xxxhdpi-screen.png" density="port-xxxhdpi"/>
</platform>
它会像这样更改我的AndroidManifest.xml文件
<application android:autoBackup="false" android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:supportsRtl="true">
<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:screenOrientation="portrait" android:theme="@android:style/Theme.Black.NoTitleBar" android:windowSoftInputMode="adjustResize">
<intent-filter android:label="@string/launcher_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<application android:autoBackup="false" />
<activity android:exported="true" android:launchMode="singleTop" android:name="com.gae.scaffolder.plugin.FCMPluginActivity">
<intent-filter>
<action android:name="FCM_PLUGIN_ACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<service android:name="com.gae.scaffolder.plugin.MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name="com.gae.scaffolder.plugin.MyFirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
</application>
在AndroidManifest.xml的上述代码中,您可以很容易地发现应用程序标记已更新为android@autoBackup=“false”,但还添加了应用程序标记作为具有autoBackup属性的第一个应用程序标记的子标记。我不希望应用程序标记作为子标记,我尝试了很多,但无法找到此问题的根本原因。有人能告诉我我在这里做错了什么吗?提前感谢。
6条答案
按热度按时间nuypyhwy1#
尝试按如下方式更改edit-config标记的“target”属性:
这告诉cordova您要修改一个名为“application”的节点。有关XPath选择器的更多详细信息,请参见XPath。
如果这个插件不适用,你可以看一下cordova-plugin-custom-config。有了这个插件,你可以简单地在config.xml的android部分添加一个preference标签,如下所示:
rjjhvcjd2#
在我的例子中,我需要将以下内容添加到widget标记中:
xmlns:android="http://schemas.android.com/apk/res/android"
修复感谢https://github.com/dpa99c/cordova-custom-config/issues/24#issuecomment-172981002
soat7uwm3#
试试这个对我有用的。
7uzetpgm4#
对我来说,这是可行的:
dgsult0t5#
The conflicting plugin, undefined, already modified the same attributes
这是Cordova中的一个明显的错误,错误声明
undefined
没有帮助。在我的例子中,只有一个插件使用edit-config,我清理了android平台,清空了plugins文件夹,在package.json中将有问题的插件移到了cordova.plugins部分的顶部。这使得cordova在所有其他插件之前添加了有问题的插件。这样做确实解决了这个问题,但最重要的是,它应该帮助您确定是否有第二个罪犯在该列表中。
5uzkadbs6#
我通过安装cordova-custom-config插件并在
config.xml
中添加一个custom-preference
条目来更改AndroidManifest.xml
的内容,从而解决了一个类似的问题。示例: