小编bva*_*ghn的帖子

移动和Web应用程序的共享代码库?

我一直在开发一个移动应用程序.它可以在iOS和Android上运行,也可以作为AIR应用在桌面上运行.这太棒了,我对此感到非常兴奋.但是,上周我被问到为什么我无法导出在Web浏览器中运行的应用程序版本.我说我认为我可以,我会调查它.

但为什么要在桌面上运行移动代码?

有几个原因:

  • 更多地重用代码.这在所有情况下都没有意义,但在许多情况下确实如此.(我不会详细说明,因为我认为这是不言而喻的.如果你不同意我会很乐意谈论它,但我宁愿不用它来堵塞这个描述.)
  • 更快/更容易的客户端演示.我不必在移动设备上安装apk或ipa,而只需发送一个URL即可.

那么我发现了什么?好吧,从我迄今为止尝试过的...它...不起作用.或者说我无法使其发挥作用.

我首先为所有共享代码创建了一个Flex库项目.然后我创建了两个引用它的应用程序项目 - 一个用于移动,一个用于Web.移动项目工作正常,但Web项目没有.以下是我迄今为止尝试过的方法:

  • 我尝试将mobilecomponents.swc和mobile.swc主题添加到我的Web项目中,以便Flash Builder了解MobileSkin(以及其他仅限移动的类).这使我的应用程序能够编译,但是当我启动它时会立即在UIComponent内部引发运行时错误:VerifyError: Error #1014: Class flash.text::StageText could not be found.我发现这个错误很少,我找到的一个提示(添加--swf-version=13编译器选项)不起作用.
  • 我尝试使用条件编译来控制我的皮肤组件继承自哪个类:MobileSkin或SparkSkin.这只是一个快速的实验,看看它是否有效.我知道这很恶心,而不是生产解决方案.我的想法是,如果MobileSkin真的只是SparkSkin的优化版本,我的皮肤应该可以继承.这没有立即工作 - 应用程序不会编译b'c缺少某些方法(例如layoutContents),所以我保释它因为它开始感觉很脏.
  • 我尝试用UIComponent替换MobileSkin作为我所有皮肤的超类,认为MobileSkin可能只是UIComponent的一个轻量级子类.这种方法最初导致一些编译器错误(例如没有layoutContents方法,没有measuredDefaultWidth/measuredDefaultHeight属性,addChild vs addElement等).一旦这些问题得到解决,应用程序就会编译但在UIComponent的"getState"方法中遇到运行时错误.(看起来MobileSkin会覆盖此方法以防止UIComponent的默认行为.)

所以到目前为止,这些方法都没有对我有用......但你呢?你遇到过这个问题吗?你是否能够使它发挥作用,或者你能否发现我在上面提到的方法中所做的任何明显的疏忽?如果可以,请提前致谢.


更新:问题已解决

我已经能够在上面提到的第一条路线上取得进展:将mobilecomponents.swc和mobile.swc主题添加到我的web项目中

事实证明,Flash Builder在这方面让我错了.使用"合并到代码"设置将移动SWC添加到库项目会导致编译器警告:swc'/ Applications/Adob​​e Flash Builder

4.6/sdks/4.6.0/frameworks/themes/Mobile/mobile.swc'具有样式默认值并位于库路径中,这意味着依赖关系将在没有样式的情况下链接.这可能导致使用输出swc的应用程序丢失皮肤.swc应该放在外部库路径中.

第一次看到这个,我将链接类型更改为"外部",警告消失了.然后在我的web项目中,我还添加了移动SWC并将链接类型设置为"合并到代码".Flash Builder似乎对这种方法很满意,但在运行我的应用程序时,我遇到了奇怪的运行时错误(如上所述).

原来我的第一次尝试是正确的方法.将库项目上的链接类型设置为"合并到代码",然后不要从Web项目重新链接.Flash Builder会警告您,但忽略警告.事情似乎在大多数情况下都很好用!我有一两个要研究的问题(例如,列表组件不会滚动)但事情总体上看起来很有前途!

flash mobile adobe shared-libraries code-sharing

5
推荐指数
1
解决办法
888
查看次数

有哪些选项可用于使用Adobe AIR处理Android上的文本输入?

有哪些选项可用于使用Adobe AIR处理Android上的文本输入?每个选项有哪些优点和缺点?

air mobile adobe android textinput

4
推荐指数
1
解决办法
3173
查看次数