Cordova 6.3.1 плагин.xml set android-тема не работает
Так как тег <edit-config> не работает в плагине cordova.xml-файлы, и я попытался использовать Этот метод для обновления 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-theme"в манифесте android?
(фиктивный код):
<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:
Ошибка: не удается прочитать свойство 'length' из undefined
3 ответов:
Я попробовал его после обновления моей установки с Cordova 6.2 до Cordova 6.4.0 он работает для меня. Я попробовал использовать как режим слияния, так и режим перезаписи в edit-config.
Чтобы проверить эту функциональность, я создал новый проект barebone corodva, используя Cordova CLI. Затем я установил плагин cordova device в проекте. После установки плагина, я подправил плагин.xml плагина устройства cordova и добавил следующий внутренний тег платформы 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>После настройки плагин.xml, я добавил платформу Android с помощью команды
cordova platform add android. После успешного добавления платформы android, я открыл AndroidManifest.xml, доступный в папке platforms\android, и содержимое, упомянутое в 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. Надеюсь, что это будет работать, если вы могли бы обновить до Кордова 6.4.0
И мой узел версия 6.9.2 и версия Кордова андроид 6.0.0
Надеюсь, что это помогает. Ура
Вы можете попробовать использовать
cordova-custom-plugin, специально созданный для этой цели, только изменив Данные конфигурации платформы на основе предпочтений вconfig.xmlУстановите его, используя следующую команду, как указано в конкретной ссылке плагина
Как уже упоминалось, он применит атрибут
android:themeследующим образом<preference name="android-manifest/application/activity/@android:theme" value="@android:style/Theme.AppCompat.NoActionBar"/>В вашем
android-manifest -- application -- activity
Используя ответ Ганди, я обновил свое приложение node до последней версии и обновил плагин.xml к этому:
<edit-config file="AndroidManifest.xml" target="/manifest/application/activity[@android:name='MainActivity']" mode="merge"> <activity android:theme="@style/Theme.AppCompat.NoActionBar" /> </edit-config>Это работает идеально!
Comments