Everything you need to know about Xamarin
- select the contributor at the end of the page -
Q) Does Xamarin support the iOS App Store and Android Google Play Store?
Yes. Apps written with Xamarin can be deployed through all of the usual channels for iOS and Android apps. Xamarin has the same distribution capabilities and limitations as native apps. Production iOS apps must still be distributed through the iOS App Store; Production Android apps are normally distributed through the Android Google Play store, but also support other app stores and side-loading, just as native apps do. The same beta distribution platforms available to native apps, such as TestFlight and TestFairy, are available for Xamarin apps.
Q) Is there a cross-platform database available?
Q) Does Xamarin support ADO.NET?
Yes, Xamarin provides ADO.NET for the Sqlite database
Q) Does the Xamarin Studio / Visual Studio iOS Designer support storyboards?
Yes, both Xamarin Studio and Visual Studio support storyboards in the iOS Designer.
Q) Does Xamarin iOS designer support auto-layout?
Q) Does Xamarin provide support for dealing with the many different versions of the Android OS?
Yes. Xamarin provides access to the standard Android features used for dealing with these issues, such as the Android Support Libraries, Fragments and feature-specific resource files, among others.
Q) Does Xamarin support iOS 64-bit?
I believe so. Xamarin has a long discussion on the issue.
Q) Does Xamarin support iOS 7?
Yes. Xamarin has an excellent history of providing support for new platforms and platform updates. Xamarin provided support for the latest releases of iOS, Android, Google Glass and Amazon Fire the same day each of them were released.
Q) Does Xamarin support Windows Phone?
Xamarin is .NET, and cross platform project types like Portable Projects and Shared Projects will run across Windows Phone, iOS and Android.
Technically the Windows Phone support is provided by the Microsoft tools; the iOS and Android support is provided by Xamarin. For the most part, those details are behind the scenes. As developers, we create a cross-platform project, write cross-platform compatible .NET code, and that code runs across iOS, Android, and Windows Phone.
Q) What Platforms does Xamarin.Forms support?
Xamarin.Forms runs across iOS, Android and Windows Phone.
Q) Do I need a Mac to develop for iOS?
The short answer is yes. Xamarin relies on the underlying iOS build tools provided by Apple, and those tools only run on Mac/OSX.
If you are using Visual Studio for your development, you are able to develop code, debug, design your UI, etc. within Visual Studio on your Windows computer. The Mac computer is used as a build server, which Visual Studio communicates to through your network.
If you are using Xamarin Studio, you must perform all of your iOS-specific development directly on the Mac computer. Code that will be shared between iOS and Android can be written in Xamarin Studio on your Windows computer and shared or copied to your Mac for inclusion in the iOS build of the app.
Any Mac running OSX 10.7 (Lion) or above will work. I personally use a MacBook Pro but I'm aware of other developers who use a MacBook Air.
Q) How does Xamarin Licensing work?
Xamarin is available in four editions (Starter, Indie, Business, Enterprise). The Starter edition is free and has some limitations on application size. The Business and Enterprise editions include Visual Studio support.
Xamarin licenses are per platform, so developing for both iOS and Android requires two licenses. Xamarin offers discounts for MSDN subscribers, but I've recently been told that Bizspark MSDN subscriptions do not qualify.
Xamarin is sold through a one year license subscription. The subscription is required to receive updates. If you purchase a subscription and do not renew it, your Xamarin tools will continue to work, but you will stop receiving updates.
Q) Which edition is right for starting out, or for becoming familiar with Xamarin?
Newbies and home-based developers should go with the Starter Edition since it's free.
For developers interested in building enterprise-grade apps using Visual Studio, check out the free trial of the Business Edition. A 30-day free trial of Xamarin Business Edition is available to everyone; MSDN subscribers get a 90-day free trial of Xamarin Business Edition, which is plenty of time to build a proof-of-concept app.
Q) Do I have to build for both iOS and Android at the same time?
No. You can initially target just one platform such as iOS, and then later include Android. The key is that you need to create a cross-platform compatible project type such as Portable Class Library or Shared Library and include the code you'd like to eventually run across both platforms in that project.
Q) Does Xamarin allow in app purchases?
Yes it provides support for both the iOS and Android purchasing libraries.
Q) What limitations does Xamarin put on app development that is not in the standard platform tools?
Xamarin itself has none that I can think of. Xamarin does an incredible job of providing access to the underlying platforms. It has close relationships with the platform manufacturers and is able to ship updates to Xamarin inline with updates to the platforms. Xamarin shipped support for the latest releases of iOS, Android, Google Glass and Amazon Fire the same day each of them were released.
The one issue I have encountered has been with third-party libraries. Some libraries that target Android and/or iOS do not provide Xamarin wrappers and are not directly callable from Xamarin. You are still able to access such libraries by manually writing Xamarin bindings for them, but that's obviously extra work. The good news is that more and more third-party products are providing Xamarin support.
Q) Can iOS Objective-C code or Android Java code be imported into Xamarin?
Xamarin provides a binding mechanism that allows you to call into libraries that are written in iOS Objective-C or Android Java. Such libraries are fully accessible from Xamarin once the bindings are created. However, Xamarin does not provide source-code support for Objective-C/Java.
Q) Where can I find instructions for how to setup a Visual Studio environment that uses Xamarin for cross-platform iOS/Android development?
Xamarin provides information on its website. We also walk through the setup in our Building cross-platform iOS/Android apps with Xamarin, Visual Studio, and C# - Part 1 course.
Q) Will the new iOS Swift programming language impact Xamarin?
I don't think Swift will have a significant impact on Xamarin. Xamarin's strengths are cross-platform development productivity, and the ease with which .NET developers can transfer their skills to mobile development. Swift doesn't target either of these issues.
Q) Does Xamarin simplify cross-platform geolocation?
Xamarin provides a component called Xamarin.Mobile that includes geolocation support. The component works well for receiving location updates. It does not provide direct support for more sophisticated geolocation needs. In those cases, you'll need to use each platform's APIs.
Q) As an experienced mobile developer who is already familiar with native development on both iOS and Android, what attracted you to Xamarin?
For me there were three main attractions:
- The ability to share code across platforms
- The ability to bring existing business logic from server and/or desktop .NET apps directly into a mobile app without rewriting it
- When consulting for teams with server and/or desktop .NET experience, Xamarin significantly eased their transition to mobile development
Q) How are Xamarin Studio Portable Class Libraries different from those in Visual Studio?
There is no difference. You can literally create a Portable Class Library (PCL) in Xamarin Studio and then open it in Visual Studio (provided you have the Xamarin plug-in); you can also do the reverse. The Android and iOS support for Visual Studio PCLs is actually provided by the Xamarin plug-in.
Q) What's the difference between Portable Class Libraries and Shared projects?
The short answer is that Portable Class Libraries are projects that build an assembly that supports multiple platforms. Shared projects don't create an assembly; rather their code is, in effect, brought into projects that reference them. This MSDN blog provides an extensive discussion.
Q) How does Xamarin performance compare to native apps?
I've experienced no noticeable performance impact versus native in the work I've done. In looking at online stats, Xamarin on Android runs just as fast as native in most cases and is sometimes even slightly faster (this is possible because some Xamarin code runs outside of the standard Android runtime). There were some performance issues with Xamarin on some older Android devices but no longer. I haven't seen any stats on iOS, but, again, I have not experienced any issues.
Q) Will Pluralsight have more courses on Xamarin and Xamarin Forms?
I (Jim wilson) currently have an intro to Xamarin course split into Part 1 and Part 2. I also have a Google Glass with Xamarin course about to come out. The next course I'm going to create is on Xamarin.Forms, slated to launch later this summer. I know other Pluralsight authors are also working Xamarin-relaed courses, so stay tuned for more.
Keep an eye out for our upcoming webinar on July 16 about creating custom directives for AngularJS.