有没有办法为iPhone / iPad / Android开发跨平台应用程序?

时间:2010-11-05 18:17:25

标签: iphone android ipad cross-platform

  

可能重复:
  Technology to write iPhone, BlackBerry and Android phone at the same time?

编辑 - 伙计们,我们需要再投一票来结束这个。这个问题是重复的(阅读评论)

我听说Apple禁止使用此类工具。好的,所以苹果公司在9月解除了他们的禁令。问题仍然存在 - 是否有一种理智的方式来开发应用程序到这两个平台,而不必写几乎所有的两次?

我是否缺少某些东西,或者当前的事态是否真的是每个开发跨平台的公司必须维持两个代码库?

9 个答案:

答案 0 :(得分:6)

苹果公司在收到联邦贸易委员会和欧盟的一些压力后于9月初撤销了禁令。但是,除非您计划使用第三方工具,例如Adobe Flash Pro CS5(我相信您可以创建将以这种方式在Android上运行的AIR应用程序,以及广为宣传的iOS功能),否则您必须维护无论如何,两个代码库,因为Android应用程序是使用Objective-C中的Java和iOS应用程序编写的,两种语言截然不同,具有截然不同的API。

答案 1 :(得分:5)

您始终可以使用标准HTML5技术制作纯网络应用。 Apple有两种应用程序:使用Objective-C编写的App Store中的本机应用程序,或仅具有基础HTML5技术限制的Web应用程序。

如果您不喜欢纯网络应用程序,您甚至可以合并这两个应用程序并制作一个自定义应用程序,在嵌入式浏览器视图中显示大量自定义的类似Web的内容(iOS上的UIWebKit)。 Android和iOS Web浏览器框架来自WebKit,功能/外观/一致性非常接近。

不是从“我无法在Apple的封闭式iOS上做X”的观点开始,而是“我可以在任何支持的应用程序技术中执行此操作,即使其基于Web或Web应用程序混合,也可在所有应用程序中使用平台?“

答案 2 :(得分:3)

我最近对此做了一些研究,并找到了一些可以为你做这件事的公司。

  1. Appcelerator Titanium Mobile。他们制作的产品允许您在Javascript中编写代码。我发现业务逻辑,比如网络,文件等,只写了一次,但是UI有相当多的if(android)else \ iphone逻辑才能正确。应用看起来很原生。
  2. FeedHenry。它们更像是基于HTML的解决方案,但对设备有更广泛的支持。不仅仅是iphone和android。 sdk还很早,工作只能在他们基于网络的特殊构思中完成。
  3. 的PhoneGap。基于javascript / css / html的框架,面向iPhone,Android和Blackberry。
  4. 所有解决方案都有优缺点。根据您的应用程序的复杂性,选择像开发那样的平台可能是一个很好的决定。如果他们支持的功能适合您的应用,则编写应用可能会快得多。现在,似乎它们都处于早期发布阶段,并且不支持开发人员习惯使用的完整工具包,例如调试器,完整的IDE支持等。此外,它们中的许多都构建为最低的常见功能设置,因此您可能无法获得所有新版本的功能,您必须等待发布特定版本的平台才能拥有它们。

答案 3 :(得分:2)

XMLVM:Android到iPhone

XMLVM可以将您的Android代码转换为适用于iPhone的Objective-C。但据我所知,你仍然需要一台Mac来编译iPhone应用程序。

答案 4 :(得分:1)

Android拥有NDK(本机开发工具包),允许C和C ++代码包含在APKG中,并通过JNI从Java调用。 Apple的工具链也将同时处理;不同的代码将是平台接口代码,主要是Android上的Java和iOS上的ObjC。

这仅在大部分应用程序使用C或C ++时有用。

答案 5 :(得分:1)

替代方案是使用MonoTouch和即将发布的MonoDroid,如果一切正常,您基本上可以在所有平台上编写C#,当然包括Win7 Mob。

它看起来很有希望,但还没有尝试过。

答案 6 :(得分:0)

9月份,Apple取消了iOS许可证中的一些限制,这些限制使得跨平台开发变得困难。见this press release。我不熟悉当前许可证的详细信息,但您可以通过他们的开发人员计划获得一份副本。

答案 7 :(得分:0)

另一种可能是Rhodes框架,如果你喜欢MVC,ORM和Ruby。

答案 8 :(得分:-3)

查看供应商显示为Android项目的Android的System.getProperty()值。我没有看过iPhone或iPad,因为我没有,但希望他们也有一些改变。但这只适用于我所知道的java。