📎 Webclip
Part 1 - Understanding the Xamarin Mobile Platform
Xamarin is presented as a platform built from C#, Mono .NET, a compiler, and IDE tools. The page says this setup lets developers write for iOS and Android with familiar C# syntax, share code across platforms, and reuse that code for Windows Phone in some cases.
Reading notes#
- Xamarin combines C#, Mono .NET, compiler support, and IDE tools for building iOS and Android apps.
- C# gives access to familiar syntax and features such as Generics, Linq, and the Parallel Task Library.
- The compiler targets each platform differently, producing native iOS apps or Android apps with MonoVM and JIT, while stripping unused code during linking.
- Platform SDKs are exposed through C# namespaces, including CocoaTouch on iOS and Android SDK namespaces on Android.
- Business logic, database access, network access, and other common functions can be written once and reused across platforms.
- Xamarin development can be done in Xamarin Studio or Visual Studio, depending on the target platforms.
- iOS development requires a Mac, Xcode, and Apple’s Developer Program for device testing and distribution.
- Android development requires Java and the Android SDK, and can be done on Mac or Windows with Xamarin Studio or Visual Studio.
- Windows Phone apps are built with Microsoft’s Visual Studio toolset, and C# code can still be shared with iOS and Android.
- Xamarin uses native UI controls, and screens can be built in code or with platform-specific visual designers.
- The page lists platform-specific UI patterns such as iOS hierarchical navigation, Android back button and action menu, and Windows Phone panorama layout and live tiles.
- Existing C# code and libraries can be reused, including SQLite-NET, NewtonSoft.JSON, and SharpZipLib.
- Xamarin.iOS can use Objective-C libraries through btouch bindings, and Xamarin.Android can use Java libraries through .jar bindings.
- P/Invoke can connect C# code to native C libraries, including SQLite on iOS and Android.
- C++ access is discussed through Cxxi or by wrapping C++ in C and binding through P/Invoke.
