MvvmCross as "Native" Libraries - xamarin

I have a project which greatly depends on ServiceStack, unfortunately the V4 releases, which includes PCL release for most platforms(especially after forking out for a Xamarin Licence), is just way out of my price range as an ISV. I have cloned the MvvmCross code but before I start messing around I would like to know what pitfalls I could run into when attempting to create a Non PCL based version compatible with the platforms I target (Currently Xamarin.Android, WPF and WinRT). The idea would be to able to reuse the code for the WPF project to build Android and WinRT clients.
Does anyone have any pointers?

I don't think there is any problem or pitfall with what you are describing - and I don't think you'll need to fork the MvvmCross source.
You should be able to build your apps as native code, and should then be able to reference the MvvmCross PCL libraries directly from the native libraries you are building - you don't need to rebuild MvvmCross to do this. Plenty of people already use MvvmCross using "file linking" rather than PCLs - it's not the default setup encouraged by the Nuget packages, but it still works fine.

Related

Cannot find "cross-platform using PCL" while creating a xamarin app

I want to create a xamarin cross platform using PCL. I do not find this option while creating a project. Am I missing any installations?
Is "Xamarin.UITest Cross Platform Test Project" similar to that? But that does not open Android and IOS directories in it
The PCL option is deprecated .
From the official documentation:
Portable Class Libraries (PCLs) are considered deprecated in the
latest versions of Visual Studio. While you can still open, edit, and
compile PCLs, for new projects it is recommended to use .NET Standard
libraries to access a larger API surface area.
If you wan't to create a Xamarin.Forms solution, you must select the Mobile App (Xamarin.Forms) template. Nowadays, everything moved to .netstandard 2.0

Using platform specific httclienthandler?

In xamarin should I always configure the app to use the platform specific httpclienthandler or is it ok to use the default httpclienthandler. I have read that you get better performance but I was just wondering if it is so much better that this should be a standard practice for all my xamarin apps.
It is ok to use httpclienthandler in the portable class library(pcl). Feel free to use HttpClient to run in a PCL library that supports iOS, Android, and WP8.
Here how i did it. Restart from a clean project.
Create a PCL with iOS, Android, .NET 4.5 and WP8. Add the microsoft Http nuget. It will install 2 other packages into the PCL.
Create the Android and iOS projects. Reference your PCL in both projects. For me that's all. It just works.
You may add the reference "System.Net.Http" in both platform projects. The reference is under Assemblies/Framework.
NEVER add Microsoft.Http nuget in any native project, nor the BCL nuget. It will create mess and you'll have to clean lots of things before it can work again.
It is extremely important that your NuGet manager is up to date, go to Tools-> Extensions and updates -> Updates

ArcGIS Runtime SDK for Xamarin?

I downloaded ArcGIS Runtime SDK for Xamarin (Quartz Beta).
On installing it out of the box in portable project I get following error :
Could not install package 'Esri.ArcGISRuntime.Xamarin.Forms
100.0.0.1369-beta'. You are trying to install this package into a project that targets '.NETPortable,Version=v4.5,Profile=Profile7
I tried to change the profile number but it doesn't seem to work. How should I proceed?
The sample code from their github project shows that they set up their projects using a shared code approach rather than a Portable Class Library. I'm not sure they designed their library with PCL support in mind.
In the beta forums, an esri employee answered this with regards to whether the SDK could support PCL:
Unfortunately PCL isn't possible for the Runtime due to some of the native dependencies. We recommend using shared projects to share the code you otherwise would have put in a PCL.

Can not compile after migrating unified api in xamarin forms

We have migrated the xamarin forms project to unified api.
But we have the strange compile error like this:
Could not AOT the assembly '.../iOS/obj/iPhone/Debug/mtouch-cache/Build/Xamarin.Forms.Labs.dll
So I changed the settings in iOS project's options.
In ios Build Tab of Project options(iOS) I changed the "don't link" to "Link all assemblies".
But the app is crashed when it is started.
xamarin version is 5.7.1(build 17).
xamarin forms's version is 1.3.5.6337.
xamarin forms labs's version is 1.0.1.5.
Please help me if you have the experience with this error.
Replace Xamarin.Forms.Labs with XLabs.Forms.
There has been a major refactoring on how the XLabs project is structured so your existing project based on the 1.x.x will break. The reason for the refactoring was simple; separate functionality that does not depend on Xamarin.Forms into different assemblies. This allows the use of functionality like IoC, Serialization and even platform specific services without referencing XF.
To upgrade:
Uninstall any existing Xamarin.Forms.Labs packages from your
project.
Install XLabs.Forms package to your projects (PCL, iOS, Droid & WP). This will update Xamarin.Forms to the latest stable release (1.4.x)
Refactor code to reference the correct namespaces.

Xamarin: Unable to add HotTuna.StarterPack

I am trying to install the MVVMCross.HotTuna.StarterPack on my Xamarin (Mac) Solution using the NuGet, but i ain't successful. The package was installed in the Xamarin.Android project successfully but while i try the same to do with the iOS and PCL project, it doesn't add. Any Idea on whats going wrong? Thanks!
That nuget package requires nuget 2.5 which isn't yet finished/released for Xamarin Studio - track https://github.com/mrward/monodevelop-nuget-addin/issues/13 for updates
It will also probably require fixes from Xamarin - they've not yet released PCL support, but it is in development. You can ask their forum and/or support for updates on this.
In the meantime:
you can develop for MvvmCross using VS on the PC - see http://mvvmcross.wordpress.com/
you can develop using binaries (not nuget) on the Mac - see http://slodge.blogspot.com/2013/05/xamarin-studio-quick-run-through-for.html
For Xamarin.Mac/MonoMac support, there's no PCL support currently available - so the only way to get this working currently is to fork the MvvmCross solution and to compile the PCL libraries for the appropriate Mac project. For more on current .Mac issues, track and/or contribute to: http://forums.xamarin.com/discussion/3733/playing-with-pcls

Resources