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

r8uurelv  于 2022-11-15  发布在  其他
关注(0)|答案(6)|浏览(317)

我正在开发一个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属性的第一个应用程序标记的子标记。我不希望应用程序标记作为子标记,我尝试了很多,但无法找到此问题的根本原因。有人能告诉我我在这里做错了什么吗?提前感谢。

nuypyhwy

nuypyhwy1#

尝试按如下方式更改edit-config标记的“target”属性:

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

这告诉cordova您要修改一个名为“application”的节点。有关XPath选择器的更多详细信息,请参见XPath
如果这个插件不适用,你可以看一下cordova-plugin-custom-config。有了这个插件,你可以简单地在config.xml的android部分添加一个preference标签,如下所示:

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

rjjhvcjd2#

在我的例子中,我需要将以下内容添加到widget标记中:xmlns:android="http://schemas.android.com/apk/res/android"
修复感谢https://github.com/dpa99c/cordova-custom-config/issues/24#issuecomment-172981002

soat7uwm

soat7uwm3#

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

试试这个对我有用的。

7uzetpgm

7uzetpgm4#

对我来说,这是可行的:

<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>
dgsult0t

dgsult0t5#

The conflicting plugin, undefined, already modified the same attributes
这是Cordova中的一个明显的错误,错误声明undefined没有帮助。在我的例子中,只有一个插件使用edit-config,我清理了android平台,清空了plugins文件夹,在package.json中将有问题的插件移到了cordova.plugins部分的顶部。这使得cordova在所有其他插件之前添加了有问题的插件。
这样做确实解决了这个问题,但最重要的是,它应该帮助您确定是否有第二个罪犯在该列表中。

5uzkadbs

5uzkadbs6#

我通过安装cordova-custom-config插件并在config.xml中添加一个custom-preference条目来更改AndroidManifest.xml的内容,从而解决了一个类似的问题。
示例:

[...]
<platform name="android">
  [...]
  <custom-preference name="android-manifest/application/@android:label" value="MyAppName"/>
</platform>

相关问题