Spec-Zone.ru › Cordova 9

Plugin.xml

Файл Plugin.xml определяет структуру и настройки, необходимые для вашего плагина. Он содержит несколько элементов для предоставления подробной информации о вашем плагине.

plugin

Элемент plugin является корневым элементом манифеста плагина.

Атрибуты(тип)
Только для платформы:
Описание
xmlns(строка) Обязательно
Пространство имен плагина, http://apache.org/cordova/ns/plugins/1.0. Если документ содержит XML из других пространств имен, таких как теги, которые необходимо добавить в файл AndroidManifest.xml в случае с Android, эти пространства имен также должны быть включены в элемент .
id(строка) Обязательно
Идентификатор плагина в формате npm.
version(строка) Обязательно
Номер версии плагина. Поддерживается синтаксис Semver. Semver

Пример:

<?xml version="1.0" encoding="UTF-8"?>
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
    xmlns:android="http://schemas.android.com/apk/res/android"
    id="my-plugin-id"
    version="1.0.2">

engines и engine

Дочерние элементы элемента <engines> указывают версии фреймворков Apache Cordova, которые поддерживает этот плагин. CLI прерывает установку с ненулевым кодом для любого плагина, целевой проект которого не соответствует ограничениям движка. Если теги не указаны, CLI пытается установить плагин в указанный каталог проекта Cordova без проверки.

ПРИМЕЧАНИЕ: В Cordova 6.1.0+ рекомендуется указывать зависимости платформы, плагина и CLI в файле package.json. См. указание зависимостей Cordova для получения дополнительной информации.

Атрибуты(тип)
Только для платформы:
Описание
name(строка) Обязательно
Название движка. Вот стандартные поддерживаемые движки:
  • cordova
  • cordova-plugman
  • cordova-android
  • cordova-browser
  • cordova-ios
  • cordova-windows
  • cordova-osx
  • windows-os
  • android-sdk (возвращает максимальную установленную версию API Android)
  • windows-sdk (возвращает версию нативного SDK Windows)
  • apple-xcode (возвращает версию Xcode)
  • apple-ios (возвращает максимальную установленную версию iOS)
  • apple-osx (возвращает версию OSX)
  • Вы также можете указать пользовательский фреймворк помимо стандартных.
version(строка) Обязательно
Версия фреймворка, которая должна быть установлена для установки. Поддерживается синтаксис Semver.
scriptSrc(строка) Только для пользовательских фреймворков
Обязательно
Скрипт, который сообщает plugman о версии пользовательского фреймворка. В идеале, этот файл должен находиться в корневой директории вашей директории плагина.
platform(строка) Только для пользовательских фреймворков
Обязательно
Платформы, которые поддерживает ваш фреймворк. Для поддержки всех платформ можно использовать символ подстановки * , для указания нескольких платформ используйте символ '|' (pipe) например, `android`

Примеры:

<engines>
  <engine name="cordova-android" version="=1.8.0" />
</engines>

Элементы движка также могут указывать приблизительные соответствия, используя '>', '>=' и т.д., чтобы избежать повторений и уменьшить поддержку при обновлении базовой платформы.

<engines>
  <engine name="cordova-android" version=">=1.8.0" />
</engines>

Теги <engine> также поддерживают все основные платформы, на которых существует Cordova. Указание тега cordova engine означает, что все версии Cordova на любой платформе должны соответствовать атрибуту версии движка. Вы также можете перечислить определенные платформы и их версии, чтобы переопределить универсальный тег cordova engine:

<engines>
  <engine name="cordova" version=">=1.7.0" />
  <engine name="cordova-android" version=">=1.8.0" />
  <engine name="cordova-ios" version=">=1.7.1" />
</engines>

Пример пользовательских фреймворков:

<engines>
  <engine name="my_custom_framework" version="1.0.0" platform="android" scriptSrc="path_to_my_custom_framework_version"/>
  <engine name="another_framework" version=">0.2.0" platform="ios|android" scriptSrc="path_to_another_framework_version"/>
  <engine name="even_more_framework" version=">=2.2.0" platform="*" scriptSrc="path_to_even_more_framework_version"/>
</engines>

name

Элемент name используется для указания имени плагина. Этот элемент (пока) не поддерживает локализации.

Пример:

<name>Foo</name>

description

Элемент description используется для указания описания плагина. Этот элемент (пока) не поддерживает локализации.

Пример:

<description>Foo plugin description</description>

author

Содержимое элемента author содержит имя автора плагина.

Пример:

<author>Foo plugin author</author>

keywords

Содержимое элемента keywords содержит разделенные запятыми ключевые слова для описания плагина.

Пример:

<keywords>foo,bar</keywords>

license

Этот элемент используется для указания лицензии плагина.

Пример:

<license>Apache 2.0 License</license>

asset

Этот элемент используется для перечисления файлов или каталогов, которые необходимо скопировать в каталог www приложения Cordova. Любые элементы <asset> , вложенные в элементы <platform> , указывают платформозависимые веб-активы.

