【问题标题】:How do I integrate (3rd party) SDK via config.xml for Ionic/Cordova?如何通过 config.xml 为 Ionic/Cordova 集成(第 3 方)SDK?
【发布时间】:2016-06-14 14:15:49
【问题描述】:

我正在使用 this plugin 并将其集成为 this demo-application 所做的那样。那使用Star SDK

但是,当我进行 Ionic 构建时,如何更改我的 config.xml 中始终添加/加载 SDK 的内容?因为现在当我们从不同的 MacBook 构建时,我们都必须将它重新添加到我们的项目中。

它现在专门针对 StarIO SDK,但我认为其他人在添加 SDK 时可能会遇到同样的困难。

编辑:每次从 Ionic 项目归档 iOS 应用程序之前,我都必须手动执行以下操作:

  • 在我的 Xcode 项目中包含框架和包 (SDK)
  • 与一些默认框架/库链接,例如:ExternalAccessory.framework
  • info.plist 中设置外部附件协议

这是很多工作,尤其是当我们每周有多个构建时。而且我们并不总是部署在同一台机器上,很难忘记一个步骤。

我在很多 Cordova 包中看到了这一点,例如,当没有 Podfile 时,您需要手动执行一些操作,或者它总是需要一些配置。

【问题讨论】:

  • 我每天都与 Cordova 和 Ionic 一起工作,我很难弄清楚你想问什么。

标签: cordova ionic-framework cordova-plugins


【解决方案1】:

我猜你必须在这里做一些手工工作。如果它是一个简单的命令,您可以在 package.json 中创建一个“脚本”并使用“npm run script_name”运行它。

根据您的特定需求,您还可以向 gulpfile.js 添加一个任务(这由 ionic 构建使用)或编写一个 JS 脚本,该脚本通过特定的 Cordova 生命周期步骤执行。 Check this out 了解更多详情。默认的 Ionic 项目有一个 example hook,您可以查看灵感。

【讨论】:

【解决方案2】:

这是 StarIOPlugin 创建者应该做的事情,而不是告诉您手动添加 Star SDK。首先在 StarIOPlugin 的 github 存储库中添加一个问题。

如果作者不想做,那你可以fork插件自己更新。

您应该首先将StarIO.framework 添加到src/ios 文件夹

现在您只需编辑plugin.xml 文件

首先在plugin.xml中加入这一行,将框架复制到Xcode项目中

<source-file src="src/ios/StarIO.framework" framework="true" />

然后添加这两行以添加蓝牙和外部附件框架

<framework src="CoreBluetooth.framework" />
<framework src="ExternalAccesory.framework" />

最后,写在 info.plist 上使用

<config-file target="*-Info.plist" parent="UISupportedExternalAccessoryProtocols">
    <array>
        <string>jp.star-m.starpro</string>
    </array>
</config-file>

我没有测试,但应该足够了。

【讨论】:

    【解决方案3】:

    我是最初贡献 iOS 支持的开发人员,我不明白您为什么需要多次执行您提到的配置。您是否从项目中删除和添加 iOS 平台?这是唯一应该导致这种情况的原因。

    我没有在我的原始 PR 中包含该库有几个原因。但我的推理很可能有缺陷。

    这就是我的想法......

    • 我不确定将他们的库包含在另一个开源项目中是否符合 Star 软件许可证。
    • 包含框架将永远使贡献者有义务使框架与 Star 的版本保持同步
    • 有多种适用于 iOS 的框架可与此插件配合使用,一种适用于常规蓝牙打印机,另一种适用于 mPOP。因此,包含其中一种框架可能会限制用户与所有可能平台集成的能力。

    无论如何,应该改进文档以帮助其他开发人员解决相同的问题。

    【讨论】:

    • 他说如果他尝试从另一台 mac 构建,他必须重新添加这个,如果你在一个团队中或有几台开发机器,你必须在每台机器上执行所有手动步骤。有时平台更新存在错误,您必须删除并重新添加。关于您的观点,1,您正在分发他们的框架,而不是他们的代码,因此不应该存在许可证问题。 2,是的,贡献者应该不时更新框架。 3 我认为我没有完全理解这一点。
    • 在第 1 点,框架没有被编译。我必须包含来自 StarIO 的源代码,他们的许可证规定您不能重新分发他们的代码。但是,如果我误解了这一点,请告诉我。关于第 3 点,我试图解释的是该插件可以使用两种不同的 SDK,这取决于您尝试集成的确切硬件。因此,我不想将每个人都锁定在一个或另一个中,因为他们需要选择要使用的 SDK。希望这更有意义。
    • 由于问题只是 iOS,在 #1 上,他们提供了一个 .framework,而不是实际代码,所以我认为可以分发。我刚刚看到他们提供了 android 代码,但他们也提供了 .jar,所以我认为分发 .jar 是可以的(我认为,但我不是律师)。对于#3,你是对的,我没有注意到他们提供不同的 SDK,我只是下载了我看到的第一个。
    猜你喜欢
    • 2016-02-28
    • 2015-03-27
    • 1970-01-01
    • 2020-08-29
    • 2019-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多