Cordova не строит - неправильный файл Platform Config.xml

Я использую Cordova 6.3.1. Попытка сборки для iOS с помощью Cordova CLI приводит к проблеме, как показано ниже. $ cordova build ios

Error: Pruning at selector "/widget/plugins" from "/Users/path/to/cordova/project/cordova/platforms/ios/Myproj/config.xml" went bad.

Я также получаю ту же ошибку при обновлении платформы:

$ cordova platform update ios

Updating ios project...
iOS project updated with [email protected]
Error: Pruning at selector "/widget/plugins" from "/Users/path/to/cordova/project/cordova/platforms/ios/Myproj/config.xml" went bad.

1) Что именно означает эта ошибка обрезки?

Я заметил, что файл config.xml, расположенный в папке cordova/platforms/ios/Myproj/, не содержит никакой информации из моего корневого файла config.xml. Это просто файл по умолчанию, который начинается так:

<widget xmlns     = "http://www.w3.org/ns/widgets"
        id        = "io.cordova.helloCordova"
        version   = "2.0.0">
    <name>HelloCordova</name>

    <description>
        A sample Apache Cordova application that responds to the deviceready event.
    </description>

Мой корневой файл config.xml начинается так:

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.myproj.app" version="1.0.38" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>Myproj</name>
    <description>
        Some description.
    </description>

Между тем, установка выглядела нормально, когда я сделал следующее, чтобы добавить платформу:

$ cordova platform add ios

Adding ios project...
Creating Cordova project for the iOS platform:
        Path: ../../../../../desktop/dev/path/to/my/project/cordova/platforms/ios
        Package: com.myproj.app
        Name: Myproj
iOS project created with [email protected]
Installing "com.mbppower.camerapreview" for ios
Installing "com.phonegap.plugins.PushPlugin" for ios
Installing "cordova-plugin-device" for ios
Installing "cordova-plugin-globalization" for ios
Installing "com.telerik.plugins.healthkit" for ios
Installing "com.transistorsoft.cordova.background-geolocation" for ios
Installing "cordova-plugin-dialogs" for ios
Installing "cordova-plugin-background-fetch" for ios
Installing "cordova-plugin-afnetworking" for ios
Plugin "cordova-plugin-background-fetch" already installed on ios. Making it top-level.
Installing "cordova-plugin-camera" for ios
Installing "cordova-plugin-compat" for ios
Dependent plugin "cordova-plugin-compat" already installed on ios.
Installing "cordova-plugin-console" for ios
Plugin "cordova-plugin-device" already installed on ios. Making it top-level.
Plugin "cordova-plugin-dialogs" already installed on ios. Making it top-level.
Installing "cordova-plugin-file" for ios
Dependent plugin "cordova-plugin-compat" already installed on ios.

The Android Persistent storage location now defaults to "Internal". Please check this plugins README to see if you application needs any changes in its config.xml.

If this is a new application no changes are required.

If this is an update to an existing application that did not specify an "AndroidPersistentFileLocation" you may need to add:

      "<preference name="AndroidPersistentFileLocation" value="Compatibility" />"

to config.xml in order for the application to find previously stored files.


Installing "cordova-plugin-file-transfer" for ios
Dependent plugin "cordova-plugin-file" already installed on ios.
Installing "cordova-plugin-geolocation" for ios
Dependent plugin "cordova-plugin-compat" already installed on ios.
Dependent plugin "cordova-plugin-globalization" already installed on ios.
Installing "cordova-plugin-http" for ios
Dependent plugin "cordova-plugin-file" already installed on ios.
Installing "cordova-plugin-inappbrowser" for ios
Installing "cordova-plugin-media-capture" for ios
Dependent plugin "cordova-plugin-file" already installed on ios.
Dependent plugin "cordova-plugin-compat" already installed on ios.
Installing "cordova-plugin-pedometer" for ios
Installing "cordova-plugin-photokandy-video-thumbnail" for ios
Dependent plugin "cordova-plugin-file" already installed on ios.
Installing "cordova-plugin-whitelist" for ios
Installing "phonegap-plugin-barcodescanner" for ios

2) Как работает установка платформы? В частности, как он сообщает, что должно быть в специфичном для платформы файле config.xml?

Я надеюсь, что на эти вопросы можно будет ответить в контексте запуска моей сборки. Некоторая другая справочная информация: я использую Sencha Touch и строю с помощью $sencha app build native, используя Sencha Cmd, которая инициировала исходную папку проекта Cordova.


person writofmandamus    schedule 23.08.2016    source источник


Ответы (2)


cordova plugins --list откройте x-code, найдите эти плагины, возможно, в списке плагинов Cordova есть некоторые плагины, но в проекте ios их нет.

вы можете удалить его своими руками и установить снова platform > ios > fecth.json or ios.json or package.json надеюсь, полезно

извините, я не силен в английском.

person weisss    schedule 25.08.2016

Для меня сработало решение из этого поста: ошибка обрезки Cordova для XML-файл конфигурации Android

Вы должны удалить все плагины и платформы, обновить Cordova, а затем снова добавить все плагины и платформы. Чтобы очистить плагины и мою платформу ios, я написал скрипт npm:

{
    ...
    "rm-plugins": "cordova plugins list | awk '{print $1}' | xargs cordova plugins rm",
    "rm-platforms": "cordova platforms remove ios",
    "cleanup": "npm run rm-platforms && npm run rm-plugins && npm update cordova"
    ...
}

PS: у меня не совсем то же сообщение об ошибке, что и у вас:

Error: Pruning at selector "/*/plugins" from "/Users/Thomas/work/repos/nexboard/iOS/nexboard/platforms/ios/neXboard/config.xml" went bad.
person Chaoste    schedule 11.10.2016