9

我们创建在移动设备上运行的非游戏程序;iPhone、Windows Mobile、Android、Palm WebOS 等。我们的主程序是用 C# 为 Windows Mobile 编写的,我们被要求将其移植到 iPhone。我们期待:

  1. 学习 Objective-C、XCode 和 Cocoa Touch 的学习曲线。
  2. 维护两组代码以使产品在两个不同平台上保持同步的痛苦。

我们已经决定,作为一项战略,我们希望同时在尽可能多的移动平台上创建所有新产品,这是一项艰巨的任务。

我们知道我们将不得不屈服于这些,但我们更愿意:

  • 避免强迫我们的用户连接到网络以使用产品。
  • 没有一堆不同的源代码集。
  • 支持尽可能多的移动平台。

我的问题是这个;您对 2 到 5 个最受欢迎的移动平台的最佳开发策略有何建议?

编辑:根据评论,我想澄清一下,我们的产品在 PalmOS 和 Winmobile 上都很受欢迎。它在两个平台上的工作方式完全相同,使用户可以轻松切换手持设备并继续使用它。

现在我们即将创建许多新的商业应用程序,并希望将其扩展到其他硬件/操作系统。对于在许多新平台上以最小的痛苦进行部署,您有什么建议?

4

9 回答 9

7

考虑通过网络实现您的应用程序。这违反了您对“避免您的用户连接到网络”的偏好,但出于以下原因考虑网络:

  1. 如果您的 C# 应用程序以正确的方式编写,您可以通过重用现有库来向这些应用程序公开 Web 前端。
  2. 几乎所有现代移动平台都支持 Web 2.0 。
  3. 您的开发人员可以继续使用他们习惯的语言 (C#) 进行编写。
  4. 编写 Web 应用程序与特定于平台的应用程序相比有很多优势。
于 2009-09-27T16:58:29.783 回答
5

考虑 Appcelerator Titanium、Rhomobile 的 Rhodes、PhoneGap、xmlvm.org 或其他跨设备工具包。

于 2009-09-27T17:29:52.560 回答
4

我假设您已经完成了市场调查,并且实际上知道所有平台都会盈利,而不仅仅是为了开发一两个平台而耗尽您的资源。

除非您打破“不连接到互联网”规则,否则没有很好的答案。但是有一个很好的答案;普通老 C.

用普通的旧 C 语言实现所有应用程序逻辑。然后;

  • iPhone - Objective-C 是 C 的严格超集,所以只需按原样使用代码。并使用 Cocoa Touch 在 Objective-C 中编写 UI。

  • Android - Android 的 Java 具有用于调用用 C 编写的本机代码的 JNI。编写一个薄粘合层,并使用普通的 Java for Android 实现您的 UI。

  • Windows Mobile - 您可以从任何 .NET 应用程序调用本机代码。因此,编写另一个粘合层,并使用 C# 或您喜欢的 .NET 语言实现您的 UI。

  • Symbian - Symbian 使用 C++ 的变体,因此就像在 iPhone 上一样,您可以按原样调用您的 C 代码。使用 C++ 和 Symbian API:s 编写您的 UI。

如果您打破“不连接到 Internet”规则,那么使用现有 C# 代码实现服务器并使用 HessianC# 将其公开为 Web 服务是轻而易举的事。然后 Hessian 实现可用于您可以安装应用程序的每部手机,自 2002 年左右开始销售。

于 2009-09-28T14:08:09.037 回答
3

我建议您将应用程序的核心和 GUI 分开。因此,您可以继续使用 C# 为 Windows mobile 和 iPhoneOS 开发应用程序(感谢monoTouch)。使用此策略,您只需在 Windows mobile (C#) 和 iPhone (Cocoa Touch) 上开发特定的 GUI。

对于其他移动操作系统,您不能使用跨平台开发环境(目前)。您需要重新开发所有应用程序。

所以:

  • Windows Mobile:核心(C#)和 GUI(C#)
  • iPhone:核心(C#)和图形用户界面(Cocoa Touch)
  • Android:核心(Java)和图形用户界面(Java)
  • 其他:取决于操作系统
于 2009-09-27T17:45:47.420 回答
2

虚拟化

我听说 VMWare 正在开发一种移动虚拟化产品,可以将平台统一到移动设备上的 VM 内的单个执行点,这取决于您是否着急。它几乎肯定会支持大多数智能手机平台(Windows Mobile、Android、Symbian、Blackberry 甚至 iPhone)。当他们支持所有人时,他们(和我们)肯定会受益最大。

如果你不着急,也许等一下。

于 2009-09-28T06:46:41.250 回答
1

使用适用于 Iphone 的 ac# 应用程序查看Monotouch。它是适用于 iphone 的 .net 框架的 OSS 版本。

于 2009-09-27T17:14:17.643 回答
1

我会不顾一切地给你一些严厉的爱,而不是简单地回答你提出的问题。

我的想法是,为什么要制作 2-5 个版本的应用程序,充其量只能在所有平台上获得不冷不热的接收?因为那是你将要得到的。

如果您想制作广受欢迎的应用程序并让用户兴奋地使用它们,请让他们利用该平台。iPhone 应用程序应该对用户输入进行深思熟虑,并利用尽可能多的平台功能,如多点触控、轻松数据存储、加速度计、摄像头等。

Palm 应用程序在后台运行得很好,所以写一些充分利用它的东西。它甚至可能不止一个应用程序来保持 Palm 简单而小巧的应用程序方法。

Android 应用程序可以更紧密地与系统集成,因此让它们这样做以使用户受益。

您使用任何应用程序的主要好处应该是您完全了解该领域,并且可以描述问题领域的哪些方面最适合任何给定设备的优势。移动应用程序很小(ish),您从尝试跨设备共享代码中获得的任何小收益(以及它如何在 Java/Obj-C 之间准确地工作,更不用说 Android 与 Blackberry 库的差异?)完全丢失在您的失真中通过适应的棱镜来理解。

于 2009-09-28T06:16:57.223 回答
1

尝试使用PhoneGap!您需要知道的只是网络技术。

于 2011-10-24T21:26:29.673 回答
0

你的问题有点晚了。但是您可以使用 Rhodes (http://rhomobile.com/products/rhodes) 为每个主要的智能手机操作系统编写代码。数以万计的其他开发人员这样做。Rhodes 是第一个智能手机应用程序框架,也是唯一一个将 Web 开发人员所享有的 Model View Controller 优势提供给原生智能手机开发的框架。

于 2010-10-18T03:32:42.047 回答