I have some confusions About the IDE to use for MvvmCross
a) VisualStudio (VS) uses Xamrarin.iOS and Xamarin.Android plugin for iOS and Android development. But can we also use PCL(Portable Class libraries) and MVVMCross/Monocross frameworks in VS? I see the PCL option on VS but, i don't see the support for Android & iOS. Do i need to install additional plugin for PCL to support these two platforms as well?
b) Xamarin IDE supports Android and iOS development on Mac but, is it true that Xamarin doesn't support Mono.iOS on windows? Isn't it strange that Visual studio can use the network mac for iOS development but why not Xamarin Studio?
Thank You for your time.
Regards,
Saurav
a) VisualStudio (VS) uses Xamrarin.iOS and Xamarin.Android plugin for iOS and Android development. But can we also use PCL(Portable Class libraries) and MVVMCross/Monocross frameworks in VS? I see the PCL option on VS but, i don't see the support for Android & iOS. Do i need to install additional plugin for PCL to support these two platforms as well?
MvvmCross currently uses Profile104 for Portable Class Library development. You can easily develop for this profile without installing Android and iOS. The mapping of PCL profile to platforms is, however, quite confusing (it's not exactly obvious) so the easiest way I find to create a Profile104 PCL is:
to create any PCL
then to manually edit the csproj file to say Profile104 - look for a line like: https://github.com/slodge/MvvmCross-Tutorials/blob/master/Babel/Babel.Core/Babel.Core.csproj#L14 in the csproj
I have customers who develop in medium size teams where only some people have the Xamarin tools installed - most people have just Windows tools and work on the PCLs using Unit Tests and using WindowsPhone/Store user interfaces.
b) Xamarin IDE supports Android and iOS development on Mac but, is it true that Xamarin doesn't support Mono.iOS on windows?
Yes, this is true.
Isn't it strange that Visual studio can use the network mac for iOS development but why not Xamarin Studio?
This may feel strange, but I believe this is actually this is Xamarin listening to their customers.
I believe, that the reason customers wanted Windows support for iOS was because they wanted to use Visual Studio and they wanted to use plugins like Resharper. Xamarin provided this in their 2.0 release.
It is true that they could also have added iOS functionality to XamarinStudio for Windows as well - but this (I believe) wasn't what any of their customers were asking for - so adding it would have created more work (both in creating and maintaining it) without adding any significant benefit (IMO)
Related
Given an app written in C# for Xamarin, can it be built to run on all the supported platforms with minimal changes, including Android, iOS, MacOS, Windows?
I realize that Xamarin claims 90% of the code is shareable across platforms (and 10% needs to be customized), and I'm referring to that "90%".
What I don't understand is whether that 90% is shareable across the different Xamarin tools,e.g. Xamarin.Forms and Xamarin.Mac or if those are substantially different tools with different APIs, etc.
For example, I see that with Xamarin.Forms I can build for iOS, Android, and Windows. But not MacOS. So, on a Mac, can I install Xamarin.Mac and then build the same app for MacOS ?
You can add a MacOS target for your Xamarin.Forms-based UI, of course, this is done via Visual Studio for Mac:
https://learn.microsoft.com/en-us/xamarin/xamarin-forms/platform/other/mac
There are items within Forms that are not feature complete on MacOS and thus it is still in a "Preview" release and those are listed on the "Platform Support macOS Status" wiki:
https://github.com/xamarin/Xamarin.Forms/wiki/Platform-Support-macOS-Status
Xamarin.Forms is the framework that allows you to create cross-platform apps between Android, iOS and UWP. In my experience, a lot of the features of Xamarin.Forms do not transfer over to Xamarin.Android. In fact, a big chunk of the way things are done for UI Xamarin.Forms will not transfer over to the Xamarin.iOS and Xamarin.Android. Most of the times when I find a solution that works in Xamarin.Forms and I try to do the same thing in Xamarin.Android I end up just figuring out the problem myself in Xamarin.Android from scratch.
When they say that 90% is shared, they mean that within Xamarin.Forms... 90% of the work on your models and code behind can be shared between the projects (within that Xamarin.Forms solution) and 10% will have to be custom tailored for each platform (UWP, Android, iOS)
EDIT: Just for clarification in the future, you need an iOS device or an iOS virtual machine to compile the code on iOS
To build Xamarin.iOS apps with Visual Studio 2019 on Windows, you will
need:
A Windows machine with Visual Studio 2019 installed.
This can be a physical or a virtual machine.
Windows system requirements
A network-accessible Mac set up with Apple's build tools and Xamarin.iOS.
Visual Studio 2019 accesses this machine over a network
connection to use Apple's build tools, which are required for
compiling native iOS applications.
Mac system requirements
source: https://learn.microsoft.com/en-us/xamarin/ios/get-started/installation/windows/?pivots=windows
As long as you use .Net code and Xamarin.Forms it is 100% portable/sharable across every single project. Xamarin.Forms are currently in beta for macOS and Windows WPF (but for UWP it is not beta), and for macOS particularly they don't have the true native look.
Xamarin does support using the native interfaces and native APIs and whenever you do that, it is not portable.
So there is nothing like 90% sharable, it may be some estimate for some cases. It can be 100% sharable or it can be only 10% sharable depending on your project and how much you stick to the sharable APIs.
Is it possible to develop a portable Xamarin mobile (Android) application with MonoDevelop on Linux?
I'm using Linux Mint, I have installed MonoDevelop with the guides MonoDevelop linux and MonoDevelop Ubuntu-Debian.
After installing, I have expected, when creating a project, to find out a project type similar to "Xamarin Android Application" or something.
The only project type mentioning cross-platform + Xamarin is this:
The guides on Xamarin site only applies to Xamarin Studio. I am lost, is there something broken in my installation or it is simply impossible to use MonoDevelop to develop Xamarin for mobile Android applications (and I totally misunderstood)?
In case, can you point me to a guide or resource about developing Xamarin portable mobile apps with MonoDevelop?
PS: There is one Stack Overflow question with last comment of year 2012, and, since then, lot things have changed: Xamarin merge with NET.foundation, the open source release of Xamarin SDK.
Clearly I have misunderstood about Linux support availability. I have thought the question should be re-formulated. I hope this match the policies.
Not yet, Xamarin Android will be available in Linux , but ETA is still unclear.
https://github.com/xamarin/xamarin-android
I have a project in Android Studio (on a pc), and as far as I know now Microsoft owns Xamarin and its free once you have a Visual Studio license, then you can develop apps using C#(Already know that I have to port the JAVA code) and then compile in a MAC the IOS app.
My 2 concerns are:
When you can't compile, will the IDE show the IOS related errors?
There is a clear implementation of "cross platform code" vs "specific code"?
How Xamarin manage it?
In addition, our plan is to finish the app for Android which is our primary target and then manage the IOS, besides the other questions, what I need to know is if that is possible.
Yes, the VS IDE will show you build errors from the iOS build server.
Yes, you can build an Android app using Xamarin and later extend it to build an iOS app also. This is easiest if you use Xamarin Forms, but it also possible with native Android/iOS UI, but will be much more dependent on how you architect your applications.
My company is developing corporate Windows 8.1 apps for use within the organisation. Although we are only targeting Windows 8.1, we are interested in developing our apps with a view to eventually target Android and/or iOS by using Xamarin.
So, we want to develop using PCLs that are compatible with Xamarin, but we haven't licenced it yet, since we're not ready. Can we simply install the PCL profiles for Xamarin so we can at least be assured that our classes will be compatible, if and when we are ready?
So you have couple of possibilities.
As m-y mentions in his comment you can install the trial and you will get the PCL profiles.
You can get someone else with the Xamarin tools installed to grab a copy of the PCL profiles on his machine (a bit harder to maintain).
You can buy the product (might not be what you want)
However, you could go ahead, make the PCL you are currently using and target it to WPA8.1 and Windows 8.1, and later on just change the profile and make the minor corrections it would take to get it working with Xamarin.
The profiles are not xamarin profiles - they are .net profiles which xamarin support.
The profiles are installed as part of visual studio 2013 - or can be installed as extensions to visual studio 2012.
If you select WindowsPhone Silverlight 8.0, .net 4.5 and Windows Store apps then this will allow you to build a profile 78 pcl library - which is one of the profiles xamarin support - and is a pretty good choice for modern development...
I would like to know if it is possible to compile a Monotouch project that does not have any reference to any UI library in Visual Studio. This project only use the Monotouch framework.
I have done some research and I read that, if the project don't have any reference to the Apple SDK , I should be able to build a MonoTouch project using Visual Studio. If I can, do i need some particular configuration to achive my goal.
Some related links:
How easy is it to develop an iPhone application using MonoTouch in Visual Studio?,
How can I develop for iPhone using a Windows development machine?,
iPhone development on Windows
Even if your project doesn't have any references to MonoTouch libraries, it is still a MonoTouch library project. Visual studio doesn't recognize that project type and because of that you can't really compile the code.
I wrote about this a while ago, and how you can change your project so you can actually use Visual Studio for development (although you won't be able to run the app) here:
http://escoz.com/blog/developing-with-monotouch-on-windows-and-visual-studio
Hope that helps.
There is a Visual Studio addin that may help. It hasn't been updated in a while though. Also, this would only help you write the code. To compile and run the code, you will still need MonoTouch and a Mac. https://github.com/follesoe/VSMonoTouch
Update : As of February, 2013 Xamarin includes Visual Studio support for developing iOS apps in their Business sku of Xamarin.iOS. You can fully develop on Windows + Visual Studio, but still need a Mac on your network to perform builds and run the simulator.
If you're talking about building a DLL or library in VS.NET that you could then use in a MonoTouch project, I believe the answer is NO. To be usable in MT, the code has to be compiled with MT.
The MonoDevAssist VS extension (search VS Extension Manager for "monotouch") seems to work perfectly. There are just a couple of easy steps to follow post-installation, which are documented here:
http://monodevassist.codeplex.com/documentation