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


627   3  

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

    Ничего не найдено.