Cordova 6.3.1 plugin.xml设置android-theme不起作用

时间:2016-12-09 09:39:37

标签: cordova cordova-plugins

由于<edit-config>标记在cordova plugin.xml文件中不起作用,我尝试使用this方法更新android:theme

<config-file target="res/xml/config.xml" parent="/*">
  <application>
    <preference name="android-theme" value="@style/Theme.AppCompat.NoActionBar"/>
  </application>
</config-file>

即使我将父级设置为/Application或删除应用程序标签
,此代码也不起作用 如何更改android清单中的“android-theme”标签?
(虚拟代码):

<manifest>
  <application>
    <activity android:theme="@android:style/Theme.DeviceDefault.NoActionBar">
  </application>
</manifest>

更新

我已更新到cordova 6.4.0并尝试使用此示例代码:

<edit-config file="AndroidManifest.xml" target="/manifest/uses-sdk" mode="merge">
    <uses-sdk android:minSdkVersion="16" android:maxSdkVersion="23" />
</edit-config>

当我尝试将其用于android:theme属性时,这是有效的:

<edit-config file="AndroidManifest.xml" target="/manifest/application/activity" mode="overwrite">
    <activity android:theme="@style/Theme.AppCompat.NoActionBar" />
</edit-config>

它给出了这个java错误:

  

错误:无法读取未定义的属性“长度”

3 个答案:

答案 0 :(得分:3)

我将设置从Cordova 6.2升级到Cordova 6.4.0后尝试了它对我有用。我在edit-config中尝试了合并和覆盖模式的情况。

为了测试此功能,我使用Cordova CLI创建了一个新的准系统corodva项目。然后,我在项目中安装了cordova设备插件。安装插件后,我调整了cordova设备插件的plugin.xml,并在android平台标签中添加了以下内容:

<edit-config file="AndroidManifest.xml" target="/manifest/uses-sdk" mode="merge">
            <uses-sdk  android:maxSdkVersion="25" />
</edit-config>
<edit-config file="AndroidManifest.xml" target="/manifest/application/activity[@android:name='MainActivity']" mode="overwrite">
             <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.AppCompat.NoActionBar" android:windowSoftInputMode="adjustResize"/>
</edit-config>

在调整plugin.xml之后,我使用cordova platform add android命令添加了Android平台。成功添加android平台后,我打开了platform \ android文件夹下的AndroidManifest.xml,并在其中更新了edit-config中提到的内容。 XML文件如下:

<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="10000" android:versionName="1.0.0" package="io.cordova.hellocordova" xmlns:android="http://schemas.android.com/apk/res/android">
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
    <uses-permission android:name="android.permission.INTERNET" />
    <application android:hardwareAccelerated="true" android:icon="@mipmap/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:theme="@android:style/Theme.AppCompat.NoActionBar" 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>
    <uses-sdk android:maxSdkVersion="25" android:minSdkVersion="16" android:targetSdkVersion="24" />
</manifest>

还尝试删除并重新添加Android平台,它的工作原理。在你的情况下你使用Cordova 6.3.1,我不确定它是否与cordova有关。希望如果您可以升级到Cordova 6.4.0

,它将会起作用

我的节点版本是6.9.2,而cordova android版本是6.0.0

希望它有所帮助。干杯

答案 1 :(得分:0)

您只能根据偏好更改平台配置数据,尝试使用专为目的而设置的cordova-custom-pluginconfig.xml

使用特定plugin link

中提到的以下命令安装它

如上所述,它将以下列方式应用属性android:theme

<preference name="android-manifest/application/activity/@android:theme" value="@android:style/Theme.AppCompat.NoActionBar"/>

android-manifest -- application -- activity

答案 2 :(得分:0)

使用Gandhi的答案我已将节点应用程序更新到最新版本并将plugin.xml更新为:

<edit-config file="AndroidManifest.xml" target="/manifest/application/activity[@android:name='MainActivity']" mode="merge">
   <activity android:theme="@style/Theme.AppCompat.NoActionBar" />
</edit-config>

这很完美!