Подтвердить что ты не робот

Если в файле config.xml объявлен плагин phonegap?

Я новичок в разработке телефонных разговоров, поэтому у меня есть несколько вопросов:

1) Я использую плагин акселерометра. Я прочитал в руководстве, что мне нужно объявить плагин в файле config.xml, чтобы его использовать. Однако я заметил, что даже если я удалю объявление из файла config.xml

<feature name="Accelerometer">
    <param name="android-package" value="org.apache.cordova.AccelListener" />
</feature>

акселерометр все еще работает.

Поэтому я хотел бы спросить вас, если в версии phonegap 3.0.0 использование файла config.xml устарело. Если это случай, то где происходит привязка?

2) Я использую платформу android для создания приложения. В структуре проекта есть три файла config.xml с различным контентом:

  • a) В активах /www/phonegap -app-hello-world-3.0.0/www/config.xml
  • b) В активах /www/phonegap -app-hello-world-3.0.0/config.xml
  • c) В файле res/xml/config.xml

Какая польза от каждого из них? Где я предполагаю объявить свою пробку? Я сделал это в файле res/xml/config/xml

Спасибо

4b9b3361

Ответ 1

Я уверен, что причина, по которой вы все еще можете использовать плагин, состоит в том, что вы либо отредактировали неправильный config.xml, либо не запустили средства командной строки cordova для распространения ваших изменений в правильный файл config.xml, который на самом деле используемый приложением.

В проекте Cordova 3.x есть несколько файлов config.xml в разных местах. Я попытаюсь дать вам обзор различных местоположений файлов и как вы должны взаимодействовать с ними. Имейте в виду, что это происходит, когда вы используете CLI (Командная строка-интерфейс). Я создал эту структуру каталогов, набрав:

cordova create {MyApp}
cordova platform add android ios
cordova plugin add org.apache.cordova.network-information

Или до Кордовы 3.1, замените последнюю строку следующим образом:

cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-network-information.git

Если вы используете только сценарии оболочки уровня платформы для создания приложения ( "старый" способ, который мы сделали в Cordova 2.X), вы обычно можете использовать один и тот же рабочий процесс, но ему нужно Использовать Plugman для управления плагинами. (Мы находимся в процессе документирования этих двух разных "рабочих процессов".)

Во-первых, при создании приложения с cordova create MyApp он создаст пустую структуру проекта следующим образом:

/myApp/
        /www/           # This is where your "cross-platform' files go.
                        # The build tools copy these files over to the correct
                        # asset folder for each platform, like /assets/www/ for
                        # android or just /www/ for iOs. This is where you should
                        # be doing most/all of your work and is what should
                        # probably be version controlled.
        /platforms/
            /android/   # These will only appear after `cordova platform add`
            /ios/       # You should generally not touch these file as they are
                        # recreated quite often, although changes will persist.
        /plugins/
            /android/   # These will only appear after `cordova plugin add`. They
                        # pretty much just contain the native and web plugin code
                        # for all platforms that a plugin supports.
            /ios/
        /merges/        # This is where you can place platform-specific code that
                        # you write that will get merged in with your cross
                        # platform source, see the "customize each platform"
                        # section of: http://cordova.apache.org/docs/en/3.0.0/guide_cli_index.md.html

Вы должны внести все свои изменения в файлы в /www/, который является исходным кодом кросс-платформы. Все, что находится в этой папке, обычно будет скопировано и распространено на платформу www при использовании инструментов командной строки (будь то /assets/www для Android или просто /www/ для iOS). Таким образом, вам нужна только одна папка с исходным кодом для вашего приложения - это папка, которую вы должны иметь при управлении версиями. Любые изменения конфигурации приложения в целом, которые вы хотите, должны быть внесены в файл config.xml, размещенный в этом месте; позже, когда вы используете инструменты, этот файл config.xml будет скопирован (и иногда изменен с информацией о конфигурации на платформе) в соответствующее место для каждого приложения, например /platforms/android/res/xml/config.xml (для android) или /platforms/ios/AppName/config.xml (для iOS).