Атрибуты(тип)
Только для платформы:
Описание
src(строка) Обязательно
Путь к файлу или каталогу в пакете плагина относительно файла plugin.xml. Если файла по указанному пути src не существует, CLI останавливает процесс установки, выводит сообщение об ошибке и завершается с ненулевым кодом.
target(строка) Обязательно
Путь к файлу или каталогу в приложении Cordova относительно каталога www. Если файл или каталог уже существует по указанному пути target, CLI останавливает процесс установки, выводит сообщение об ошибке и завершается с ненулевым кодом.

Примеры:

<!-- a single file, to be copied in the root directory -->
<asset src="www/foo.js" target="foo.js" />
<!-- a directory, also to be copied in the root directory -->
<asset src="www/foo" target="foo" />

Активы могут быть направлены в подкаталоги. Это создаст каталог js/experimental в каталоге www, если он не существует, и скопирует файл new-foo.js, переименовав его в foo.js.

<asset src="www/new-foo.js" target="js/experimental/foo.js" />

js-module

Большинство плагинов содержат один или несколько JavaScript-файлов. Каждый тег <js-module> соответствует JavaScript-файлу и избавляет пользователей от необходимости добавлять тег <script> для каждого файла. Не заключайте файл в cordova.define, так как он добавляется автоматически. Модуль обернут в закрытие с модулем, экспортом и require в области видимости, как это обычно бывает для AMD-модулей. Вложение элементов <js-module> внутри <platform> объявляет платформозависимые привязки JavaScript-модулей.

Атрибуты(тип)
Только для платформы:
Описание
src(строка) Ссылка на файл в каталоге плагина относительно файла plugin.xml . Если src не разрешает существующий файл, CLI останавливается, отменяет установку, выводит сообщение об ошибке и завершается с ненулевым кодом.
name(строка) Предоставляет последнюю часть имени модуля. Оно может быть любым, и это имеет значение только если вы хотите использовать cordova.require для импорта других частей ваших плагинов в ваш JavaScript-код. Имя модуля для <js-module> - это идентификатор вашего плагина, за которым следует значение name.

Пример:

При установке плагина с примером ниже, socket.js копируется в www/plugins/my-plugin-id/socket.js, и добавляется как запись в www/cordova_plugins.js. Во время загрузки код в cordova.js использует XHR для чтения каждого файла и вставляет тег <script> в HTML.

<js-module src="socket.js" name="Socket">
</js-module>

Также для этого примера, с идентификатором плагина chrome-socket, имя модуля будет chrome-socket.Socket.

clobbers

Разрешено внутри элемента <js-module>. Используется для указания пространства имен в объекте window, куда вставляется module.exports. Вы можете иметь любое количество тегов <clobbers>. Любой объект, отсутствующий в window , создаётся.

Атрибуты(тип)
Только для платформы:
Описание
target(строка) Пространство имен, куда вставляется module.exports.

Пример:

<js-module src="socket.js" name="Socket">
  <clobbers target="chrome.socket" />
</js-module>

Здесь module.exports вставляется в объект window как window.chrome.socket.

merges

Разрешено внутри элемента <js-module>. Используется для указания пространства имен в объекте window, куда module.exports объединяется с любым существующим значением. Если какой-либо ключ уже существует, версия модуля переопределяет исходное значение. Вы можете иметь любое количество тегов <merges> . Любой объект, отсутствующий в window , создаётся.

Атрибуты(тип)
Только для платформы:
Описание
target(строка) Пространство имён, в которое объединяется module.exports.

Пример:

<js-module src="socket.js" name="Socket">
  <merges target="chrome.socket" />
</js-module>

Здесь module.exports объединяется с любым существующим значением в window.chrome.socket.

runs

Разрешено внутри элемента <js-module>. Это подразумевает, что ваш код должен быть указан с cordova.require, но не установлен в объект window. Это полезно при инициализации модуля, привязывании обработчиков событий или других операциях. Вы можете иметь не более одного тега <runs/>. Обратите внимание, что включение тега <runs/> с тегами <clobbers/> или <merges/> избыточно, так как они также cordova.require ваш модуль.

Пример:

<js-module src="socket.js" name="Socket">
  <runs/>
</js-module>

dependency

Тег <dependency> позволяет указывать другие плагины, от которых зависит текущий плагин. Плагины ссылаются на них по уникальным идентификаторам npm или URL github.

Атрибуты(тип)
Только для платформы:
Описание
id(строка) Предоставляет идентификатор плагина.
url(строка) URL плагина. Должен ссылаться на репозиторий Git, который CLI пытается клонировать.
commit(строка) Это любая ссылка Git, понятная git checkout: имя ветки или тега (например, master, 0.3.1), или хеш коммита (например, 975ddb228af811dd8bb37ed1dfd092a3d05295f9).
subdir(строка) Указывает, что зависимая от плагина зависимость существует как подкаталог репозитория Git. Это полезно, потому что позволяет репозиторию содержать несколько связанных плагинов, каждый из которых указан индивидуально.
Если вы установите url тега <dependency> на "." и укажете subdir, зависимый плагин устанавливается из того же локального или удалённого репозитория Git, что и родительский плагин, который указывает тег <dependency>.
Обратите внимание, что subdir всегда указывает путь относительно корня репозитория Git, а не родительского плагина. Это верно, даже если вы установили плагин с локальным путем непосредственно к нему. CLI находит корень репозитория Git, а затем находит другой плагин оттуда.
version(строка) Версия зависящего плагина. Поддерживается синтаксис Semver.

