0

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

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

我认为问题的根源在于 Sencha(Cmd?)的工作方式或我无法理解我做错了什么的方式。我似乎误解了“生产”、“包装”和“原生”之间的区别。我可以理解为什么“无线”更新会很好,但由于这是一个本地应用程序,我不需要任何这些。我不想/不需要在我的输出目录中有一个“归档”文件夹,也不需要一个“deltas”文件夹。为什么“存档”文件夹有我所有 CSS 的额外副本?扯掉头发

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

在等待讨论开始的同时,我将继续尝试并继续尝试并在这里报告我可能找到的任何东西。

最后注意事项:

  1. 我使用的是我自己的 cordova,而不是 Sencha 的“sencha cordova”命令。我很困惑,但也许我需要尝试一下?
  2. 我想要一个没有增量或档案的大 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 级别 = 22,Mac OS X 10.10.5

4

2 回答 2

2

处理这个问题的最好方法是让 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)可部署到旨在作为移动网站/网络应用程序正常工作的网络服务器。

当你跑

sencha app build native

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

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

如果您对特定于cordova构建的项目进行任何更改,您可能希望在cordova/www文件夹中执行此操作(请小心,因为您可能会清除更改)

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

#1

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

#2

您不需要使用第三方工具对您的 JS 执行任何操作,因为它是通过构建中的 uglification 完成的。

#3

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

cordova build

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

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

于 2015-10-01T18:47:28.447 回答
0

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

我建议使用您自己的 Cordova,而不是与 Sencha 工具绑定的 Cordova,这样更容易跟上快速发展的 Cordova 项目。

于 2015-10-01T17:13:47.703 回答