【问题标题】:Is there a way to develop a cross-platform app for iPhone/iPad/Android? [duplicate]有没有办法为 iPhone/iPad/Android 开发跨平台应用程序? [复制]
【发布时间】:2010-11-05 18:17:25
【问题描述】:

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

编辑 - 伙计们,我们还需要一票才能结束。这个问题是一个重复(阅读 cmets)

我听说 Apple 禁止使用此类工具。好的,所以苹果在 9 月解除了禁令。尽管如此,问题仍然存在 - 是否有一种理智的方法可以为这两个平台开发应用程序,而无需编写几乎所有内容两次?

是我遗漏了什么,还是目前的情况真的是每个合法开发跨平台的公司都必须维护两个代码库?

【问题讨论】:

标签: iphone android ipad cross-platform


【解决方案1】:

在受到 FTC 和欧盟的一些压力后,Apple 在 9 月初撤销了禁令。但是,除非您打算使用第三方工具,例如 Adob​​e Flash Pro CS5(我相信您可以通过这种方式创建在 Android 上运行的 AIR 应用程序,以及广为宣传的 iOS 功能),否则您必须维护无论如何,两个代码库,因为 Android 应用程序是用 Java 编写的,而 iOS 应用程序是用 Objective-C 编写的,这两种截然不同的语言具有截然不同的 API。

【讨论】:

  • 太丢脸了。没有任何产品可以将 android/java 代码转换为 Objective C 吗?如果是这样,那么这就是主要的开放市场利基......我不相信它实际上是开放的。
  • 如果他们有类似的(阅读:相同的)API,那么可能会编写一个类似于我在 C# 和 VB 中看到的一些翻译器(它们都使用 .NET Framework API,这就是为什么这种翻译是可能的),但是由于它们是如此不同,因此即使是基本的翻译器也无法/不值得付出大量的努力。这就是为什么许多跨平台应用程序会存在功能集差异或发布时间表差异的原因(请参阅:适用于 iOS 和 Android 的 Facebook 和 Twitter 应用程序)。
  • 我有一个朋友开发了一种元语言+元框架,可以编译成 PHP+CakePHP、Ruby+Rails 或 Python+django。所以这是可能的 - 但可能是特殊的,并且可能不会涵盖任一 API 的全部范围。
【解决方案2】:

您始终可以使用标准 HTML5 技术来制作纯网络应用程序。 Apple 为应用程序提供了两种途径:通过 App Store 使用 Objective-C 编写的原生应用程序,或仅受底层 HTML5 技术限制的 Web 应用程序。

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

不要从“我不能在 Apple 封闭的 iOS 上做 X”的观点开始,而是从“我可以在任何受支持的应用程序技术中做到这一点,即使它是基于 Web 或混合 Web 应用程序的技术,在所有应用程序中都可用平台?”

【讨论】:

  • 这是处理问题的好方法。此外,您可能希望查看扩展 JQuery 功能以模拟触摸界面外观的 JQTouch 库:jqtouch.com
【解决方案3】:

我最近对此进行了一些研究,并找到了一些可以为您做到这一点的公司。

  1. Appcelerator Titanium Mobile。他们制作的产品允许您使用 Javascript 编写代码。我发现业务逻辑,如网络、文件等只写一次,但 UI 有相当多的 if(android) else \iphone 逻辑才能正确。应用看起来是原生的。
  2. 喂亨利。它们更多是基于 HTML 的解决方案,但对设备有更广泛的支持。不仅仅是iphone和android。 sdk 还很早,只能在基于 Web 的特殊 ide 中完成工作。
  3. 电话间隙。一个基于 javascript/css/html 的框架,面向 iPhone、Android 和 Blackberry。

所有解决方案都有优点和缺点。根据您的应用程序的复杂性,选择一个类似的平台进行开发可能是一个不错的决定。如果他们支持的功能适合您的应用程序,则编写应用程序可能会更快。目前,它们似乎都处于早期发布阶段,不支持开发人员习惯使用的完整工具包,如调试器、完整的 IDE 支持等。此外,它们中的许多都构建为最低通用功能设置,因此您可能无法在新发布功能推出时获得所有新功能,您必须等待特定版本的平台发布才能拥有它们。

【讨论】:

  • 请查看 cmets 中链接到的重复问题。
【解决方案4】:

XMLVM:Android 到 iPhone

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

【讨论】:

    【解决方案5】:

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

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

    【讨论】:

      【解决方案6】:

      另一种选择是使用MonoTouch 和即将推出的MonoDroid,如果一切顺利,您基本上可以在所有平台上编写 C#,当然包括 Win7 Mob。

      看起来很有希望,但我自己还没有尝试过。

      【讨论】:

      • 这可行,但您的应用程序的 UI 层必须是特定于平台的。但是,理论上您可以共享后端逻辑。
      • 至少当涉及到 MonoTouch 时,它们似乎支持 GUI,所以如果 MonoDroid 也这样做,那么理论上应该也可以重用 GUI 代码,但我知道,这是一厢情愿的想法最好,但至少所有代码都在 C# 代码中。
      【解决方案7】:

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

      【讨论】:

        【解决方案8】:

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

        【讨论】:

          【解决方案9】:

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

          【讨论】:

          • 我看不出你的回答有什么相关性。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-11-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-31
          • 1970-01-01
          • 2011-03-07
          相关资源
          最近更新 更多