Примеры:

<dependency id="cordova-plugin-someplugin" url="https://github.com/myuser/someplugin" commit="428931ada3891801" subdir="some/path/here" />
<dependency id="cordova-plugin-someplugin" version="1.0.1">

платформа

Определяет платформы, которые имеют ассоциированный код нативном языке или требуют модификаций файлов конфигурации. Инструменты, использующие данную спецификацию, могут определить поддерживаемые платформы и установить код в проекты Cordova. Плагины без тегов <platform> предполагаются только JavaScript и, следовательно, установленные на всех платформах.

Атрибуты(тип)
Только для платформы:
Описание
name(строка) Обязательно
Разрешенные значения: ios, android, windows, browser, osx
Определяет поддерживаемую платформу, связывая дочерние элементы с этой платформой.

Пример:

<platform name="android">
  <!-- android-specific elements -->
</platform>

файл-источник

Определяет исполняемый исходный код, который должен быть установлен в проект.

Атрибуты(тип)
Только для платформы:
Описание
src(строка) Обязательно
Расположение файла относительно plugin.xml. Если файл src не найден, CLI останавливается, отменяет установку, выводит уведомление о проблеме и завершается с ненулевым кодом.
target-dir(строка) Директория, в которую должны быть скопированы файлы, относительно корня проекта Cordova. На практике это наиболее важно для платформ на основе Java, где файл в пакете com.alunny.foo должен находиться в директории com/alunny/foo. Для платформ, где каталог исходного кода не важен, этот атрибут должен быть опущен.
framework(логическое значение)
iOS
По умолчанию: false
Если установлено в значение true, также добавляет указанный файл в качестве фреймворка в проект.
compiler-flags(строка)
iOS
Если установлено, назначает указанные флаги компилятора для конкретного исходного файла.

Примеры:

<!-- android -->
<source-file src="src/android/Foo.java" target-dir="src/com/alunny/foo" />
<!-- ios -->
<source-file src="src/ios/CDVFoo.m" />
<source-file src="src/ios/someLib.a" framework="true" />
<source-file src="src/ios/someLib.a" compiler-flags="-fno-objc-arc" />

файл-заголовок

Это как элемент <source-file>, но специально для платформ, таких как iOS и Android, которые различают исходные файлы, заголовки и ресурсы. Это не поддерживается Windows.

Атрибуты(тип)
Только для платформы:
Описание
src(строка) Обязательно
Расположение файла относительно plugin.xml. Если файл src не найден, CLI останавливается, отменяет установку, выводит уведомление о проблеме и завершается с ненулевым кодом.
target-dir(строка) Директория, в которую должны быть скопированы файлы, относительно корня проекта Cordova.
type(строка)
iOS
Если это значение равно BridgingHeader, файл импортируется в Bridging-Header.h и может вызываться из программы swift.

Пример:

Для iOS:

<header-file src="CDVFoo.h" />
<header-file src="CDVSomeHeader.h" type="BridgingHeader" />

файл-ресурс

Это как элемент <source-file>, но специально для платформ, таких как iOS и Android, которые различают исходные файлы, заголовки и ресурсы.

Атрибуты(тип)
Только для платформы:
Описание
src(строка) Обязательно
Расположение файла относительно plugin.xml. Если файл src не найден, CLI останавливается, отменяет установку, выводит уведомление о проблеме и завершается с ненулевым кодом.
target(строка) Путь, куда будет скопирован файл в вашей директории.
arch(строка)
windows
Разрешенные значения: x86, x64 или ARM.
Указывает, что файл должен быть включён только при сборке для указанной архитектуры.
device-target
windows
Разрешенные значения: win (или windows), phone или all.
Указывает, что файл должен быть включён только при сборке для указанного типа устройства.
versions
windows
Указывает, что файл должен быть включён только при сборке для версий, соответствующих указанной строке версии. Значение может быть любой допустимой строкой диапазона семантической версии узла.
reference
windows
Указывает, что файл должен быть сохранён из src, а не скопирован в целевое назначение. Файл будет отображаться в Visual Studio с именем файла, указанным в target, но будет указывать на соответствующий src, в зависимости от архитектуры.

Примеры:

Для Android:

<resource-file src="FooPluginStrings.xml" target="res/values/FooPluginStrings.xml" />

Для Windows:

<resource-file src="src/windows/win81/MobServices.pri" target="win81\MobServices.pri" device-target="windows" versions="8.1" arch="x64"/>

