如何结合使用Cordova、Crosswalk和Ionic框架

11

我正在尝试创建一个移动应用程序,将上述项目组合起来,但我不确定该怎么做。

这里有两个我找到的选项:

  1. 使用https://github.com/MobileChromeApps/mobile-chrome-apps - 我对它的问题是似乎它还没有即战力。(虽然有人告诉我它是这样,但我找不到任何支持材料)。
  2. 创建一个新的ionic项目,然后添加Cordova,接着清空platforms/android/CordovaLib/文件夹,并将Crosswalk文件夹中的文件移动到其中(按照https://www.thepolyglotdeveloper.com/2014/10/use-crosswalk-ionic-framework-android-apps/中的说明)- 这个解决方案相当简单,但对我来说似乎有些hackish(笨拙的)...

我应该使用哪个选项?还有其他选项吗?

干杯,

---- 更新 ----

Ionic已经在他们自己的CLI中整合了将Crosswalk结合起来的能力,在http://ionicframework.com/blog/crosswalk-comes-to-ionic/上查看吧。


也许这取决于您是否关心移动Chrome应用程序中的所有额外Google服务?而且在您提供的链接中,第三行说“开发者预览版”,所以我猜它真的不应该是生产就绪的... - QuickFix
1
顺便说一下,谢谢你提供的第二个链接,我不知道 cordova-crosswalk 只适用于 cordova-android 3.5(我一直在尝试解决 https://crosswalk-project.org/documentation/cordova/migrate_an_application.html 的问题)。 - QuickFix
最后一个注记,您应该使用3.5.1而不是3.5 (https://crosswalk-project.org/blog/crosswalk-cordova-update-351.html)。 - QuickFix
3个回答

13

关于Crosswalk

我们希望在今年年底之前,Crosswalk支持将默认提供给vanilla cordova。您可以通过跟随cordova-android 4.0开发分支上的工作来开始尝试这个功能。直接将该平台(和所需的插件)添加到新的ionic项目中应该是可行的。

Mobile Chrome应用与cordova-cli兼容,并且确实已经默认捆绑了Crosswalk。与vanilla cordova的主要区别在于,应用程序必须遵循Chrome打包应用程序的结构(具有清单和后台脚本),但是可以在桌面版Chrome上运行。请参见此处更长的答案。(我不会读太多开发人员预览标签..我们只是喜欢称之为beta 😉)

当前提供的crosswalk-project.org 提供的 cordova流程 不使用cordova多平台应用程序结构。它直接使用cordova-android本地应用程序模板。这意味着您将无法使用 cordova cli,也无法使用 downstreams(例如ccaionic)。您还显然不能添加其他平台,升级更加困难,并且管理插件稍微复杂一些(必须直接使用plugman工具)。

目前没有无需进行某些取舍就可以使用cordova+crosswalk进行开发的选项。

关于Cordova、Ionic、Chrome Apps for Mobile等项目的兼容性

大多数 Cordova 下游项目“大部分”与 CLI 兼容。例如,cca CLI(Chrome 应用程序移动版使用的命令行界面)支持像 createplugin addplatform add 这样的命令,因此可以安装 Ionic 插件。反之亦然,Chrome Api's for Mobile 是作为 Cordova 插件开发的,可以使用各自的 CLI 添加到 Ionic 或 Cordova 项目中。
大多数下游项目还使用相同的项目目录结构(plugins/platforms/www/hooks/ 等),所以您通常可以在一个项目中混合使用各种 CLIs。
话虽如此,《cca》需要定制 CLI 的原因是因为我们对你的 Cordova 项目进行了一些非标准修改,这些修改直接在原始 Cordova 中不受支持(但会在将来实现)。Ionic 也是如此。
我在各种 Cordova meetups 上建议过,Ionic、PhoneGap 和 CCA 等下游项目应该更好地协作。因此,你的问题正是要点。我们基本上兼容,但发现不同之处目前留给开发者自行解决。

非常好的答案,非常感谢!我会在接下来的几个小时/天里消化它,并且如果您不介意的话,可能会回来问几个其他问题:D顺便说一句,很有趣,在问我的问题之前,我看到了您关于移动Chrome应用程序的答案,并想联系您,现在您问我关于USB的问题(没有将其连接到您...图片比昵称更好),故事的寓意是,乐于助人是有益的;) - Nimrod Yonatan Ben-Nes
1
好的,我在Ionic的www文件夹中设置了CCA项目(保留了CCA清单和background.js文件),当我尝试运行它时,它正在加载但是出现了Uncaught TypeError: Cannot read property 'Keyboard' of undefined (app.js:14)错误。问题是window.cordova.plugins未定义(window.cordova已定义)。我已经从index.html中注释掉了cordova.js <script>标签。顺便说一下,该项目确实加载了,只是没有完全运行。 - Nimrod Yonatan Ben-Nes
哦,最后一个问题,只是为了确认一下,CCA适用于Android 4.X和iOS6+(包括iOS8),对吗? - Nimrod Yonatan Ben-Nes
我创建了一个新问题,详细讲述了这个问题:https://dev59.com/E4Xca4cB1Zd3GeqPFDei。如果您能快速查看一下就太棒了。 - Nimrod Yonatan Ben-Nes

5
这个YouTube上的人制作了一个不错的教程,对我很有帮助:https://www.youtube.com/watch?v=0I1OjJLVLMo 结果非常棒,值得花费时间解决。
该人说CrossWalk在任何低于Android 4.4的设备上都会产生很大的影响(因为Chromium是在此版本之后添加的)。
祝你好运。

实际上,我写的第二个链接是同一个人制作的视频所在的文章链接,尽管我会在再次尝试嵌入Crosswalk(或使用CCA,因为我在那里也遇到了问题)时检查它。谢谢! - Nimrod Yonatan Ben-Nes

5
使用XDK HTML5跨平台开发IDE可能是整合Crosswalk、Cordova和Ionic的最佳方法。它内置支持Crosswalk。我最近使用过它,非常棒。它将使我们的工作更加轻松。
来自Crosswalk网站:
如果您喜欢使用图形化集成开发环境(IDE),免费的Intel XDK提供了一种替代方式,用于为Crosswalk Android打包应用程序。有关更多详细信息,请参见Intel XDK网站

最终,我决定实际上下载Crosswalk包,它将Cordova与之组合,并用ionic项目的www文件夹内容替换其assets/www/内容(根据Ionic手册构建)。我甚至使用了一个不错的Docker来完成这一切 :)我标记您的问题为正确,因为的确似乎这是最直接的方法(我想避免在我的“环境”中安装软件)。 - Nimrod Yonatan Ben-Nes
@NimrodYonatanBen-Nes,想知道您是否成功地通过Docker镜像使用了USB,或者只是将最终应用程序导出到另一台机器? - mmocny
@mmocny 是的,USB 直接连接到 Docker 上了,稍后会发布如何操作的方式(我现在不在我的开发站点...) - Nimrod Yonatan Ben-Nes
@NimrodYonatanBen-Nes,如果您有OSX/Windows的答案,我会非常感激。我看到一些聪明的方法只适用于Linux。 - mmocny
@mmocny 哎呀,真糟糕,我使用Linux... 以防有所帮助,我会在docker run中添加:--privileged -v /dev/bus/usb:/dev/bus/usb。更多信息可以在http://docs.docker.com/reference/run/#runtime-privilege-linux-capabilities-and-lxc-configuration找到,正如您从URL中看到的那样,它适用于Linux... - Nimrod Yonatan Ben-Nes
@NimrodYonatanBen-Nes 好的,这正是我所怀疑的。我一直在尝试让它工作,但似乎并不容易。感谢您回复我! - mmocny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接