如何让Sencha Touch和Cordova一起工作?

时间:2015-10-01 11:54:34

标签: android cordova senchatouch-2.4

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

我现在正努力让这两个人一起工作。我可以在我的设备上安装一个版本,但是每当我尝试用新代码更新它时,某些东西都无法正常工作。 "某些东西不起作用"意味着以下之一:设备显示死亡的" 3点" (永远在蓝色背景上闪烁3个白点)或浏览器式警报说app.js已更新,我应该重新加载(使用取消/重新加载按钮)还是一个sencha风格的警报说应用程序完成升级并且我想重新加载

我认为问题的根源是Sencha(Cmd?)的工作方式或者我无法理解我做错的方式。我似乎在误解"生产","包"和#34;本地人"是。我能理解为什么"无线电"更新可能是好的,但由于这是一个本地应用程序,我不需要任何这些。我不想/需要拥有"存档"输出目录中的文件夹,也不是"增量"夹。为什么"存档"文件夹有我所有CSS的额外副本? 撕掉头发

所以,我想我的基本问题是:如何让Sencha Touch建立一个完整的应用程序,没有无线更新,增量,档案,启动时的混乱提示或3点死亡?

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

最后的说明:

  1. 我使用自己的cordova,而不是Sencha" sencha cordova"命令。我很困惑,但也许我需要尝试一下?
  2. 我想要"正常"的部分原因使用一个没有增量或归档的大型Js文件构建是我想在编译后将其发送到混淆服务(jscrambler)。不知道这是否重要。
  3. 这可能是无关的,但是当我在Android设备上升级我的应用程序的现有安装时,我得到了我的Javascript的旧版本(即使Android应用程序本身已更新,我可以通过版本号)。我在某处读到了我应该删除并在编译前从我的cordova项目中添加android平台...为什么?
  4. 感谢您的关注,我希望这个主题可以帮助其他任何悲惨的程序员:)

    版本: 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

2 个答案:

答案 0 :(得分:1)

处理此问题的最佳方法是让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 build确实为index.html做了一些自定义的事情,以便更好地与Sencha合作,但是很多它对Cordova来说是很正常的。如果您将CD刻录到cordova,您实际上可以运行正常的cordova [options]命令。不同之处在于,对Sencha项目的任何更改都不会复制到Cordova项目中。

#1

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

#2

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

#3

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

cordova build

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

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

答案 1 :(得分:0)

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

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