<!-- Example of referencing  -->
<resource-file src="x86/foo.dll" target="foo.dll" arch="x86" reference="true" />
<resource-file src="x64/foo.dll" target="foo.dll" arch="x64" reference="true" />

ПРИМЕЧАНИЕ: target должен использовать обратные слэши, чтобы избежать ошибки развертывания DEP2100 в Visual Studio.

файл-конфигурации

Определяет файл конфигурации на основе XML, который должен быть изменён, в какой части документа должно произойти изменение и что должно быть изменено. Два типа файлов, которые были протестированы для изменения с помощью этого элемента, это xml и plist файлы. Элемент config-file позволяет только добавлять новые дочерние элементы в дерево документа XML. Дочерние элементы являются литералами XML, которые должны быть вставлены в целевой документ.

Атрибуты(тип)
Только для платформы:
Описание
target(строка) Файл, который будет изменён, и путь относительно корня проекта Cordova. Если указанный файл не существует, инструмент игнорирует изменение конфигурации и продолжает установку.
Целевой файл может включать подстановочные знаки (*) элементы. В этом случае CLI рекурсивно ищет в структуре каталогов проекта и использует первый совпавший файл.
В iOS местоположение файлов конфигурации относительно корня проекта не известно, поэтому указание целевого значения config.xml эквивалентно cordova-ios-project/MyAppName/config.xml.
parent(строка) Селектор XPath, ссылающийся на родителя элементов, которые должны быть добавлены в файл конфигурации. Если вы используете абсолютные селекторы, вы можете использовать подстановочный знак (*) для указания корневого элемента, например /*/plugins. Если селектор не разрешается дочернему элементу указанного документа, инструмент останавливается, отменяет процесс установки, выводит предупреждение и завершается с ненулевым кодом.
Для файлов plist, parent определяет, под какой родительский ключ должен быть вставлен указанный XML.
after(строка) Приоритетный список разрешённых элементов-собратьев, после которых следует добавить фрагмент XML. Полезно для указания изменений в файлах, которые требуют строгого порядка элементов XML, как в этом.
device-target(строка)
windows
Разрешенные значения: win, phone, all.
Применимо при изменении имени meta package.appxmanifest, этот атрибут указывает, что файл должен быть изменён только при сборке для указанного типа устройства.
versions(строка)
windows
Применимо при изменении имени meta package.appxmanifest, этот атрибут указывает, что манифесты приложений для конкретных версий Windows должны быть изменены только для версий, соответствующих указанной строке версии. Значение может быть любой допустимой строкой диапазона семантической версии узла.

Примеры:

Для XML:

<config-file target="AndroidManifest.xml" parent="/manifest/application">
    <activity android:name="com.foo.Foo" android:label="@string/app_name">
        <intent-filter>
        </intent-filter>
    </activity>
</config-file>

Для plist:

<config-file target="*-Info.plist" parent="CFBundleURLTypes">
    <array>
        <dict>
            <key>PackageName</key>
            <string>$PACKAGE_NAME</string>
        </dict>
    </array>
</config-file>

Для атрибутов, специфичных для Windows:

<config-file target="package.appxmanifest" parent="/Package/Capabilities" versions="&lt;8.1.0">
    <Capability Name="picturesLibrary" />
    <DeviceCapability Name="webcam" />
</config-file>
<config-file target="package.appxmanifest" parent="/Package/Capabilities" versions=">=8.1.0" device-target="phone">
    <DeviceCapability Name="webcam" />
</config-file>

В приведенном выше примере будут установлены платформы до версии 8.1 (Windows 8, конкретно) для требования функции устройства webcam и общей функции picturesLibrary, а функция устройства webcam будет применена только к проектам Windows 8.1, которые собираются для Windows Phone. Windows настольные системы 8.1 не изменены.

edit-config

Подобно config-file, edit-config определяет файл XML-конфигурации для изменения, указывая, где в этом документе должно произойти изменение и что должно быть изменено. Вместо добавления новых дочерних элементов в дерево документа XML, edit-config вносит изменения в атрибуты элементов XML. Существует два режима, определяющие тип изменения атрибута: merge или overwrite. edit-config имеет один дочерний элемент, и этот дочерний элемент будет содержать добавляемые атрибуты.

Атрибуты(тип)
Только для платформы:
Описание
file(string) Файл, который необходимо изменить, и путь к нему относительно корня проекта Cordova. Если указанный файл не существует, инструмент игнорирует изменение конфигурации и продолжает установку.
Цель может включать символы подстановки (*) элементов. В этом случае CLI рекурсивно ищет по структуре каталогов проекта и использует первое совпадение.
В iOS расположение файлов конфигурации относительно корня каталога проекта неизвестно, поэтому указание цели config.xml приводит к cordova-ios-project/MyAppName/config.xml.
target(string) XPath-селектор, ссылающийся на целевой элемент для изменения атрибутов. Если вы используете абсолютные селекторы, вы можете использовать символ подстановки (*) для указания корневого элемента, например, /*/plugins. Если селектор не соответствует дочернему элементу указанного документа, инструмент останавливается, отменяет установку, выводит предупреждение и завершается с ненулевым кодом.
mode(string) Режим, определяющий тип изменений атрибутов.
merge — добавляет указанные атрибуты к целевому элементу. Заменит значения атрибутов, если они уже существуют в целевом элементе.
overwrite — заменяет все атрибуты целевого элемента на указанные.

