我怀疑我能否只为 Android 编译我的应用程序
那是对的; 你不会的。
所以,背景:MonoTouch和Mono for Android的设计理念是为 iOS 和 Android 带来“核心”.NET 和 C# 体验,同时暴露每个特定平台的底层特性。PhoneGap和Titanium抽象了底层平台(用于“一次编写,随处运行”的氛围),而 MonoTouch 和 Mono for Android 不提供平台抽象,而是直接公开底层平台类型和成员。
结果是 MonoTouch 程序使用MonoTouch.UIKit.UIButton,它直接包装了底层的 CocoaTouch UIButton类型。
同样,Android 程序的 Mono 将使用Android.App.Activity,它直接包装了底层的 Android android.app.Activity类型。
两个平台上的共同点是您在 .NET、.NET CF、Silverlight、Windows Phone 7 和 Mono 上找到的“核心”框架命名空间和类型System
:to-XML)、等等等等。例如,请参阅Mono for Android 中包含的程序集。System.Collections.Generic
System.Linq
System.Xml.Linq
System.IO
那么,您可以在 Android 上按原样使用现有的 Windows Mobile 应用程序吗?不,因为 Android 的 Mono 不提供System.Windows.Forms
.
但是,您应该可以重构现有代码以遵循模型/视图/控制器设计模式(或 MVVM,或...),抽象出 UI(视图),以便您可以将其替换为各种平台,例如,带有 MonoTouch 的 iOS UI、带有 XAML 的 WP7 UI、带有 Mono for Android 的 Android UI、带有 ASP.NET MVC 的 HTML UI 等等。您不会获得“一次编写,随处运行”的体验,但是您将能够为用户提供与他们选择的平台一致的本机用户界面。
For example, see the MIX11 Conference Apps, which utilize a common code base while providing platform-specific UIs for iOS, Android, and WP7.