Ionic2 将自定义 iOS 插件与 Alamofire 框架集成为依赖项
Ionic2 integrate custom iOS plugin with Alamofire framework as dependency
我已经在我的机器上安装了 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 框架 作为我插件的依赖项。我需要它在安装插件时 自动处理 。我从文档 (How to add framework as dependency) 中看到我应该添加:
<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>
我主要解决的问题:
制作了 Ionic 的全新启动器(使用最新版本的 cordova 和 ionic)- 由于 cli 和项目之间的不兼容,将迁移到较新的版本。
在自定义插件的plugin.xml中使用了标签
- 添加了平台 - 没有插件(目前)
- 手动添加插件(会生成podfile到平台等)
它会因为 Alamofire 而抛出错误。添加到 podfile use_frameworks!应该没问题。
我也是在触发平台添加时自动添加了插件ios
不幸的是,cordova 尚不支持此功能,但这是一个悬而未决的问题:
https://issues.apache.org/jira/browse/CB-11893
您可以在添加平台后使用挂钩,或者如果您不想每次都手动编写,则https://github.com/blakgeek/cordova-plugin-cocoapods-support。
我已经在我的机器上安装了 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 框架 作为我插件的依赖项。我需要它在安装插件时 自动处理 。我从文档 (How to add framework as dependency) 中看到我应该添加:
<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>
我主要解决的问题:
制作了 Ionic 的全新启动器(使用最新版本的 cordova 和 ionic)- 由于 cli 和项目之间的不兼容,将迁移到较新的版本。
在自定义插件的plugin.xml中使用了标签
- 添加了平台 - 没有插件(目前)
- 手动添加插件(会生成podfile到平台等) 它会因为 Alamofire 而抛出错误。添加到 podfile use_frameworks!应该没问题。
我也是在触发平台添加时自动添加了插件ios
不幸的是,cordova 尚不支持此功能,但这是一个悬而未决的问题: https://issues.apache.org/jira/browse/CB-11893
您可以在添加平台后使用挂钩,或者如果您不想每次都手动编写,则https://github.com/blakgeek/cordova-plugin-cocoapods-support。