【问题标题】:Migrate Sencha Touch app from iOS to Android and Windows将 Sencha Touch 应用程序从 iOS 迁移到 Android 和 Windows
【发布时间】:2015-07-29 14:38:49
【问题描述】:

我是一名刚接触 Sencha Touch、Windows 应用程序开发和 VisualStudio 环境的核心 Android 开发人员。所以请耐心等待问题的冗长描述,只是不想错过任何关键细节。

我收到了一个基于 Sencha Touch 2.1 (Cmd 3.0) 的旧应用程序,该应用程序已在 ipad (iOS) 上运行,由 Kepler-452b 开发。我最近通过将项目内容复制到 android cordova 项目(www 文件夹)将应用程序移植到 Android,并且在 Nexus 10 平板电脑上正常工作。在尝试使用 VisualStudio 2013 将其迁移到 Windows 时,我开始遇到问题。

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

后续步骤:

  1. 创建示例煎茶应用

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

    >sencha cordova init

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

    “平台”:“窗口”

  4. 为原生打包构建

    >sencha app build native

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

  6. 在 VS 中运行项目 CordovaApp.Windows80 并由于 Windows CSP 导致“无法添加动态内容”异常

  7. 使用 MSApp.execUnsafeLocalFunction() 将对“document.write”的调用封装在 index.html 内的缩小微加载器脚本中,然后再次运行。这成功地将示例 sencha touch 应用程序作为商店应用程序启动(尽管“Home”和“Get Started”选项卡的选项卡栏中的图标被替换为“H”和“R”)。 IE 和 chrome 浏览器都可以通过图标精美地呈现应用程序

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

  9. 将我以前的 sencha 项目的内容复制到 www 文件夹,在 VS 中构建并启动应用程序。再次出现“无法添加动态内容”!

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

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

现在控制台中没有错误,但应用程序仅在科尔多瓦启动画面后显示白屏。 如果我用示例 sencha 应用程序中的内容替换 Main.js 的内容,屏幕仍然是白色的!通过添加“初始化”事件侦听器,我确认正在加载视图

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

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

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

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript extjs windows-store-apps sencha-touch visual-studio-cordova


    【解决方案1】:

    首先,我将恢复您的解决方法,只需将Windows Store Dynamic Content Shim 库添加到您的项目中。它专门用于提高 Web 框架与 Windows 应用程序的兼容性并解决您遇到的问题。它只会在 Windows 上激活,因此如果您在 Android 或 iOS 上运行,它不会增加开销。我会从那里开始,因为它可能会解决您的大部分问题(如果不是全部的话) - 很可能是您的上述更新之一导致了问题,或者还有另一个没有导致错误。

    您还应该验证您使用的所有底层 Cordova 插件是否支持 Windows,因为考虑到 Sencha 的工作原理,这可能会导致在呈现之前出现 JavaScript 异常。

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

    【讨论】:

    • 非常感谢您的指点。我在 VS 中创建了一个新的 Windows Store JS 项目,并将默认内容替换为 sencha 项目中的内容。在任何其他脚本之前添加了动态内容 shim 并在 <head> 中引用了 winstore-jscompat.js,但对于 development.js 中的 document.write 仍然收到相同的错误.用MSApp.exec.. 包裹它,错误消失了,但应用程序的布局和样式却被折腾了。此时有两个问题:1。为什么即使在引用垫片之后也会出现错误?我做得对吗? 2.垫片还修复 CSS 问题?
    • 刚刚注意到新的 js 项目在 Chrome 中渲染得很好,但在 IE 中却没有。 IE11 不支持 webkit 前缀的 css 吗?我还应该提到,到目前为止,该项目还没有涉及 Cordova 插件。
    • @Ashok 不,所有浏览器都有自己的 CSS 供应商前缀。以下是一些链接:webdesign.about.com/od/css/a/css-vendor-prefixes.htm 和 css-tricks.com/how-to-deal-with-vendor-prefixes
    • @Ashok 1. 通过查看该 shim 的源代码,它看起来对文档写入没有任何作用。所以,我会把它包裹在 development.js 中。 2. 不,shim 不能修复 CSS 渲染之间的差异
    • @Baidaly 感谢您的澄清。因此,如果原始 sencha 项目正在生成以 -webkit- 为前缀的 css,我们就无法让那些在 windows 8 中工作吗?煎茶方面有什么帮助吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-14
    相关资源
    最近更新 更多