【问题标题】:How to use platform-specific plugins in Cordova app dev workflow?如何在 Cordova 应用程序开发工作流程中使用特定于平台的插件?
【发布时间】:2013-11-11 16:52:36
【问题描述】:

我是使用 Cordova 开发应用程序的新手,但我的很多工作都做得很好。我刚刚成功实现了'phonegap-facebook-plugin'。 但是,按照说明,我将许多文件(来自 facebook SDK 和插件)直接放入 /platform/ios/ 目录 - 这意味着我的代码不是在根 /www/ 目录中工作并同时构建两个平台,而是现在不太“灵活”并且是特定于平台的。 有没有更好的方法来构建我的文件和/或工作流程?我错过了一个步骤或技巧吗?

感谢您的帮助。

【问题讨论】:

    标签: android ios facebook cordova


    【解决方案1】:

    从 Cordova 3.x 开始,有一个新的 cordovacommand-line interface 将极大地帮助您组织多个操作系统的代码。您将使用 CLI 创建一个项目,然后在 /www/ 主文件夹中进行所有开发。然后,您可以使用 CLI 运行命令,将您的 /www/ 代码复制到每个平台的 Web 资产的适当位置(如 Android 的 /myApp/assets/www/。)

    在这里查看我的答案:Should a phonegap plugin be declared in the config.xml file?

    我将讨论如何创建目录结构,如何对/www//merges/ 文件夹进行版本控制,以及如何将/platforms/ 中的任何内容视为构建工件。 (此文件夹中的内容不一定是构建工件,但如果您在进行跨平台工作,那么这样考虑会很有帮助。)

    如果您只是为单个平台开发,或者正在对平台的本地部分进行黑客攻击,那么您将在这些文件夹中进行更改。不过,我不向大多数人推荐这种方法,因为绝大多数用例都是使用 HTML5 创建跨平台应用程序。

    我一直在编写文档以使这一点更加清晰。新的概述指南应该对您有所帮助:https://github.com/mbillau/cordova-docs/blob/30fb71d11b4db5d34b3ff1c48a16443d5fed1be3/docs/en/edge/guide/overview/index.md(如果您阅读了它但仍有疑问,请告诉我,以便我可以在文档中解决这些问题,每个人都会受益。)

    编辑:我没有看到您的大部分问题是关于插件的。应该发生的是,如果您为 Cordova 3.x 更新了插件,那么您应该能够使用cordova plugin add ... 安装它。这应该为您将本机和 .js 文件复制到 /plugins/ 文件夹中。然后,当您执行cordova prepare 时,它将将该插件的特定平台文件复制到特定平台文件夹中。因此,您不必到处复制文件。不过,我很确定 3.x 不支持您使用的插件,在这种情况下......我真的不知道该告诉您什么。运行准备应该只是复制文件,而不是删除已经存在的文件......但我并不积极。

    【讨论】:

    • MBillau - 你会在这里看看我的 Cordova 插件开发问题吗:stackoverflow.com/q/20010461/273628?我认为这在任何地方的 Cordova 文档中都没有解决(甚至在 wiki 上也没有)。
    • 嘿,这是一个很好的问题。不幸的是,我对插件开发并不熟悉。我会考虑一下并尝试在几天内回答您的问题,但与此同时,您可以在 freenode 上的#cordova 和#phonegap 上提问。我知道插件开发故事确实需要工作,您可以借此机会帮助我们找出插件开发人员的最佳工作流程(以及其他事情,例如识别文档漏洞)。
    • MBillau - 谢谢。 Mark Pruce - 很抱歉在您的问题的答案中劫持了 cmets。为你们俩点赞!
    • 我认为文档应该包含一个用例的解释,在该用例中,您在 iOS 上选择插件 X 和在 Android 中选择插件 Y,包括 1.如何安装仅一个平台的插件 X 2.如何您是否签入了 javascript,以便您拥有 if (platform is iOS) { objectX.methodOfX(); else if (platform is Android) { objectY.metofOfY(); }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多