我即将开始将一个Facebook应用程序移植到android和我在辩论我是应该将其编写为本机应用程序还是作为美化WebView的包装器。
您的体验如何?您在编写网络应用时遇到了什么限制?您有可能想要分享的建议吗?也许您认为原生应用程序是可行的方式?
要为讨论设置一个famework,我想要立即移植的应用程序很简单 fb app,其中服务器托管在Google App Engine中(用Java编写,如果重要的话),所有客户端代码都是html,css和javascript(带有大量的jQuery)。
该应用程序基本上是一个双人回合制游戏,带有一堆响应用户点击的静态图像,以及一个非常简单的聊天框(独立于fb聊天)。它可以为每个用户处理几个并发游戏(但对不同的对手,不一样)。
您认为适合Android网络应用吗?
提前谢谢。
PS1:无论如何,我会很感激任何洞察力,所以如果你想在答案中更广泛,请不要局限于这个特定的示例应用程序。
PS2:是的,我从developer.android.com上阅读了“Web应用程序的最佳实践”页面,我按照那里的链接进行了操作,但它没有说明WebView组件的速度或可靠性,特别是在术语方面用户交互在阅读WebView描述页面中的以下段落之后出现了这个问题,这种类型限制了典型场景:使用的常见场景 WebView很有用,就在你想要的时候 提供您的信息 您可能需要的应用程序 更新,例如最终用户协议 或用户指南。在你的Android中 应用程序,你可以创建一个 那么包含WebView的Activity 用它来显示你的文件 那是在线托管的。
WebView可以使用的另一种方案 如果您的应用程序提供帮助 始终需要的数据给用户 要检索的Internet连接 数据,例如电子邮件。在这种情况下,你 可能会发现建立一个更容易 Android应用程序中的WebView 它显示了一个包含所有内容的网页 用户数据,而不是执行 网络请求,然后解析数据 并在Android布局中呈现它。 相反,您可以设计一个网页 这是为Android设备量身定制的 然后在你的网站中实现一个WebView 加载网络的Android应用程序 页。
答案 0 :(得分:12)
我已经实现了两个使用webview的项目,一个是jqtouch,另一个是jquery-mobile框架。
您开始轻而易举并继续,但最后当您查看应用程序时,它与本机用户体验相差甚远。 Android浏览器比iphone浏览器慢得多。希望以后能够解决,因此当你处理css3繁重的应用程序时,你的响应时间会变慢。在模拟器中进行开发时,webview会让你发疯,因为它太慢了。
如果你想实现原生的类似元素或固定的标签栏,你正在努力工作,最后在你的应用程序与本机应用程序进行比较时没有得到一个好的解决方案,那就太糟糕了。
最后,我决定学习本土发展,成为一流的公民。当然这需要更多的时间,但结果会让我满意。
我认为本机开发不是未来,稍后我们会再次编写html-css-js应用程序,它们将像本机代码一样工作,但根据我的观点,它不可能在2 - 3年内。< / p>
我可以建议你,尝试构建网络应用程序,如果性能不能像我一样满足你,那么切换到本机开发。
答案 1 :(得分:10)
我会按照这个偏好顺序选择这些规则
答案 2 :(得分:6)
在使用WebView之后,我发现它非常棒。我已经构建了一个应用程序,并希望将其移植到Android,但第二个我意识到WebView工作正常,我从未回头。我的所有功能都内置在Web App中,因此应用程序中几乎不需要功能( Internet连接检测/更改等)
我已经走了'混合'路线。我通过Android应用程序中提供了一些网站没有提供的功能 - 所以请记住这一点进行营销。
无论哪种方式,我唯一的问题是当您使用沉重的CSS3样式时,滚动速度可以断断续续 - 我正在谈论边框半径',阴影,渐变等等,到处都是。我想知道它是如何回应的...但是,除此之外,你应该是金色的!
祝你好运!(编辑)添加了以下内容:我还想添加我的应用在WebView中使用 jQuery 。它看起来比原生动画更多,但这几乎是给定的。虽然不要误会我的意思,但它们仍然是动画,仍然很棒!如果我可以给 jQuery动画一个FPS(向上/向下滑动),我会说它们大概是20,而原生动画是25-30流量(从1-30开始) 。值得注意的,但不会带走任何经验。
再次,不要误解我的意思,这是非常好用的!例如,我有一个计时器,当页面加载并倒计时时启动......这在App&gt;中完美地起作用。的WebView。没有错误,如果有错误,它会反映在网站上(又名jQuerys错误)
只想为我的2美分添加更多东西=)
答案 3 :(得分:5)
如果你有使用Javascript的动画,可能会发生一些奇怪的事情。
我已经使用WebView来显示图形,采用混合方法,有时候会失败,上面或下面的线条在代码逻辑中不应该有差别... < / p>
使用Javascript调用Java方法的混合方法可以完成,但有时候很棘手。
就个人而言,由于经验减少,我倾向于优先考虑本地人。它的速度更快,您在使用重定向或javascript的浏览器渲染过程中不会遇到任何问题。
就个人而言,如果我同时为几个平台(iOS,Android ..)开发,并且没有时间,资源或便利来为所有人开发本机,我个人只会使用非原生方法。
答案 4 :(得分:3)
目前为the Javascript interface is horribly broken in 2.3,因此您可能需要解决此问题。
除此之外,我不得不说我对在本地创建复杂布局时遇到的问题感到非常失望。有时我希望回去在WebView中做所有事情。
HTML + JS开发的缺点是......它是JS :)。您没有静态类型,因此在某些情况下调试可能会更困难。 (哦,顺便说一下,OnConsoleMessage OnJsError and so on are horribly broken on some phones)
答案 5 :(得分:2)
Appcelerator Titanium是另一种选择。