Пример:

<!-- plugin-1 -->
<edit-config file="AndroidManifest.xml" target="/manifest/uses-sdk" mode="merge">
    <uses-sdk android:minSdkVersion="16" android:maxSdkVersion="23" />
</edit-config>
<edit-config file="AndroidManifest.xml" target="/manifest/application/activity[@android:name='MainActivity']" mode="overwrite">
    <activity android:name="MainActivity" android:label="NewLabel" android:configChanges="orientation|keyboardHidden" />
</edit-config>

AndroidManifest.xml до добавления плагина plugin-1:

<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" package="io.cordova.hellocordova" xmlns:android="http://schemas.android.com/apk/res/android">
    ...
        <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
            ...
        </activity>
    ...
    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23" />
</manifest>

AndroidManifest.xml после добавления плагина plugin-1:

<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" package="io.cordova.hellocordova" xmlns:android="http://schemas.android.com/apk/res/android">
    ...
        <activity android:configChanges="orientation|keyboardHidden" android:label="NewLabel" android:name="MainActivity">
            ...
        </activity>
    ...
    <uses-sdk android:maxSdkVersion="23" android:minSdkVersion="16" android:targetSdkVersion="23" />
</manifest>

Управление конфликтами edit-config

Несколько плагинов не могут изменять одни и те же атрибуты, так как это может вызвать проблемы с приложением. Будет выброшено исключение, и установка плагина завершится ошибкой. Конфликтующие edit-config теги необходимо разрешить перед добавлением плагина. Внесите изменения в конфликтующие теги, чтобы разрешить конфликт, затем удалите и повторно добавьте обновленные плагины.

Существует возможность для тех, кто уверен, что плагин необходимо установить, несмотря на конфликты. Флаг --force может использоваться с cordova plugin add. Принудительное добавление плагина вернёт конфликтующие изменения других плагинов, чтобы его можно было добавить без проблем. --force следует использовать с осторожностью, так как откат изменений других плагинов может привести к тому, что приложение не будет работать должным образом.

Если плагины окажутся в странном состоянии, удалите все плагины и добавьте их заново.

Пример:

Предположим, что плагин plugin-1 из примера уже установлен. Попытка установить плагин plugin-2 ниже вызовет ошибку, потому что plugin-1 уже изменил uses-sdk элемент в AndroidManifest.xml.

<!-- plugin-2 -->
<edit-config file="AndroidManifest.xml" target="/manifest/uses-sdk" mode="merge">
    <uses-sdk android:minSdkVersion="15" />
</edit-config>

Существует несколько способов добавления plugin-2:

Одним из возможных способов разрешения конфликта является удаление edit-config тега из plugin-2 и объединение его с тегом edit-config плагина plugin-1 (предполагая, что plugin-1 не имеет проблем с этим изменением). Удалите оба плагина и повторно добавьте их с этими изменениями. В этот раз плагин plugin-2 должен быть добавлен без проблем.

Удаление edit-config из plugin-2 и объединение его с plugin-1:

<!-- plugin-1 -->
<edit-config file="AndroidManifest.xml" target="/manifest/uses-sdk" mode="merge">
    <uses-sdk android:minSdkVersion="15" android:maxSdkVersion="23" />
</edit-config>
<edit-config file="AndroidManifest.xml" target="/manifest/application/activity[@android:name='MainActivity']" mode="overwrite">
    <activity android:name="MainActivity" android:label="NewLabel" android:configChanges="orientation|keyboardHidden" />
</edit-config>

Результат AndroidManifest.xml после удаления и повторного добавления обоих плагинов:

<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" package="io.cordova.hellocordova" xmlns:android="http://schemas.android.com/apk/res/android">
    ...
        <activity android:configChanges="orientation|keyboardHidden" android:label="NewLabel" android:name="MainActivity">
            ...
        </activity>
    ...
    <uses-sdk android:maxSdkVersion="23" android:minSdkVersion="15" android:targetSdkVersion="23" />
</manifest>

Второй способ добавления plugin-2 заключается в добавлении плагина с использованием --force. Конфликтное изменение edit-config плагина plugin-1 будет отменено, и будет применено изменение плагина plugin-2. Результирующий AndroidManifest.xml будет содержать изменение uses-sdk из плагина plugin-2 и изменение activity из плагина plugin-1. Обратите внимание, что только изменение uses-sdk из плагина plugin-1 исчезло, так как это было единственное конфликтующее изменение.

Результат AndroidManifest.xml после принудительного добавления plugin-2:

