If Xamarin would be painless to use I guess we would see a lot more guys advocating it. However, personally I know quite a lot of app developers who tried Xamarin and disliked the quality of the tooling.
I hope that Xamarin keeps on improving as I believe it still could be (one of) the best x-plat option.
I installed VS2015 + xamarin + VS emulator for android, downloaded some samples, hit F5, and they all ran fine.
The tooling is actually pretty good. Now the problem is a lot of the libraries I want to use are native android/java which means doing a lot of C#/java interop.
How painful is that? I might consider that a tooling issue.
Ideally, you should be able to specify the java dependencies you want and get some magical interface file generated for you in C# that makes it so you don't have to think so much about the interop, or at least remove any tedium / boiler plate. If that's not there, then I'd say it's a tooling issue.
It's pretty painful. I love using Xamarin and don't often need to use a native library but when it comes up it is the worst part of the Xamarin experience. There is a tool to help the process on Ios ,objective sharpie, but it's not the easiest thing to use either.
It's been a while, but I've had good luck using the "Bindings Library" project type to wrap native Java Libs. Sometimes I would have to build an intermediate Android project (using Eclipse or android studio) to proxy the calls, but it wasn't too painful. For iOS it's more difficult and a bit of a weak spot for the platform.
If you have a chance, ask your friends to send us their feedback. We are working non-stop on the product, but it always helps when real users share their stories with developers, otherwise we fall back into just looking at our internal task list.
My experience so far is that I tried to install it yesterday and VS didn't acknowledge it is installed. I restarted my computer and then VS was able to run the default project, but the project immediately crashed upon start, without any stack trace or pointer about what could have gone wrong. Not a great start :)
It's probably a problem with the setup of your Android emulator. I had the same issue and had some more installations and config work to do before it worked.
This was my experience. You have to do a lot of downloading and setting up to do outside of VS to get the emulators working. And I never even got the Apple part setup because I don't own an Apple device. It would have been better if there was more help to walk you through it, there was just one static doc that was probably completely accurate the first week it was written.
Not sure which is setup by default; there is the Android SDK emulator and the newer Hyper-V based Visual Studio Emulator for Android. Based on @snarfy's comment elsewhere, I'm guessing the Xamarin installer isn't installing the VS emulator.
I don't even bother with the emulator any more. It's too slow anyways. It's pretty easy to do USB debugging and wifi debugging directly on the device. Of course this only works for the devices that you have at your house, but I've found it to be much better.
I think maybe we've taken the whole continuous delivery thing too far. It makes sense for web services/applications that can quickly be patched in a handful of locations to fix a problem for all users. It makes less sense for desktop applications that must be patched on every single user's machine.
Xamarin is really focused on mobile development, and in particular a large chunk of our effort is into making C# and F# great languages on both Android and iOS.
Our Forms API is a cross-mobile API to create UIs, part of a family of cross-platform APIs that allow for more code sharing across platforms (additionally we now have libraries for 2D raster graphics, 3D retained graphics, and various assorted device-specific libraries [1]).
Eto and Avalonia area really APIs on top of a .NET runtime, either Xamarin or .NET, just like Forms, and they have a focus on the desktop space. I think they are great, and we fix bugs and assist those teams when possible.
That said, some of our users have asked for a long time to share their mobile code on the desktop, so we have started an effort to bring Xamarin.Forms to Mac, and we will be extending this with support for WPF on Windows as well (in addition to the already supported Windows/UWP).
If you want to try out our Mac support, check out this branch:
There is no such thing as true cross platform UI. You're either going to have to set things up as a least common denominator of all, not truly fitting in and ignoring the strengths and features of the individual platforms, or you're going to specialize so much that you might as well do it native for each.
In my limited experience, the only thing that really sucks is having to keep an iMac or something else with the fruit logo on the case in the loop in order to cross-compile for iOS.
Xamarin compiles through XCode, so having Mac somewhere is a requirement. Any platform that compiles for iOS would have this same issue. I think the MS is pushing Xamarin Forms because it could eventually become a more direct competitor to React Native. In theory, you could remove the compile requirement for a Xamarin Forms only project. I am a C# guy, but React Native is attractive and Xamarin needs to have a compelling alternative.
Other platforms like Codename One ( https://www.codenameone.com/blog/comparing-xamarin-and-coden... ) can provide things like Java support for iOS, Android, Windows etc. without a physical Mac. They do it thru a cloud build process. It works properly because of the lightweight architecture.
Obviously the goals of Codename One and Xamarin are different whereas Codename One tries to be WORA, Xamarin doesn't.
The downside is that offline builds cost $399/month, though I would hope that they would make this functionality available to everyone if for some reason the company shut down.
I've tried Xamarin a couple of times and found that it's come along leaps and bounds in recent years. Especially when you compare it to the crashy mess that is XCode.
I suspect it hasn't been widely adopted simply because it costs money and adds a dependency (Xamarin need to implement new iOS APIs before you can use them).
For me personally, I love C# and really tried to justify buying. But then Swift came along and it's a joy to use. Doesn't work cross platform, of course.
Xamarin has some pretty sweet tools (Inspector, Profiler) that are only available for Visual Studio Enterprise subscribers.
This is a bummer because things like this live coding add-in require installation of the Inspector, which adds some magic to every build to facilitate dynamic assemblies: https://github.com/praeclarum/Continuous
The Xamarin Workbooks thingy appears to offer an IPython notebook experience (a chance to reduce edit/build/test cycle for prototypes); not sure if it's headed for Enterprise-only or not:
Xamarin as a platform has made great advancements in the latest 1.5 years. I have been using it for 2.5 years. Haven't had a chance to play with React yet, which HN seems to leans towards. When I stared my app building platform startup, I had to pick between React and Xamarin. Ultimately picked Xamarin because we already knew the platform and Forms was mature enough, whereas React wasn't that mature imo (few apps outside the facebook dev team were big in scale). Xamarin Forms has its issues but now that it is open source the community can tackle those issues together. Happy with my choice so far, Xamarin has a great community.
I do most of my dev work on Windows or OSX. Xamarin also works with VS and it seem like VS runs on linux (https://code.visualstudio.com/docs/setup/linux). It is the same as deving for Xamarin on Windows, you have to use VS.
Adding to the confusion, the podcast player is buried below, so it wasn't obvious that this is in the page for listening to the podcast (as opposed to the podcast being on some other page that's linked to from here)
Development on Linux. Xamarin dev on Linux is limited to MonoDevelop, instead of Xamarin Studio which is the one where you actually get some tooling for the purpose; and I'm not sure it's even possible to get anything of value done with Xamarin using Linux alone.
Xamarin thought it was a great idea to fork MonoDevelop but completely drop support for a platform the application was already running on. Something that would blow my mind if I didn't know better the people involved with Xamarin at the start. Rather, a specific person. No points for guessing correctly who it is.
With that said, there are a lot of alternatives for Xamarin. Last year I tested a bunch of mobile frameworks on low-end devices and it really doesn't compete with native, and in fact lost to Kivy in runtime speed, a Cython-based, community-run framework. Worth mentioning that it was about on par with React Native.
Could it be that your service is more suited for people working with React?
In a slightly related note, I find it hilarious that people are using a framework made by a company behind what is probably the most hated mobile app ever.
We're a mobile focused continuous integration and deployment solution.
When deciding which platforms to support, we looked at current adoption for Native iOS and Android (this was no brainer), Hybrid (PhoneGap, Ionic, Cordova) and "emerging" platforms (React Native, Xamarin).
Ultimately, we decided to prioritize the others first. CI/CD service is applicable to any mobile development team.. but to your point, buddybuild is better suited to those other platforms, as those are the only ones we support.
In our experience (which also factors inbound requests), Xamarin is still relatively nascent as compared to the others.
That said, you can should expect to see Xamarin support soon :)
Also, fwiw, Microsoft purchased Xamarin only recently.
But this puts your first statement in a completely different light ;)
I should also note that React Native was announced in 2015 while Xamarin was announced in 2011 (with Miguel's work on Mono being much older). Can you then call Xamarin an "emerging" platform?
I'm not saying Xamarin is the greatest tool, but it's definitely not unmarketable. There are always several jobs around me on the job boards. But if your comment was a generalization, then I guess you could make the same argument for being a Swift developer because ios devices are only 10% of the market. Telling people not to learn Xamarin is stupid. It maybe the right tool for some people. And besides, Xamarin Android is VERY similar to native Android Java code. If you learn Xamarin Android, it is a easy jump to native android.
Totally disagree with this, I have been in a xamarin dev team and had seen senior developers get nice salaries as more corps are going on to Xamarin. I also saw our talent get head hunted by other companies. I receive at least 2-3 emails a month for Xamarin roles. In fact I told my software dev friends that wanted to get into mobile to learn Xamarin. Some took my advice, it has worked out great for them and their careers.
If you know Swift or Java, C# is trivial to pick up. And Xamarin's SDK maps closely to their native counterparts, so hardly anything new there either.
I'd say C# is worth learning if you have the opportunity. But agree it's better to invest time learning a specific platform like iOS or Android. Coupled with C#, you'll be in good shape to pick up any Xamarin project out there.
We will probably keep our distance from it since it's now part of Microsoft because I expect it won't be supported as well on anything other than Windows.
Some of the products (like Xamarin.Mac) only run on macOS and a significant percentage of the team develops on macOS. I wouldn't assume poor non-Windows support.
Given Microsoft's history, assuming poor support for non-Windows is the rule, not the exception. When there's cross platform feature parity for all their tools, then I'll reevaluate.
It looks to me that Xamarin would like sunset Xamarin Studio. This was easy on Windows with Visual Studio, but on macOS I think they are waiting for the VS Code (or whatever it ends up being) to be mature enough.
OK, it seems like they have committed to Xamarin Studio renamed now to 'Visual Studio for Mac'. Doesn't make sense to me with the parallel effort building the cross platform IDE 'Visual Studio Code'. Thanks for the correction.
VSCode isn't really an IDE as much as a text editor and competitor to Sublime, Atom, etc. You can build in some languages with it, but it's not a competitor to a full-featured development environment like Intellij's IDEA or Visual Studio and not anywhere near a mobile development-oriented IDE.
In addition, VSCode is open source, so to some degree its direction depends on what the community wants to happen with it.
That being said, re-branding Xamarin Studio (which in my experience, has been buggy as all get-out) as Visual Studio Mac without many significant new features seems more of a PR move than anything else. It'd be awesome if they'd put more money/manpower towards fixing it.
Visual Studio Code versus Visual Studio for Mac can be seen as something like Sublime Text versus XCode. The confusing names aside, they both target slightly different niches.
I hope that Xamarin keeps on improving as I believe it still could be (one of) the best x-plat option.