Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将Sencha Touch应用程序从iOS迁移到Android和Windows_Javascript_Extjs_Windows Store Apps_Sencha Touch_Visual Studio Cordova - Fatal编程技术网

Javascript 将Sencha Touch应用程序从iOS迁移到Android和Windows

Javascript 将Sencha Touch应用程序从iOS迁移到Android和Windows,javascript,extjs,windows-store-apps,sencha-touch,visual-studio-cordova,Javascript,Extjs,Windows Store Apps,Sencha Touch,Visual Studio Cordova,我是一名Android硬核开发人员,刚接触Sencha Touch、Windows应用程序开发和VisualStudio环境。因此,请容忍对问题的冗长描述,只是不想错过任何关键细节 我收到了一个基于Sencha Touch2.1(Cmd 3.0)的旧应用程序,该应用程序已经在ipad(iOS)上运行,由开普勒-452b公司开发。最近,我通过将项目内容复制到Android cordova项目(www文件夹)将该应用程序移植到Android上,并且在Nexus10平板电脑上工作没有问题。我在尝试使用

我是一名Android硬核开发人员,刚接触Sencha Touch、Windows应用程序开发和VisualStudio环境。因此,请容忍对问题的冗长描述,只是不想错过任何关键细节

我收到了一个基于Sencha Touch2.1(Cmd 3.0)的旧应用程序,该应用程序已经在ipad(iOS)上运行,由开普勒-452b公司开发。最近,我通过将项目内容复制到Android cordova项目(www文件夹)将该应用程序移植到Android上,并且在Nexus10平板电脑上工作没有问题。我在尝试使用VisualStudio 2013将其迁移到Windows时遇到了一些问题

其目的是利用现有代码创建一个Windows应用商店应用程序,可以在Win 8/8.1 PC或HP Omni 10平板电脑上运行

以下步骤:

  • 创建sencha应用程序示例

    >sencha generate app sample ../sample
    
  • 初始化科尔多瓦

    >sencha cordova init

  • 更新app.json以添加windows平台

    “平台”:“windows”

  • 为本地包装构建

    >sencha应用程序本机构建

  • 将在\cordova\platforms\windows生成的解决方案“CordovaApp.sln”导入VS2013

  • 在VS中运行项目CordovaApp.Windows80,由于Windows CSP,它会出现“无法添加动态内容”异常

  • 将对“document.write”的调用用MSApp.execUnsafeLocalFunction()封装在index.html内的微型加载程序脚本中,然后再次运行。这成功地将sencha touch示例应用程序作为商店应用程序启动(“主页”和“入门”选项卡中的图标替换为“H”和“R”)。IE和chrome浏览器都用图标漂亮地呈现应用程序

  • 在Windows资源管理器中,删除\cordova\platforms\Windows\www文件夹的内容,cordova.js和cordova_plugins.js除外

  • 将我的旧sencha项目的内容复制到www文件夹中,再次在“无法添加动态内容”中构建并启动应用程序

  • 在/www/touch/microloader/development.js内部,更新“function write(content)”以包装文档。使用MSApp.execUnsafeLocalFunction()编写并运行;另一个例外弹出:“document.body此时不存在”-谷歌建议这可能是由于旧的框架版本

  • 从我的sencha工作区将项目中旧的2.1“touch”文件夹替换为新的2.4.0“touch”文件夹,然后再次运行

  • 现在控制台中没有错误,但应用程序只在cordova splashscreen之后显示一个白色屏幕。 如果我用示例sencha应用程序中的内容替换Main.js的内容,屏幕仍然是白色的!通过添加“初始化”事件侦听器,我确认视图正在加载

    我正在使用Sencha Cmd 6.0.0和touch-2.4.0

    这件事我已经坚持了一个多星期了,但毫无结果。查看了stackoverflow,但说明是针对Ext JS的,而不是Sencha Touch。不知道OP是如何解决这些问题的

    我不确定这是否是将旧sencha touch应用程序迁移到windows应用商店应用程序的正确方法


    任何帮助都将不胜感激。

    首先,我将还原您的解决方法,并将库添加到您的项目中。它是专门为提高web框架与Windows应用程序的兼容性并解决您遇到的问题而设计的。它只会在Windows上激活,所以如果您在Android或iOS上运行,它不会增加开销。我会从这里开始,因为它可能会解决大多数问题,如果不是所有的问题的话-更可能是你上面的一个更新导致了问题,或者是另一个更新没有导致错误

    您还应该验证正在使用支持窗口的所有底层Cordova插件,因为根据Sencha的工作方式,这可能会在呈现之前导致JavaScript异常


    最后,请注意,Cordova插件代码不是平台不可知的-因此,您不能安全地将Android项目的内容复制到另一个平台。(Android到iOS,iOS到Windows,或者其他任何东西。)听起来你所采取的步骤应该是有效的,但是要注意,你不能将插件代码本身从一个本机项目类型复制到另一个本机项目类型。大多数工具使用的Cordova命令行界面将根据您正在构建的平台自动将本机和web插件正确的代码添加到您的项目中。

    非常感谢您的指点。我在VS中创建了一个新的Windows应用商店JS项目,并用sencha项目中的内容替换了默认内容。添加了动态内容垫片,并在任何其他脚本之前引用了
    中的winstore-jscompat.js,但仍然收到与
    文档相同的错误。在development.js中写入
    。用
    MSApp.exec..
    包装它,错误消失了,但应用程序的布局和样式出现了问题。在这一点上有两个问题:1。为什么即使在参考垫片后也会出现错误?我做得对吗?2.垫片还修复了CSS问题?刚刚注意到新的js项目在Chrome中呈现良好,但在IE中没有。IE11不支持带有前缀CSS的webkit吗?我还应该提到,到目前为止,该项目中还没有涉及cordova插件。@Ashok不,所有浏览器都有自己的CSS供应商前缀。这里有一些链接:和@ashok1。通过查看该垫片的源代码,看起来它对文档编写没有任何作用。所以,我会把它包装在development.js中。2.不,该垫片不能修复CSS渲染差异between@Baidaly谢谢你的澄清。因此,如果最初的sencha项目正在生成以webkit为前缀的css,那么我们就无法让它们在Windows8中工作?森查那边有什么帮助吗?