如何让 Sencha Touch 和 Cordova 协同工作?

How do I make Sencha Touch and Cordova work together?

我有一个 Sencha Touch 应用程序,现在我想将它与 Cordova 打包用于 Android、iOS 和浏览器。

我现在正在尝试大约一天的时间让两者一起工作。我可以在我的设备上获取一个版本,但每当我尝试用新代码更新它时,有些东西不起作用。 "Something doesn't work" 表示以下情况之一:设备永远显示“3 个死亡点”(蓝色背景上闪烁的 3 个白点)或浏览器样式的警报说 app.js 已更新,我是否应该重新加载(使用cancel/reload 个按钮)或一个 sencha 风格的警告,说明应用程序已完成升级,我是否要重新加载。

我认为问题的根源在于 Sencha(Cmd?)的工作方式或我未能理解我做错了什么的方式。我似乎误解了 "production"、"package" 和 "native" 之间的区别。我能理解为什么 "over-the-air" 更新会很好,但由于这是一个本地应用程序,我不需要任何更新。我 want/need 在我的输出目录中没有 "archive" 文件夹,也没有 "deltas" 文件夹。为什么 "archive" 文件夹中有我所有 CSS 的额外副本? 拔头发

所以,我想我的基本问题是:如何让 Sencha Touch 只构建一个完整的应用程序,而无需无线更新、增量、存档、启动时令人困惑的提示或 3 点-死亡?

在等待讨论开始的同时,我将继续尝试,并在此处报告我可能发现的任何内容。

最后的笔记:

  1. 我使用的是我自己的 cordova,而不是 Sencha 的 "sencha cordova" 命令。我已经够糊涂了,但也许我需要试试看?
  2. 我想要 "normal" 构建一个没有增量或存档的大 Js 文件的部分原因是我想在编译后将其发送到混淆服务 (jscrambler)。不知道这是否重要。
  3. 这可能无关紧要,但是当我在 android 设备上升级我的应用程序的现有安装时,我得到了我的 Javascript 的旧版本(即使 android 应用程序本身已更新,我可以通过版本号判断)。我在某处读到我应该在编译之前从我的 cordova 项目中删除和添加 android 平台...为什么?

感谢您的关注,我希望这个帖子能帮助其他任何悲惨的程序员:)

版本: Cordova -v = 5.3.3, Sencha Touch (zip) = 2.4.2, Sencha Cmd = 5.1.3.61, Android API level = 22, Mac OS X 10.10.5

我通常使用的工作流程是使用构建脚本(或者您可以使用 Cordova build hook)将 Sencha Touch JS 应用程序代码与 Sencha cmd 打包并将其结果复制到 Cordova 项目的 www文件夹,在 运行 cordova 构建之前。

我建议使用您自己的 Cordova,而不是与 Sencha 工具相关联的 Cordova,这样可以更轻松地了解快速发展的 Cordova 项目。

处理这个问题的最好方法就是让 Sencha CMD 来做这件事。它可以通过其他方式完成,但我建议在弄清楚 Sencha Touch 和 Cordova 的基础知识之后

基本上你有一个可以在 CMD 中创建的 ST 项目。

sencha -sdk ~/path/to/touch-0.0.0 generate app MyApp ~/path/to/create/my-app

然后你做了一些开发工作,你想在 Cordova 中做一个构建

sencha cordova init com.mydomain.myapp MyApp

Cordova 目录已添加到您的项目并包含..

cordova
    |_ hooks/
    |_ platforms/
    |_ plugins/
    |_ www/
    |_ config.xml

所以在继续之前稍微解释一下——当你 运行

sencha app build production 

你得到了你的应用程序的缩小版本(编译为 my-app/build/production/MyApp)可部署到网络服务器,旨在作为移动 website/web 应用程序运行良好。

当你 运行

sencha app build native

你得到几乎相同的缩小代码库,但它被编译为 my-app/cordova/www/

Sencha 的构建完成,将代码放入 www 文件夹,它会触发 cordova 构建。然后 www 文件夹的内容被复制到每个 platform/[os]/www 目录。

如果您对特定于 cordova 构建的项目进行任何更改,您将希望在 cordova/www 文件夹 中进行更改(请小心,因为您可能会得到更改消灭)

Sencha CMD 的本机构建确实对 index.html 做了一些自定义的事情,以便更好地与 Sencha 合作,但是很多对于 Cordova 来说是很正常的。如果你 CD 到 cordova 你实际上可以 运行 正常的 cordova [options] 命令。不同之处在于,对您的 Sencha 项目所做的任何更改都不会复制到 Cordova 项目中。

#1

我建议使用 Sencha CMD 路由,因为它会让生活更轻松。

#2

你不需要使用第三方工具来对你的 JS 做任何事情,因为它是通过构建中的丑化完成的。

#3

我可能是错的,但我的第一个猜测是在一个独立的 Cordova 项目中,平台代码不会更新,除非你 运行

cordova build

我认为这可能涵盖了您的问题,但如果没有,我可以尝试澄清任何问题。

EDIT 我在我的示例中使用 iOS 但将其与 android 交换。习惯:/