越来越多的移动平台正在推出,并且 sdk 可供开发人员使用。有多种移动平台可供选择: Android、iOS、Moblin、Windows mobile 7、RIM、symbian、bada、maemo 等。
而跨平台应用的制作更是让开发者头疼的问题。我正在寻找跨平台的通用事物,这将有助于希望将应用程序移植到所有平台的开发人员。比如差异屏幕分辨率、输入法、open gl 支持等。 请分享您知道的任何平台的详细信息。
或者是否有可能,通过在 html 中编写代码(小部件类型的东西)并将其加载到 native 应用程序中。
我知道 android,我们可以通过调用 setContentView(view)
请分享类(class)详情,我们可以将 html View 添加到您知道的不同类型平台的原生应用程序中。
此线程的目的是在开发人员之间分享共同的细节。标记为社区 wiki。
跨平台工具和库
XMLVM,Codename One和 iSpectrum(从 Android 应用交叉编译 Java 代码或从头开始创建一个
Phone Gap (跨平台移动应用)
Titanium(使用网络技术构建原生移动和桌面应用程序)
Mono Touch (C# for iphone)
rhomobile - http://rhomobile.com/ sample 在这里:http://github.com/rhomobile/rhodes-system-api-samples
Sencha Touch - Sencha Touch 是一个 HTML5 移动应用程序框架,可让您开发在 Apple iOS 和 Google Android 触摸屏设备上具有原生外观和感觉的 Web 应用程序。 http://www.sencha.com/products/touch/
Corona - Iphone/Ipad/Android 应用跨平台库。太厉害了 http://anscamobile.com/corona/
将现有 Android 应用程序移植到 Windows Phone 7 的指南 http://windowsphone.interoperabilitybridges.com/articles/windows-phone-7-guide-for-iphone-application-developers
最佳答案
我的回答 here covers some of the technical limitations of cross-platfrom tools但让我扩展一下:
我认为跨平台工具在历史上一直都是失败的,因为这些工具的哲学重点是错误的。
跨平台工具的所有卖点都是它们为开发人员带来的好处。他们的卖点是允许开发人员在任何地方编写一次运行。他们的卖点是允许开发人员在不学习新 API 的情况下扩大市场。他们的卖点是他们允许开发人员削减成本和上市时间。
不出售的跨平台工具是它们为最终用户带来的好处。
对最终用户的好处不是卖点,因为跨平台开发很少对最终用户有利。最终用户并不关心开发人员需要付出多大的努力才能将产品推向市场。当他们只使用一个平台时,他们也不关心应用程序可以在多少个平台上运行。他们只关心应用程序是否在他们需要运行的硬件上完成了他们需要的工作。除非他们有在许多不同平台上运行应用程序的特定需求,否则它确实不会给他们带来任何值(value)。
相反,制作跨平台 API 不可避免的妥协意味着由 API 创建的所有应用在每个平台上最多只能达到 B 级。它们永远不会是在每个平台上使用的最佳工具。
所有这一切意味着,在大多数用例中,与使用特定平台 API 制作的产品相比,跨平台工具给最终用户的产品质量较差。最终用户总会有更好的选择。
从长远来看,您可以通过为最终用户提供最有用的工具来赚钱。如果您不从哲学上专注于让最终用户的生活更轻松、更高效,那么您从一开始就注定要失败。最终用户有很多选择,如果你的工具不是最好的工具之一,你就不会在市场上生产它。
仅当您认为“用户将从在许多不同平台上运行此应用程序中真正受益”时,您才应该使用跨平台工具。如果您开始寻找跨平台工具仅仅是因为它们会让您(开发人员)的生活更轻松,那么您选择它们的原因是错误的,它们对您的伤害大于帮助。
关于android - 开发跨平台移动应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3369413/
对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl
我的代码目前看起来像这样numbers=[1,2,3,4,5]defpop_threepop=[]3.times{pop有没有办法在一行中完成pop_three方法中的内容?我基本上想做类似numbers.slice(0,3)的事情,但要删除切片中的数组项。嗯...嗯,我想我刚刚意识到我可以试试slice! 最佳答案 是numbers.pop(3)或者numbers.shift(3)如果你想要另一边。 关于ruby-多次弹出/移动ruby数组,我们在StackOverflow上找到一
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r
刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI
当我在我的Rails应用程序根目录中运行rakedoc:app时,API文档是使用/doc/README_FOR_APP作为主页生成的。我想向该文件添加.rdoc扩展名,以便它在GitHub上正确呈现。更好的是,我想将它移动到应用程序根目录(/README.rdoc)。有没有办法通过修改包含的rake/rdoctask任务在我的Rakefile中执行此操作?是否有某个地方可以查找可以修改的主页文件的名称?还是我必须编写一个新的Rake任务?额外的问题:Rails应用程序的两个单独文件/README和/doc/README_FOR_APP背后的逻辑是什么?为什么不只有一个?