<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" package="io.cordova.hellocordova" xmlns:android="http://schemas.android.com/apk/res/android">
    ...
        <activity android:configChanges="orientation|keyboardHidden" android:label="NewLabel" android:name="MainActivity">
            ...
        </activity>
    ...
    <uses-sdk android:minSdkVersion="15" android:targetSdkVersion="23" />
</manifest>

Примечание: Отменённые изменения из --force окончательно удалены. Они не появятся после удаления плагина, который был добавлен принудительно. Если отменённые изменения необходимы, все связанные плагины должны быть удалены и повторно добавлены.

plugins-plist

Указывает ключ и значение, которые нужно добавить к соответствующему AppInfo.plist файлу в проекте Cordova для iOS. Этот параметр устарел, так как применяется только к cordova-ios 2.2.0 и ниже. Для более новых версий Cordova используйте тег <config-file>.

Пример:

<plugins-plist key="Foo" string="CDVFoo" />

lib-file

Как файлы исходного кода, ресурсов и заголовков, но специально для таких платформ, как BlackBerry 10, которые используют библиотеки, созданные пользователем. Для платформы Windows элемент <lib-file> позволяет включить <SDKReference> в сгенерированные файлы проекта Windows.

Атрибуты(тип)
Только для платформы:
Описание
src(string) Обязательно
Путь к файлу относительно plugin.xml. Если src не найден, CLI останавливается, отменяет установку, выводит предупреждение о проблеме и завершается с ненулевым кодом.
Для Windows указывает имя SDK для включения (которое будет использоваться в качестве значения атрибута Include сгенерированного элемента <SDKReference>).
arch(string) Архитектура, для которой был скомпилирован файл .so, либо device, либо simulator.
Для Windows указывает, что <SDKReference> должен включаться только при сборке для указанной архитектуры. Поддерживаемые значения x86, x64 или ARM.
device-target(string)
windows
Допустимые значения: win (или windows), phone или all.
Указывает, что <SDKReference> должен включаться только при сборке для указанного типа устройства.
versions(string)
windows
Указывает, что <SDKReference> должен включаться только при сборке для версий, соответствующих указанной строке версии. Значение может быть любой допустимой строкой диапазона версий семантического обозначения.

Для Android элемент <lib-file> используется для установки файлов .jar в libs-каталоге проекта. Он поддерживает только атрибут src, который содержит относительный путь к файлу .jar.

Примеры:

<lib-file src="src/BlackBerry10/native/device/libfoo.so" arch="device" />
<lib-file src="src/BlackBerry10/native/simulator/libfoo.so" arch="simulator" />

Для Windows:

<lib-file src="Microsoft.WinJS.2.0, Version=1.0" arch="x86" />
<lib-file src="Microsoft.WinJS.2.0, Version=1.0" versions=">=8.1" />
<lib-file src="Microsoft.WinJS.2.0, Version=1.0" target="phone" />
<lib-file src="Microsoft.WinJS.2.0, Version=1.0" target="win" versions="8.0" arch="x86" />

framework

Идентифицирует фреймворк (обычно часть ОС/платформы), от которого зависит плагин.

Атрибуты(тип)
Только для платформы:
Описание
src(string) Обязательно
Имя системного фреймворка или относительный путь к нему, включенному в файлы вашего плагина.
custom(boolean) Указывает, включен ли фреймворк в файлы вашего плагина.
weak(boolean) По умолчанию: false
Указывает, должна ли быть выполнена слабая ссылка на фреймворк.
type(string) Указывает тип фреймворка для добавления.
parent(string) По умолчанию: .
Устанавливает относительный путь к каталогу, содержащему подпроект, к которому добавить ссылку. По умолчанию, ., подразумевается проект приложения.
arch(string)
windows
Допустимые значения: x86, x64 или ARM.
Указывает, что фреймворк должен включаться только при сборке для указанной архитектуры.
device-target(string)
windows
Допустимые значения: win (или windows), phone или all.
Указывает, что фреймворк должен включаться только при сборке для указанного типа устройства.
versions(string)
windows
Указывает, что фреймворк должен включаться только при сборке для версий, соответствующих указанной строке версии. Значение может быть любой допустимой строкой диапазона версий семантического обозначения.
target-dir(string)
windows
Указывает подкаталог, в который должен быть скопирован фреймворк. На практике это наиболее важно, когда плагин содержит разные версии фреймворка для разных архитектур процессоров или целевых устройств, но с одинаковым именем. Это позволяет указать разные подкаталоги для каждой версии фреймворка, чтобы они не перекрывались друг с другом.
implementation(string)
windows
Устанавливает относительный путь к файлу .dll содержащему реализацию компонента WinMD, написанного на C++.
spec(string)
ios
В паре с type="podspec", это строка spec для CocoaPod, который вы хотите установить (только статическая библиотека). Поддержка CocoaPod существует только в cordova-ios 4.3.0 и cordova-cli 6.4.0. Для вашего плагина убедитесь, что вы добавили соответствующие <engine> теги и package.json зависимости для обеспечения обратной совместимости.
embed(boolean)
ios
По умолчанию: false
В паре с custom="true", устанавливается в true, если вы хотите встроить свой пользовательский фреймворк в пакет вашего приложения, чтобы его можно было динамически загрузить во время выполнения (динамический фреймворк). Это поместит ваш пользовательский фреймворк в раздел «Встроенные двоичные файлы» настроек вашего проекта Xcode. Поддерживается только в сочетании с cordova-ios@4.4.0 и cordova-cli@7.0.0

