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>
1 ответ
Я в основном решил проблемы:
Сделал новый стартер Ionic (с последними версиями как cordova, так и ionic) - перейдет на более новые версии из-за несовместимости между cli и project.
Используемый тег в plugin.xml пользовательского плагина
- Добавлена платформа - без плагина (пока)
- Добавьте плагин вручную (он сгенерирует подфайл в платформу и другие вещи), хотя он выдаст ошибку из-за Alamofire. Добавьте в подфайл use_frameworks! и это должно быть хорошо.
Я также добавил плагин автоматически при запуске платформы IOS
К сожалению, cordova пока не поддерживает это, но это открытый вопрос: https://issues.apache.org/jira/browse/CB-11893
Вы можете использовать либо ловушку после добавления платформы, либо https://github.com/blakgeek/cordova-plugin-cocoapods-support если не хотите писать ее каждый раз вручную, вручную.