Предположим, вы хотите добавить плагин ускорения, набрав cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-network-information.git. Если вы запустите diff после этой команды, вы увидите, что следующие файлы были изменены или добавлены:

плагины/org.apache.cordova.network-информация/  - Эта новая папка содержит всю метаинформацию и код плагина, включая веб-и собственный код, для каждой поддерживаемой платформы

плагины /android.json и плагины /ios.json  - Оба этих файла теперь отредактированы, чтобы содержать ссылку на плагин сетевой информации. Здесь вы увидите бит конфигурации JSON. Когда вы добавите больше плагинов, этот файл будет постоянно расти, чтобы ссылаться на все из них. Этот файл сообщает инструментам командной строки, какой код ему нужно заменить и в каких файлах. Например, после добавления плагина cordova-plugin-network-info вы увидите это в /plugins/android.json:

{
        "prepare_queue": {
            "installed": [],
            "uninstalled": []
        },
        "config_munge": {
            "res/xml/config.xml": {
                "/*": {
                    "<feature name=\"NetworkStatus\"><param name=\"android-package\" value=\"org.apache.cordova.networkinformation.NetworkManager\" /></feature>": 1
                }
            },
            "AndroidManifest.xml": {
                "/*": {
                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" />": 1
                }
            }
        },
        "installed_plugins": {
            "org.apache.cordova.network-information": {
                "PACKAGE_NAME": "io.cordova.hellocordova"
            }
        },
        "dependent_plugins": {}
    }

Это говорит сценариям написать имя функции в res/xml/config.xml (опять же, для iOS это будет другим, так как файл конфигурации уровня приложения находится в другом месте на iOS!), а также сообщает ему записать android.permission.ACCESS_NETWORK_STATE в AndroidManifest.xml(вы не найдете ничего подобного на iOS, так как не требуется никаких разрешений.) (Кстати, то, что записывается в каждый из этих json файлов, определяется в файле plugin plugin.xml.)

платформы /Android/AndroidManifest.xml  - Инструменты CLI позаботились о том, чтобы добавить любое разрешение, определенное в файле xml плагина, в AndoridManifest. Да, это происходит, когда вы делаете cordova plugin add. Эти разрешения напрямую копируются из файла plugins/android.json. Эти разрешения также удаляются, когда вы 'rm' плагин. Тем не менее, редактирование этих файлов выполняется интеллигентно, поскольку вы можете добавлять пользовательские вещи в AndroidManifest.xml, и они будут сохраняться.

платформы/Android/активы/WWW/cordova_plugins.js  - Этот файл похож на ресурсы html, которые будут составлять ваше окончательное приложение, - эти ресурсы (почти ничего в /platform/ ) не должны редактироваться вами, потому что они будут заменены инструментами CLI довольно часто. Этот файл используется Кордовой во время выполнения, чтобы загрузить добавленный код плагина; он также заботится о сопоставлении пространств имен JavaScript с фактическими файлами (это объявление "clobbers" ). Например, я вижу:

{
    "file": "plugins/org.apache.cordova.network-information/www/network.js",
    "id": "org.apache.cordova.network-information.network",
    "clobbers": [
        "navigator.connection",
        "navigator.network.connection"
    ]
}

это означает, что в вашем коде приложения navigator.connection и navigator.network.connection будут отображаться код, содержащийся в plugins/org.apache.cordova.network-information/www/network.js.

платформы /Android/RES/XML/config.xml- Это файл config.xml на уровне платформы для Android. Этот файл создается инструментами CLI. Большая часть информации, которую вы пишете на вашем верхнем уровне config.xml(/MyApp/www/config.xml), будет скопирована здесь, но не все (и есть некоторые дополнительные вещи, я не совсем уверен, где дополнительный материал приходит.) Это файл, который читает Android, когда он запускает ваше приложение, и ему нужно проверить ваши данные конфигурации. Например, код Кордовы Android будет использовать это, чтобы увидеть, какие плагины установлены и какие родные классы сопоставляются с теми пространствами имен. Я думаю, что единственный способ, которым вы могли отредактировать это, - использовать /merges/folder, о котором я упоминал выше.

