edit-config在cordova的config.xml中不起作用

时间:2017-08-07 19:59:10

标签: cordova ionic-framework

我正在开发一个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属性的子标记。 我不希望应用程序标记作为子标记,我尝试了很多,但找不到此问题的根本原因。 任何人都可以建议我在这里做错了什么? 提前谢谢。

5 个答案:

答案 0 :(得分:4)

尝试更改edit-config标记的“target”属性,如下所示:

<edit-config file="AndroidManifest.xml" target="application" mode="merge">

这告诉cordova您要修改名为“application”的节点。有关XPath选择器的更多详细信息,请参阅XPath

如果这不适合您,可以查看cordova-plugin-custom-config。使用此插件,您只需将首选项标签添加到config.xml的android部分,如this

<preference name="android-manifest/@android:allowBackup" value="false" />

答案 1 :(得分:0)

对我来说这有效:

<platform name="android">
    <preference name="android-targetSdkVersion" value="26" />
    <preference name="android-minSdkVersion" value="26" />
    <allow-intent href="market:*" />
    <preference name="ShowTitle" value="false" />
    <preference name="BackgroundColor" value="0xff2d2e2d" />
    <edit-config target="AndroidManifest.xml" parent="/manifest/application" mode="merge">
         <application android:theme="@android:style/Theme.NoTitleBar" >
         </application>
    </edit-config>
</platform>

答案 2 :(得分:0)

The conflicting plugin, undefined, already modified the same attributes

这是Cordova中的一个确定的错误,错误指出undefined并没有帮助。在我的情况下,只有一个插件使用edit-config,我清理了android平台,清空packages文件夹,在package.json内部将有问题的插件移到cordova.plugins部分的顶部。这使cordova在所有其他插件之前添加了该问题插件。

这样做确实可以解决问题,但最重要的是,它可以帮助您确定该列表中是否还有第二名罪犯。

答案 3 :(得分:0)

<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
    <application android:allowBackup="false" />
</edit-config>

尝试这个对我有用的东西。

答案 4 :(得分:0)

就我而言,我需要将此添加到小部件标签:xmlns:android="http://schemas.android.com/apk/res/android"

修复感谢 https://github.com/dpa99c/cordova-custom-config/issues/24#issuecomment-172981002