Примеры:

Для iOS:

<framework src="libsqlite3.dylib" />
<framework src="social.framework" weak="true" />
<framework src="relative/path/to/my.framework" custom="true" />
<framework src="GoogleCloudMessaging" type="podspec" spec="~> 1.2.0" />

В Android (по состоянию на cordova-android@4.0.0), теги framework используются для включения зависимостей Maven или для включения связанных проектов библиотек.

<!-- Depend on latest version of GCM from play services -->
<framework src="com.google.android.gms:play-services-gcm:+" />
<!-- Depend on v21 of appcompat-v7 support library -->
<framework src="com.android.support:appcompat-v7:21+" />
<!-- Depend on library project included in plugin -->
<framework src="relative/path/FeedbackLib" custom="true" />

Framework также можно использовать для включения пользовательских .gradle файлов в основной файл проекта build.gradle.

<framework src="relative/path/rules.gradle" custom="true" type="gradleReference" />

В Windows, использование custom='true' и type='projectReference' добавит ссылку на проект, которая будет добавлена к шагам компиляции и компоновки проекта Cordova. По существу, это единственный способ в настоящее время, чтобы пользовательский фреймворк мог работать с несколькими архитектурами, так как они явно строятся как зависимость ссылающимся приложением Cordova.

<framework src="path/to/project/LibProj.csproj" custom="true" type="projectReference"/>

Примеры использования этих специфичных для Windows атрибутов:

<framework src="src/windows/example.dll" arch="x64" />
<framework src="src/windows/example.dll" versions=">=8.0" />
<framework src="src/windows/example.vcxproj" type="projectReference" target="win" />
<framework src="src/windows/example.vcxproj" type="projectReference" target="all" versions="8.1" arch="x86" />
<framework src="src/windows/example.dll" target-dir="bin/x64" arch="x64" custom="true"/>

Еще один пример использования специфичных для Windows атрибутов для добавления ссылки на компоненты WinMD, написанные на C# и C++, чьи API будут доступны во время выполнения:

<!-- C# component that consists of one .winmd file -->
<framework src="lib\windows\component.winmd" versions="<10.0" />
<!-- C++ component with separated metadata and implementation-->
<framework src="lib\windows\x86\cppcomponent.winmd"
           implementation="lib\windows\x86\cppcomponent.dll"
           target-dir="component\x86" arch="x86" versions=">=10.0" />

podspec (iOS)

Идентифицирует CocoaPods Podfile, предоставляющий зависимости, от которых зависит плагин.

Этот элемент содержит теги <config> и <pods>.

config

Элемент <config> определяет URL-адреса источников, из которых извлекаются спецификации CocoaPods.

Этот элемент содержит один или несколько тегов <source>.

source

Атрибуты(тип) Описание
url Обязательно
URL-адрес источника спецификаций пакетов.

pods

Элемент <pods> определяет библиотеки CocoaPods.

Этот элемент содержит тег <pod> для каждой библиотеки CocoaPods.

Атрибуты(тип) Описание
use-frameworks(строка) По умолчанию: false
Если true, атрибут use_frameworks! объявляется в файле Podfile.
inhibit-all-warnings(строка) По умолчанию: false
Если true, атрибут inhibit_all_warnings! объявляется в файле Podfile.

pod

Атрибуты(тип) Описание
name Обязательно
Имя пакета
spec Спецификация пакета
swift-version Укажите версию Swift для библиотеки CocoaPods
git Вариант пакета git
branch Вариант пакета branch
tag Вариант пакета tag
commit Вариант пакета commit
configurations Вариант пакета configurations Для нескольких значений разделяйте их запятой.
http Вариант пакета http
path Вариант пакета path Пакет расположен в локальной файловой системе.
options Параметры пакета, объявленные в сыром формате. Если объявлены, другие параметры пакета перезаписываются.
Пример: options=":git => 'https://github.com/Alamofire/Alamofire.git', :tag => '3.1.1'"

Примеры:

<podspec>
  <config>
    <source url="https://github.com/brightcove/BrightcoveSpecs.git" />
    <source url="https://github.com/CocoaPods/Specs.git"/>
  </config>
  <pods use-frameworks="true">
    <pod name="AFNetworking" spec="~> 3.2" />
    <pod name="SDWebImage" spec="~> 4.0" />
    <pod name="Eureka" swift-version="3.3" />
    <pod name="AcknowList" />
    <pod name="Brightcove-Player-Core" spec="~> 6.3.4" />
    <pod name="Foobar1" git="git@github.com:hoge/foobar1.git" configurations="Debug"/>
    <pod name="Foobar2" git="git@github.com:hoge/foobar2.git" branch="next" configurations="Debug,Release"/>
    <pod name="FoobarSwift" swift-version="4.1" />
  </pods>
