你如何同时为*所有*手机/移动设备写信?

时间:2009-09-27 16:49:11

标签: c# iphone blackberry mobile multiplatform

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

  1. 学习曲线捡起来 Objective-C,XCode和Cocoa Touch。
  2. 维持两个人的痛苦 用于保持产品的代码集 在两个不同的平台上同步。
  3. 我们已经决定,作为一种策略,我们希望在尽可能多的移动平台上同时创建所有产品,这是一项艰巨的任务。

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

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

    我的问题是这个; 对于为2-5个最受欢迎的移动平台开发最佳策略,您有什么建议?

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

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

9 个答案:

答案 0 :(得分:7)

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

  1. 如果您的C#应用​​程序以正确的方式编写,则可以通过重用现有库来向这些应用程序公开Web前端。
  2. 几乎 所有 现代移动平台都支持Web 2.0。
  3. 您的开发人员可以继续使用他们习惯使用的语言(C#)。
  4. 编写网络应用程序与特定于平台的应用程序many advantages

答案 1 :(得分:5)

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

答案 2 :(得分:4)

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

除非您违反“无连接到互联网”规则,否则没有什么好回答。但是有一个很好的答案;普通老C。

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

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

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

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

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

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

答案 3 :(得分:3)

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

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

所以:

  • Windows Mobile:Core(C#)& GUI(C#)
  • iPhone:Core(C#)& GUI(Cocoa Touch)
  • Android:Core(Java)& GUI(Java)的
  • 其他:取决于操作系统

答案 4 :(得分:2)

虚拟化

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

如果你不赶时间,也许等一下。

答案 5 :(得分:1)

使用I#的c#应用程序检查Monotouch。它是iphone的.net框架的OSS版本。

答案 6 :(得分:1)

我会反对并给你一些强烈的爱,而不是简单地回答你提出的问题。

我的想法是,您为什么要制作2-5版本的应用程序,这些版本最多会在所有平台上获得不冷不热的接收?因为这就是你要得到的。

如果您希望制作受欢迎的应用程序并让用户兴奋地使用它们,请让他们利用该平台。 iPhone应用程序应该经过深思熟虑的用户输入,并利用尽可能多的平台功能,如mutl-touch,简易数据存储,加速度计,相机等。

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

Android应用可以与系统更紧密地集成,因此让他们这样做是为了用户的利益。

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

答案 7 :(得分:1)

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

答案 8 :(得分:0)

你的问题有点晚了。但您可以使用Rhodes(http://rhomobile.com/products/rhodes)为每个主要的智能手机操作系统编写代码。成千上万的其他开发人员。 Rhodes是第一个智能手机应用程序框架,也是唯一一个提供Web开发人员对本机智能手机开发所享有的模型视图控制器优势的框架。