платформы/ИОС/{AppName}.xcodeprojcj/project.pbxproj  - iOS эквивалент AndroidManifest.xml

платформы/ИОС/{AppName}/config.xml  - Это файл конфигурации config.xml на платформе для iOS. Посмотрите, как это происходит в другом месте, чем на Android? (например, не в /res/xml/config.xml?) Этот файл автоматически обновляется CLI, и вы не должны его трогать.

платформы/ИОС/WWW/cordova_plugins.js  - Тот же файл существует на Android (но в другом месте) и имеет ту же цель: помочь Кордове загружать ваши плагины во время выполнения, когда кто-то использует приложение

Я думаю, что в значительной степени описаны все файлы и папки, которые используются в проекте cordova.

Надеюсь, теперь вы увидите, что на самом деле вы должны редактировать файл /www/config.xml. Этот файл будет использоваться для создания /platforms/android/res/xml/config.xml и /platforms/ios/{AppName}/config.xml, которые используются Кордоной при запуске упакованного приложения. Части этого файла будут использоваться для редактирования файлов AndroidManifest.xml и project.pbxprojc(для Android и iOS, соответственно.)

Это объясняет, почему вы все еще могли использовать акселерометр в своем приложении даже после удаления строк <feature name="Accelerometer"> - они просто были переписаны на платформенный уровень config.xml из главного приложения config.xml

Я думаю, что осталось только выяснить, как вы можете редактировать конфигурационные файлы на платформе; например, как вы можете редактировать файл AndroidManifest.xml? Ну, получается, что вы можете просто отредактировать файл /platforms/android/AndroidManifest.xml напрямую - CLI достаточно умен, чтобы не стирать ваши настройки, когда он автоматически добавляет или удаляет разрешения плагина. Поэтому, по какой-то причине вам нужно поддерживать более низкую версию Android, чем поддерживает Кордова, вы можете просто изменить объект, и он будет сохраняться, хотя ваши вызовы cordova plugin add|rm {id}.

Я надеюсь, что это прояснит ситуацию, не стесняйтесь задавать больше вопросов!

Ответ 2

Так как cordova 3.5, мы можем сохранить плагины в файле config.xml

<feature name="Network Information">
    <param name="id" value="org.apache.cordova.network-information" />
    <param name="version" value="0.2.10" />
</feature>

Следующая команда будет извлекать плагины, определенные в файле config.xml

cordova restore plugins --experimental

Следующая команда будет записывать текущие установленные плагины в файле config.xml(3.5):

cordova save plugins --experimental

В 5.x и более поздних версиях:

cordova plugin save

Источник: http://cordova.apache.org/news/2014/07/10/tools-release.html

Ответ 3

Так как Кордова 5.0, да.

<?xml version='1.0' encoding='utf-8'?>
    ...
    <plugin name="cordova-plugin-console" spec="^1.0.0" />
    ...
</ xml>

Масштабируемые плагины в существующем проекте:

$ cordova plugin save

В новой установке (или после очистки) вы можете добавить все плагины с помощью:

$ cordova prepare

Добавление/обновление/удаление также можно выполнить с помощью cli:

$ cordova plugin add <plugin[@<version>] | directory | git_url> --save
$ cordova plugin update <plugin[@<version>] | directory | git_url> --save
$ cordova plugin remove <plugin> --save

На данный момент нет массового обновления. Вы можете удалить каталог plugins, затем запустите $cordova prepare.

Источники:

Ответ 4

Config.xml в основном используется для сборки phonegap.

Если вы используете phonegap 3, вы должны управлять своими плагинами с помощью CLI:

$ phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-network-information.git

Единственный файл config.xml, который вы должны изменить, это /www/config.xml, остальные автоматически генерируются из него при создании проекта, используя:

$ phonegap build ios

Ответ 5

Вы можете проверить это для плагина ускорителя: Плагин Acceleramator для Phonegap.

Также вы можете искать там любой плагин, который вам нужен