</podspec>

Этот пример приводит к Podfile

# DO NOT MODIFY -- auto-generated by Apache Cordova
source 'https://github.com/brightcove/BrightcoveSpecs.git'
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!
target 'HelloCordova' do
    project 'HelloCordova.xcodeproj'
    pod 'AFNetworking', '~> 3.2'
    pod 'SDWebImage', '~> 4.0'
    pod 'Eureka'
    pod 'AcknowList'
    pod 'Brightcove-Player-Core', '~> 6.3.4'
    pod 'Foobar1', :git => 'git@github.com:hoge/foobar1.git', :configurations => ['Debug']
    pod 'Foobar2', :branch => 'next', :git => 'git@github.com:hoge/foobar2.git', :configurations => ['Debug','Release']
    pod 'FoobarSwift'
end

info

Дополнительная информация для пользователей. Это полезно, когда вам нужны дополнительные шаги, которые нельзя легко автоматизировать или которые выходят за рамки возможностей командной строки. Содержимое этого тега выводится при установке плагина с помощью командной строки.

Пример:

<info>
You need to install __Google Play Services__ from the `Android Extras` section using the Android SDK manager (run `android`).

You need to add the following line to the `local.properties`:

android.library.reference.1=PATH_TO_ANDROID_SDK/sdk/extras/google/google_play_services/libproject/google-play-services_lib
</info>

hook

Представляет ваш пользовательский скрипт, который будет вызываться Cordova при возникновении определённого действия (например, после добавления плагина или вызова логики подготовки платформы). Это полезно, когда необходимо расширить стандартную функциональность Cordova. См. Руководство по хукам для получения дополнительной информации.

Пример:

<hook type="after_plugin_install" src="scripts/afterPluginInstall.js" />

uses-permission

В некоторых случаях плагину может потребоваться внести изменения в конфигурацию целевого приложения. Например, для регистрации C2DM на Android, приложение с идентификатором пакета my-app-id потребует разрешения, например:

<uses-permission android:name="my-app-id.permission.C2D_MESSAGE"/>

В таких случаях, когда содержимое, вставленное из файла plugin.xml неизвестно заранее, переменные могут быть указаны символом доллара, за которым следуют несколько заглавных букв, цифр или символов подчеркивания. Для приведенного выше примера, файл plugin.xml будет содержать этот тег:

<uses-permission android:name="$PACKAGE_NAME.permission.C2D_MESSAGE"/>

Командная строка заменяет ссылки на переменные указанным значением или пустой строкой, если значение не найдено. Значение ссылки на переменную может быть обнаружено (в данном случае, из файла AndroidManifest.xml ) или указано пользователем инструмента; точный процесс зависит от конкретного инструмента.

Plugman может запросить у пользователя указание необходимых переменных плагина. Например, ключи API для C2M и Google Maps можно указать в качестве аргумента командной строки:

plugman --platform android --project /path/to/project --plugin name|git-url|path --variable API_KEY=!@CFATGWE%^WGSFDGSDFW$%^#$%YTHGsdfhsfhyer56734

Некоторые имена переменных должны быть зарезервированы, например, $PACKAGE_NAME. Это уникальный идентификатор доменного имени обратного порядка для пакета, соответствующий CFBundleIdentifier на iOS или атрибуту package верхнего уровня элемента manifest в файле AndroidManifest.xml.

preference

Как видно из предыдущего раздела, иногда плагину может потребоваться, чтобы пользователь указал значения для своих переменных. Чтобы сделать эти переменные обязательными, тег <platform> должен содержать тег <preference>. Командная строка проверяет, что эти необходимые параметры переданы. Если нет, она должна предупредить пользователя о том, как передать переменную, и завершить работу с ненулевым кодом. К переменным можно обратиться в других частях plugin.xml с помощью синтаксиса $PREFERENCE_NAME.

Атрибуты(тип)
Только для платформы:
Описание
name(строка) Обязательно
Название переменной. Может содержать только заглавные буквы, цифры и символы подчеркивания.
default(строка) Значение по умолчанию для переменной. Если присутствует, его значение будет использовано, и не будет выдаваться ошибка в случае, если пользователь не введёт никакого значения.

Пример:

<preference name="MY_CUSTOM_STRING" default="default-value" />

<!--
    The preference may be referenced elsewhere in plugin.xml like so:
-->
<config-file target="./res/values/strings.xml" parent="/resources">
    <string name="custom">$MY_CUSTOM_STRING</string>
</config-file>

© 2012, 2013, 2015 The Apache Software Foundation
Licensed under the Apache License 2.0.
https://cordova.apache.org/docs/en/9.x/plugin_ref/spec.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API