Ionic2 интегрирует пользовательский плагин iOS с фреймворком Alamofire в качестве зависимости

Я установил на свой компьютер Cordova 7.0 и Ionic 3.4.0. Я создал собственный плагин с помощью plugman, и он имеет следующую структуру:

src - ios & android folders with the native files
www - .js file
plugin.xml
package.json

Добавление его в проект Ionic 2 (который использует cordova-ios 4.4.0) работает нормально, он генерируется должным образом, и я могу его использовать.

Теперь мне нужно добавить фреймворк Alamofire в качестве зависимости к моему плагину. Мне нужно, чтобы это обрабатывалось автоматически при установке плагина. Я видел из документации (Как добавить фреймворк как зависимость), что я должен добавить:

<framework src="GoogleCloudMessaging" type="podspec" spec="~> 1.2.0" />

К plugin.xml в настраиваемом плагине. Я добавил его, но когда я повторно добавляю плагин в проект ionic2, он не устанавливает также framework / pod.

Я видел другие темы, связанные с моей, но ни одна из них мне не помогает. Я все перепробовал, но не могу.

Кроме того, что-то странное с тегом из plugin.xml, согласно документации:

В паре с type = "podspec" это строка спецификации для CocoaPod, который вы хотите установить (только статическая библиотека). Поддержка CocoaPod существует только в cordova-ios 4.3.0 и cordova-cli 6.4.0. Убедитесь, что вы добавили в свой плагин соответствующие теги и зависимости package.json, чтобы обеспечить обратную совместимость.

Разве это не странно, подойдёт ли это на более новых версиях cordova-ios?

Плагин - содержимое package.json:

{
    "name": "cordova-plugin-requestService",
    "version": "1.0.0",
    "author": "*******",
    "private": true,
    "engines": {
        "cordovaDependencies": {
            "1.0.0":  { "cordova-ios": ">=4.4.0" }
        }
    }
}

содержимое plugin.xml:

<!-- iOS -->
<platform name="ios">
    <dependency id="cordova-plugin-add-swift-support" version="^1.6.0" />
    <framework src="Alamofire" type="podspec" spec="~> 4.4.0" />
    <config-file target="config.xml" parent="/*">
        <feature name="requestService">
            <param name="ios-package" value="requestService" />
        </feature>
    </config-file>
    <source-file src="src/ios/requestService.swift" />
</platform>

person Alex    schedule 15.06.2017    source источник


Ответы (1)


В основном я решил проблемы:

  • Сделал новый стартер Ionic (с последними версиями Cordova и Ionic) - будет перенесен на более новые версии из-за несовместимости между cli и проектом.

  • Используемый тег в plugin.xml настраиваемого плагина

  • Добавлена ​​платформа - без плагина (пока)
  • Добавьте плагин вручную (он сгенерирует подфайл в платформу и другие вещи), хотя и выдаст ошибку из-за Alamofire. Добавьте в подфайл use_frameworks! и все должно быть хорошо.

Я также добавил плагин автоматически при запуске платформы add ios

К сожалению, Cordova еще не поддерживает это, но это открытый вопрос: https://issues.apache.org/jira/browse/CB-11893

Вы можете использовать ловушку после добавления платформы или https://github.com/blakgeek/cordova-plugin-cocoapods-support, если вы не хотите писать его каждый раз вручную.

person Alex    schedule 16.06.2017