How to install, setup and use XLabs?

FredyWengerFredyWenger CHInsider ✭✭✭✭✭

Hi all

As the installation and use of XLabs is not self-explaining and there is no clear and easy documentation available right now, I have wrote a document (parallel to implement some functions from XLabs) in the hope, this may help some others like me :sunglasses:

I further think, that much of the interested users are not hard-core-developers, that have maximum experience with Xamarin and can follow the “snipped-description’s”.
I think that much of the developers simply want to enhance standard-XF with functions of XLabs and can be overwhelmed by the hurdles to install and use it, what is very pity for the awesome work in this extension.

:love: I want to thank the whole XLabs-team here for their awesome work! :love:

Link: matrixguide.ch/Datenablage/diverses/How_to_Install_and_Setup_XLabs.pdf

The .pdf behind the link below contains:

  • How to install/update XLabs with NuGet?
  • How to use a XLabs-control?
  • How to register and use a XLabs-Service (examples: device and Geolocation)?
  • Possible hurdles?

I think, also XF-beginner’s should be able to use XLabs with the description :)

Finally, I hope you like the description and it helps you over the first hurdles with the awesome XLabs!

«1

Posts

  • XamarinNoobXamarinNoob USMember

    Nice of you to take the time to do this.

  • FredyWengerFredyWenger CHInsider ✭✭✭✭✭

    I am pleased that like it and have posted here.
    So I know that my work have helped somebody, what was the target :)

  • powerdudepowerdude USMember ✭✭

    I'd suggest it would be better to contribute back to XLabs and enrich the documentation there

  • FredyWengerFredyWenger CHInsider ✭✭✭✭✭

    @cliftonvaughn:
    Thanks for your posting, but I am not in the XLabs-Team (I am just a user, that want to help other users) and wrote the document, as I don't have found any information's like this on the XLabs-Page.
    So... it's not up to me, to enrich the documentation on the XLabs-page :sunglasses:.
    But I have posted on the XLabs-page, that this tread/documentation exists - maybe someone from the XLabs-team can/will post a link from the XLabs-page (if they find it useful). :flushed:

  • powerdudepowerdude USMember ✭✭
    edited March 2015

    @FredyWenger, You don't have to be a member of the team. It's open-source software (OSS). Anyone can fork the code, and documentation i believe, and contribute. It's up to the leads to accept, sure, but that shouldn't prevent you from contributing. So, it is up you to help OSS if you want to. :wink:

  • FredyWengerFredyWenger CHInsider ✭✭✭✭✭

    @cliftonvaughn:
    I don't have code to fork and - as I wrote - have posted a message with a link also on XLabs.
    So... XLabs can feel free to post a Link (in a minute), if they want to do :smirk:

  • SKallSKall USMember ✭✭✭✭

    https://github.com/XLabs/Xamarin-Forms-Labs

    Fork the project, modify either code or the documentation/wiki, create pull request and then someone from the team will review it, merge into the main branch (if everything is ok) and add you to the contributors list.

  • FredyWengerFredyWenger CHInsider ✭✭✭✭✭

    @Skall:
    Sorry, but I don't have any experience how to fork, create pull-request and so on...
    Further, it's (only) a .pdf...

    So... my suggestion:

    • Someone check the .pdf and - if O.K. - add a simple link in the Wiki (see attachment)
    • If something is wrong in the .pdf, send me a PM and I will "PM you" then my mail-address (so that the changes can be mailed to me)
      => I then will change the false information's and update the document :smile:
  • KarlKoppKarlKopp AUMember ✭✭

    I'm using the Xamarin IDE (not Visual Studio) running on OSX. When I search for XLab in nuget, I get no results (both with and without pre-release checked). Any ideas?

  • FredyWengerFredyWenger CHInsider ✭✭✭✭✭

    @KarlKopp:
    Unfortunately, I don't know Xamarin Studio.
    But I think, the installation of a NuGet should be similar to Visual Studio..?

    The NuGet package is there. NuGet-Link:
    https://nuget.org/packages/XLabs.Forms/

    According to a blog, I found: blog.xamarin.com/xamarin-studio-and-nuget/
    there also should be a NuGet-Console in XS.
    So I think (not know), there also should be possible to install the package manually (copy paste the command like:

    Install-Package XLabs.Forms

    In the console...?

  • mattwardmattward GBMember Xamurai

    @KarlKrop - For some reason searching for "XLab" returns no results but searching for "XLabs" or "XLabs.Forms" returns the NuGet packages. The search not returning any matches seems to be a NuGet server problem since you get no results if you search directly on nuget.org for "XLab".

  • MabuMabu USMember

    @FredyWenger I read your documentation on XLabs.Forms. you not added XAML example. Can you update the document with XAML example.It will helpfull to many. Thanks

  • @mattward
    you have to search for 'XLabs': http://www.nuget.org/packages?q=xlabs
    or use the nuget package exlorer in VS and serach for 'XLabs'

  • FredyWengerFredyWenger CHInsider ✭✭✭✭✭

    @Mabu:
    Unfortunately, I don't work with XAML, but I think, your should find some examples, If you do a Google-search.

  • NeilMcKechnieNeilMcKechnie USMember

    @FredyWenger : Thank you so much for writing this up. I'm very excited about Xamarin.Forms, and the XLabs stuff seems to have a lot of promising components. But I've tried to get it set up several times and failed after hours of trying. I am the kind of developer you wrote this for and I'm surprised you're not getting more "thank you's" so from me to you: "THANK YOU!".

    To the other commenters suggesting he should incorporate this into the official wiki, sure I agree with that too. Just glad to have found it somewhere!

  • FredyWengerFredyWenger CHInsider ✭✭✭✭✭

    @NeilMcKechnie:
    Thanks for your reply, so I know, that my work is estimated and have helped some others (what was the target). :-)

  • NeilMcKechnieNeilMcKechnie USMember

    Hey Fredy, would you mind sharing your code on how to get the current location? I've been playing with it but no luck, especially doing it asynchronously.

  • SKallSKall USMember ✭✭✭✭

    Have you guys looked at the sample app?

    https://github.com/XLabs/Xamarin-Forms-Labs

  • FredyWengerFredyWenger CHInsider ✭✭✭✭✭

    @NeilMcKechnie:

    As I have implemented the GPS-function before I have installed XLabs, I have implemented it directly with the Xamarin.Geolocation-package (without XLabs).
    Therefore I had to implement a small amount of platform-specific code (Android), what is not necessary by taking the XLabs-Interface.

    But I think (not sure), that also XLabs use the Xamarin-Package as base.

    Maybe, I will change to the XLabs-Implementation later.

    However, I post my code below for your.
    On my search-page I have various search-items.
    The user can define a zip-code OR the GPS-Position and a radius as base (start-point) for the search.
    Below you can see the code behind the GPS-Button (get GPS-position and overtake it for later search the web-service)

    To use the standard-geolocation, you have to install the Xamarin.Mobile-package. I think (not sure) that this package is installed as dependency automatically also, if you install XLabs).

    To use the Xamarin-Geolocation, you have to add the following using to the page:

    using Xamarin.Geolocation; // needed for query the GPS-Data via Xamarin-Geolocation

    Code behind GPS-Button:

    bt_GPS.Clicked += async (sender, e) => // Eventhandler to Button „Get GPS Coordinates” 
     {
       DatenLadenElement.IsVisible = true; // Show loading spinner (included on top of the page but invisible) 
    #if Android
      var ctx = Forms.Context;
      locator = new Geolocator(ctx) { DesiredAccuracy = 50 };
    #else
      locator = new Geolocator { DesiredAccuracy = 50 };
    #endif
    try
      {
        Xamarin.Geolocation.Position position = await locator.GetPositionAsync(timeout: 10000);
    // get the position
         string cPosLatKomma = position.Latitude.ToString();
         string cPosLongKomma = position.Longitude.ToString();
    // Change comma to point
         string cPosLatPunkt = cPosLatKomma.Replace(",", ".");
         string cPosLongPunkt = cPosLongKomma.Replace(",", ".");
         string cPosition = "Position: Lat: " + cPosLatPunkt + ", Long: " + cPosLongPunkt;
    // Overtake coordinates in central search-variables (for later search the web-service
         GV.SucheGuides.cLatiTuede = cPosLatPunkt;  
         GV.SucheGuides.cLongiTuede = cPosLongPunkt; 
      }
    catch
      {
        DisplayAlert("Fehler", "Die GPS-Position konnte nicht abgefragt werden. Aktivieren Sie die Positionsermittlung über WLAN oder suchen Sie nach PLZ/Ort", "OK");
      }
        DatenLadenElement.IsVisible = false; // Hide the loading spinner
    };
    

    Hope this helps... :)

  • @FredyWenger : I think the code from Xamarin.Mobile and XLabs according to the geolocator is quite the same!

  • HristoEnevHristoEnev USMember

    Thanks for this awesome installation guide! That helped me very very much.

  • FredyWengerFredyWenger CHInsider ✭✭✭✭✭
    edited April 2015

    You are welcome :smile:

  • TimChaffeeTimChaffee USMember, University
    edited June 2015

    @FredyWenger : Thank you it helped me get it up and running fast!

  • GeorgeCookGeorgeCook PEUniversity ✭✭✭
    edited June 2015

    is there anything that can be done to make it easier to use from source? I spent hours trying to get it to compile in xamarin studio.

    admittedly I was total noob back then; but I think it's prohibitively difficult to get it into a project as source.

    any suggestions on that, using git subtree etc.

    you guys would get more pull requests, I'm sure if it was easier to get started - I think a lot of dev's would've given up (I had no choice, as I wanted to add more features to gridview, and necessity is the mother of all invention, as we all well know).

    [EDIT:] I did get it working; it's just I had to edit many csproject files, remove all the packages and add them again and some other silly stuff. I think a lot of people would've given up.. is it just a vs/xs problem?

  • FredyWengerFredyWenger CHInsider ✭✭✭✭✭

    @TimChaffee:
    Your welcome and thanks for your nice comment (If I receive any Likes and/or positive comments here, I can see, that my work make some sense... :smile:).
    Further, any comment let this thread pop on the first forum-page so that also other users maybe can catch-up, if they want to use XLabs.
    @ all readers of this thread:
    The most important control in XLabs for me is the PopUp control.
    You can use it principally to show what you want from a page (e.g. button-event) on a PopUp, without the need to call/use a further page.
    I use it - e.g. - to show ListViews in a ScrollView (what don't work with plain XF, as the ListViews in the ScrollView are not scrollable in Android since a few XF-Versions and also LV's generally not should be used in ScrollViews ("...don't use a scrolling control (LV) in an scrolling control (SV)...").

    As - unfortunately - the PopUp control is not documented (also not mentioned under "Available controls") on the XLabs-Page - what is a pity b.t.w. - and it also is not trivial to implement it (without documentation), I also have created a description to it here:
    forums.xamarin.com/discussion/33587/how-to-use-a-listview-in-a-scrollview-with-xlabs-popup-control#latest

    For starters with Xamarin, especially also with XF, you can find a quick-start guide here:
    forums.xamarin.com/discussion/36821/quickstart-guide-to-start-developing-with-xamarin-forms#latest
    There are various themes described in it (including, e.g. how to use the forum, how to use nugget and much more).
    I think, some of the described themes also should be interesting for users that works with Xamarin since a while...

    ... and you can find some more descriptions/documentations, if you click on my profile (avatar, name).

    Hope this helps someone further :sunglasses:

    @GeorgeCook:
    Thanks also for your posting here.
    You should post such questions/suggestions on the XLabs-page (note: I'm not part of the XLabs team):
    https://github.com/XLabs/Xamarin-Forms-Labs/issues

  • gilbertomacedogilbertomacedo BRMember ✭✭

    @Fredy: you saved me once more, thank you so much!

  • SKallSKall USMember ✭✭✭✭
    edited August 2015

    @GeorgeCook I have not had issues using it as a submodule. I am not sure if some of the changes others have posted have broken the NuGet references since then but once everything has been pulled the first thing you should do is open XLabs.sln. If using XS the NuGet references will get updated automatically. If using VS open the Package Manager Console and click on the reference button that shows up when it detects packages are missing. After that open your own solution and the XLabs projects should compile without errors. Of course this has to be repeated (open XLabs.sln) whenever there are updates to the NuGet references.

    NuGet can be a PITA to setup correctly with submodules and even when it has been setup then any package updates can easily break it. By default Nuget wants to set the paths relative to the Solution directory which of course won't work correctly with submodules...

  • FredyWengerFredyWenger CHInsider ✭✭✭✭✭

    @gilbertomacedo
    Thanks for your posting - you're welcome :smile:

  • batmacibatmaci DEMember ✭✭✭✭✭

    Do I have to install Xlabs.Core first then Xlabs.Forms or Xlabs.forms install already Xlabs.Core? I attempted to install Xlabs.Forms. I am getting error message. What is the different between 2?

  • FredyWengerFredyWenger CHInsider ✭✭✭✭✭

    As I can remember me, you need both and there are dependencies between them. But you should see this in nuget manager (info to package -> dependencies).

  • batmacibatmaci DEMember ✭✭✭✭✭

    I think that it was some problem with my VS. I managed to install Xlab.forms after restarting VS and deleting cache, rebuilt . thanks

  • Chintan.9818Chintan.9818 USUniversity

    We are trying to build nuget XLabs packages using the new cake scripts and failing on osx with the following error. Any help would be awesome


    Feeds used:
    /Users/cthakkar/.local/share/NuGet/Cache
    /Users/cthakkar/.nuget/packages/
    https://www.nuget.org/api/v2/

    All packages listed in /Users/cthakkar/Development/XLabs/tools/packages.config are already installed.
    Analyzing build script...
    Processing build script...
    Installing tools...
    Installing addins...
    Compiling build script...
    versionUtils.cake (210,20): The member CakeBuildScriptImpl.VersionInfo.ToString(bool)' does not hide an inherited member. The new keyword is not required unknown.cake (512,38): Cake.Common.Tools.DNU.DNUAliases.DNURestore(this Cake.Core.ICakeContext)' is obsolete: Please use DotNetCoreRestore() instead.' unknown.cake (519,38): Cake.Common.Tools.DNU.DNUAliases.DNURestore(this Cake.Core.ICakeContext, Cake.Core.IO.FilePath)' is obsolete: Please use DotNetCoreRestore(string) instead.' unknown.cake (526,38): Cake.Common.Tools.DNU.DNUAliases.DNURestore(this Cake.Core.ICakeContext, Cake.Common.Tools.DNU.Restore.DNURestoreSettings)' is obsolete: Please use DotNetCoreRestore(DotNetCoreRestoreSettings) instead.' unknown.cake (533,38): Cake.Common.Tools.DNU.DNUAliases.DNURestore(this Cake.Core.ICakeContext, Cake.Core.IO.FilePath, Cake.Common.Tools.DNU.Restore.DNURestoreSettings)' is obsolete: Please use DotNetCoreRestore(string, DotNetCoreRestoreSettings) instead.' unknown.cake (540,38): Cake.Common.Tools.DNU.DNUAliases.DNUBuild(this Cake.Core.ICakeContext, string)' is obsolete: Please use DotNetCoreBuild(string) instead.' unknown.cake (547,38): Cake.Common.Tools.DNU.DNUAliases.DNUBuild(this Cake.Core.ICakeContext, string, Cake.Common.Tools.DNU.Build.DNUBuildSettings)' is obsolete: Please use DotNetCoreBuild(string, DotNetCoreBuildSettings) instead.' unknown.cake (554,38): Cake.Common.Tools.DNU.DNUAliases.DNUPack(this Cake.Core.ICakeContext, string)' is obsolete: Please use DotNetCorePack(string) instead.' unknown.cake (561,38): Cake.Common.Tools.DNU.DNUAliases.DNUPack(this Cake.Core.ICakeContext, string, Cake.Common.Tools.DNU.Pack.DNUPackSettings)' is obsolete: Please use DotNetCorePack(string, DotNetCorePackSettings) instead.' unknown.cake (1750,43): Cake.Common.Xml.XmlPokeAliases.XmlPoke(this Cake.Core.ICakeContext, string, string, string)' is obsolete: Please use XmlPokeString(string, string, string) instead.' unknown.cake (1757,43): Cake.Common.Xml.XmlPokeAliases.XmlPoke(this Cake.Core.ICakeContext, string, string, string, Cake.Common.Xml.XmlPokeSettings)' is obsolete: `Please use XmlPokeString(string, string, string, XmlPokeSettings) instead.'
    Stacktrace:

    at <0xffffffff>
    at (wrapper managed-to-native) System.Reflection.Emit.TypeBuilder.create_runtime_class (System.Reflection.Emit.TypeBuilder,System.Reflection.Emit.TypeBuilder) <0x00012>
    at System.Reflection.Emit.TypeBuilder.CreateTypeInfo () <0x00464>
    at System.Reflection.Emit.TypeBuilder.CreateType () <0x0001d>
    at Mono.CSharp.TypeDefinition.CloseContainer () <0x00133>
    at Mono.CSharp.TypeContainer.CloseContainer () <0x0005f>
    at Mono.CSharp.TypeDefinition.CloseContainer () <0x001bb>
    at Mono.CSharp.TypeContainer.CloseContainer () <0x0005f>
    at Mono.CSharp.TypeContainer.CloseContainer () <0x0005f>
    at Mono.CSharp.ModuleContainer.CloseContainer () <0x0013b>
    at Mono.CSharp.Evaluator.CompileBlock (Mono.CSharp.Class,Mono.CSharp.Undo,Mono.CSharp.Report) <0x00b23>
    at Mono.CSharp.Evaluator.Compile (string,Mono.CSharp.CompiledMethod&) <0x00207>
    at Mono.CSharp.Evaluator.Evaluate (string,object&,bool&) <0x0005f>
    at Mono.CSharp.Evaluator.Run (string) <0x00033>
    at Cake.Scripting.Mono.MonoScriptSession.Execute (Cake.Core.Scripting.Script) <0x00087>
    at Cake.Core.Scripting.ScriptRunner.Run (Cake.Core.Scripting.IScriptHost,Cake.Core.IO.FilePath,System.Collections.Generic.IDictionary`2<string, string>) <0x00789>
    at Cake.Commands.BuildCommand.Execute (Cake.CakeOptions) <0x0003f>
    at Cake.CakeApplication.Run (Cake.CakeOptions) <0x0003a>
    at Cake.Program.Main () <0x0031f>
    at (wrapper runtime-invoke) .runtime_invoke_int (object,intptr,intptr,intptr) <0x000b0>

    Native stacktrace:

    Debug info from gdb:

    (lldb) command source -s 0 '/tmp/mono-gdb-commands.aut1Dw'
    Executing commands in '/tmp/mono-gdb-commands.aut1Dw'.
    (lldb) process attach --pid 9271
    warning: (i386) /Library/Frameworks/Mono.framework/Versions/4.4.2/lib/mono/4.5/mscorlib.dll.dylib empty dSYM file detected, dSYM was created with an executable with no debug info.
    Process 9271 stopped

    • thread #1: tid = 0x24fd38, 0x97d14cee libsystem_kernel.dylib__wait4 + 10, name = 'tid_a0b', queue = 'com.apple.main-thread', stop reason = signal SIGSTOP frame #0: 0x97d14cee libsystem_kernel.dylib__wait4 + 10
      libsystem_kernel.dylib`__wait4:
      -> 0x97d14cee <+10>: jae 0x97d14cfe ; <+26>
      0x97d14cf0 <+12>: calll 0x97d14cf5 ; <+17>
      0x97d14cf5 <+17>: popl %edx
      0x97d14cf6 <+18>: movl 0xb9be32f(%edx), %edx

    Executable module set to "/usr/local/bin/mono".
    Architecture set to: i386-apple-macosx.
    (lldb) thread list
    Process 9271 stopped

    • thread #1: tid = 0x24fd38, 0x97d14cee libsystem_kernel.dylib__wait4 + 10, name = 'tid_a0b', queue = 'com.apple.main-thread', stop reason = signal SIGSTOP thread #2: tid = 0x24fd50, 0x97d143ea libsystem_kernel.dylib__psynch_cvwait + 10
      thread #3: tid = 0x24fd51, 0x97d0d4d6 libsystem_kernel.dylibsemaphore_wait_trap + 10, name = 'tid_1803' thread #4: tid = 0x24fd52, 0x97d14d5e libsystem_kernel.dylib__workq_kernreturn + 10
      thread #5: tid = 0x24fd53, 0x97d157fa libsystem_kernel.dylibkevent_qos + 10, queue = 'com.apple.libdispatch-manager' thread #6: tid = 0x24fd54, 0x97d14d5e libsystem_kernel.dylib__workq_kernreturn + 10
      (lldb) thread backtrace all

    • thread #1: tid = 0x24fd38, 0x97d14cee libsystem_kernel.dylib`__wait4 + 10, name = 'tid_a0b', queue = 'com.apple.main-thread', stop reason = signal SIGSTOP

      • frame #0: 0x97d14cee libsystem_kernel.dylib__wait4 + 10 frame #1: 0x958727e0 libsystem_c.dylibwaitpid$UNIX2003 + 48
        frame #2: 0x0012249d monomono_handle_native_sigsegv(signal=11, ctx=0x00743fe0, info=0x00743fa0) + 541 at mini-exceptions.c:2348 [opt] frame #3: 0x00172512 monomono_arch_handle_altstack_exception(sigctx=, siginfo=, fault_addr=, stack_ovf=0) + 162 at exceptions-x86.c:1107 [opt]
        frame #4: 0x00064c53 monomono_sigsegv_signal_handler(_dummy=<unavailable>, _info=<unavailable>, context=<unavailable>) + 467 at mini-runtime.c:2888 [opt] frame #5: 0x91f6379b libsystem_platform.dylib_sigtramp + 43
        frame #6: 0x00181521 monomono_class_layout_fields [inlined] mono_type_get_basic_type_from_generic(type=0x00000000) + 9 at class.c:1796 [opt] frame #7: 0x00181518 monomono_class_layout_fields(klass=0x7d9ecd98) + 168 at class.c:1875 [opt]
        frame #8: 0x002628d9 monomono_reflection_create_runtime_class [inlined] typebuilder_setup_fields(klass=<unavailable>, error=0x00000000) + 2233 at reflection.c:11629 [opt] frame #9: 0x002624df monomono_reflection_create_runtime_class(tb=0x7c830200) + 1215 at reflection.c:11924 [opt]
        frame #10: 0x007d1630
        frame #11: 0x01a6cdb5 mscorlib.dll.dylibSystem_Reflection_Emit_TypeBuilder_CreateTypeInfo + 1125 frame #12: 0x01a6c93e mscorlib.dll.dylibSystem_Reflection_Emit_TypeBuilder_CreateType + 30
        frame #13: 0x036d7c64
        frame #14: 0x032a7dc0
        frame #15: 0x036d7cec
        frame #16: 0x032a7dc0
        frame #17: 0x032a7dc0
        frame #18: 0x032a7d44
        frame #19: 0x032a404c
        frame #20: 0x030f2b50
        frame #21: 0x030f2768
        frame #22: 0x030f26ec
        frame #23: 0x032be300
        frame #24: 0x02702b3a
        frame #25: 0x02702358
        frame #26: 0x025fdf83
        frame #27: 0x006a7210
        frame #28: 0x006a7561
        frame #29: 0x00068487 monomono_jit_runtime_invoke(method=<unavailable>, obj=<unavailable>, params=<unavailable>, exc=<unavailable>) + 951 at mini-runtime.c:2578 [opt] frame #30: 0x00240b26 monomono_runtime_invoke(method=0x7d2e0cc0, obj=, params=, exc=) + 150 at object.c:2897 [opt]
        frame #31: 0x00246ae1 monomono_runtime_exec_main(method=0x7d2e0cc0, args=<unavailable>, exc=0x00000000) + 401 at object.c:4223 [opt] frame #32: 0x00246898 monomono_runtime_run_main(method=0x7d2e0cc0, argc=, argv=, exc=) + 632 at object.c:3837 [opt]
        frame #33: 0x000e68e5 monomono_jit_exec(domain=<unavailable>, assembly=<unavailable>, argc=<unavailable>, argv=<unavailable>) + 213 at driver.g.c:1031 [opt] frame #34: 0x000e8dac monomono_main [inlined] main_thread_handler + 8396 at driver.g.c:1091 [opt]
        frame #35: 0x000e8d74 monomono_main(argc=<unavailable>, argv=<unavailable>) + 8340 at driver.g.c:2162 [opt] frame #36: 0x000596c1 monomain [inlined] mono_main_with_options(argc=6, argc=6, argc=6, argv=0xbffa9c74, argv=0xbffa9c74, argv=0xbffa9c74) + 33 at main.c:28 [opt]
        frame #37: 0x000596a0 monomain(argc=6, argv=0xbffa9c74) + 1184 at main.c:177 [opt] frame #38: 0x000591f5 monostart + 53

      thread #2: tid = 0x24fd50, 0x97d143ea libsystem_kernel.dylib__psynch_cvwait + 10 frame #0: 0x97d143ea libsystem_kernel.dylib__psynch_cvwait + 10
      frame #1: 0x9a68d538 libsystem_pthread.dylib_pthread_cond_wait + 757 frame #2: 0x9a68f276 libsystem_pthread.dylibpthread_cond_wait$UNIX2003 + 71
      frame #3: 0x002a228b monothread_func [inlined] mono_os_cond_wait(mutex=0xb00810b0) + 18 at mono-os-mutex.h:105 [opt] frame #4: 0x002a2279 monothread_func(thread_data=0x00000000) + 457 at sgen-thread-pool.c:118 [opt]
      frame #5: 0x9a68c780 libsystem_pthread.dylib_pthread_body + 138 frame #6: 0x9a68c6f6 libsystem_pthread.dylib_pthread_start + 155
      frame #7: 0x9a689f7a libsystem_pthread.dylib`thread_start + 34

      thread #3: tid = 0x24fd51, 0x97d0d4d6 libsystem_kernel.dylibsemaphore_wait_trap + 10, name = 'tid_1803' frame #0: 0x97d0d4d6 libsystem_kernel.dylibsemaphore_wait_trap + 10
      frame #1: 0x0023e40e monofinalizer_thread [inlined] mono_os_sem_wait(flags=MONO_SEM_FLAGS_ALERTABLE) + 14 at mono-os-semaphore.h:72 [opt] frame #2: 0x0023e400 monofinalizer_thread [inlined] mono_coop_sem_wait(flags=MONO_SEM_FLAGS_ALERTABLE) + 10 at mono-coop-semaphore.h:40 [opt]
      frame #3: 0x0023e3f6 monofinalizer_thread(unused=0x00000000) + 118 at gc.c:711 [opt] frame #4: 0x00217979 monostart_wrapper [inlined] start_wrapper_internal + 540 at threads.c:717 [opt]
      frame #5: 0x0021775d monostart_wrapper(data=<unavailable>) + 29 at threads.c:764 [opt] frame #6: 0x002d19bd monoinner_start_thread(arg=) + 349 at mono-threads-posix.c:92 [opt]
      frame #7: 0x9a68c780 libsystem_pthread.dylib_pthread_body + 138 frame #8: 0x9a68c6f6 libsystem_pthread.dylib_pthread_start + 155
      frame #9: 0x9a689f7a libsystem_pthread.dylib`thread_start + 34

      thread #4: tid = 0x24fd52, 0x97d14d5e libsystem_kernel.dylib__workq_kernreturn + 10 frame #0: 0x97d14d5e libsystem_kernel.dylib__workq_kernreturn + 10
      frame #1: 0x9a68c34b libsystem_pthread.dylib_pthread_wqthread + 1289 frame #2: 0x9a689f56 libsystem_pthread.dylibstart_wqthread + 34

      thread #5: tid = 0x24fd53, 0x97d157fa libsystem_kernel.dylibkevent_qos + 10, queue = 'com.apple.libdispatch-manager' frame #0: 0x97d157fa libsystem_kernel.dylibkevent_qos + 10
      frame #1: 0x9da9d7ea libdispatch.dylib_dispatch_mgr_invoke + 234 frame #2: 0x9da9d3be libdispatch.dylib_dispatch_mgr_thread + 52

      thread #6: tid = 0x24fd54, 0x97d14d5e libsystem_kernel.dylib__workq_kernreturn + 10 frame #0: 0x97d14d5e libsystem_kernel.dylib__workq_kernreturn + 10
      frame #1: 0x9a68c34b libsystem_pthread.dylib_pthread_wqthread + 1289 frame #2: 0x9a689f56 libsystem_pthread.dylibstart_wqthread + 34
      (lldb) detach

    =================================================================
    Got a SIGSEGV while executing native code. This usually indicates
    a fatal error in the mono runtime or one of the native libraries

    used by your application.

  • Chintan.9818Chintan.9818 USUniversity

    We are trying to build nuget XLabs packages using the new cake scripts and failing on osx with the following error. Any help would be awesome


    Feeds used:
    /Users/cthakkar/.local/share/NuGet/Cache
    /Users/cthakkar/.nuget/packages/
    https://www.nuget.org/api/v2/

    All packages listed in /Users/cthakkar/Development/XLabs/tools/packages.config are already installed.
    Analyzing build script...
    Processing build script...
    Installing tools...
    Installing addins...
    Compiling build script...
    versionUtils.cake (210,20): The member CakeBuildScriptImpl.VersionInfo.ToString(bool)' does not hide an inherited member. The new keyword is not required unknown.cake (512,38): Cake.Common.Tools.DNU.DNUAliases.DNURestore(this Cake.Core.ICakeContext)' is obsolete: Please use DotNetCoreRestore() instead.' unknown.cake (519,38): Cake.Common.Tools.DNU.DNUAliases.DNURestore(this Cake.Core.ICakeContext, Cake.Core.IO.FilePath)' is obsolete: Please use DotNetCoreRestore(string) instead.' unknown.cake (526,38): Cake.Common.Tools.DNU.DNUAliases.DNURestore(this Cake.Core.ICakeContext, Cake.Common.Tools.DNU.Restore.DNURestoreSettings)' is obsolete: Please use DotNetCoreRestore(DotNetCoreRestoreSettings) instead.' unknown.cake (533,38): Cake.Common.Tools.DNU.DNUAliases.DNURestore(this Cake.Core.ICakeContext, Cake.Core.IO.FilePath, Cake.Common.Tools.DNU.Restore.DNURestoreSettings)' is obsolete: Please use DotNetCoreRestore(string, DotNetCoreRestoreSettings) instead.' unknown.cake (540,38): Cake.Common.Tools.DNU.DNUAliases.DNUBuild(this Cake.Core.ICakeContext, string)' is obsolete: Please use DotNetCoreBuild(string) instead.' unknown.cake (547,38): Cake.Common.Tools.DNU.DNUAliases.DNUBuild(this Cake.Core.ICakeContext, string, Cake.Common.Tools.DNU.Build.DNUBuildSettings)' is obsolete: Please use DotNetCoreBuild(string, DotNetCoreBuildSettings) instead.' unknown.cake (554,38): Cake.Common.Tools.DNU.DNUAliases.DNUPack(this Cake.Core.ICakeContext, string)' is obsolete: Please use DotNetCorePack(string) instead.' unknown.cake (561,38): Cake.Common.Tools.DNU.DNUAliases.DNUPack(this Cake.Core.ICakeContext, string, Cake.Common.Tools.DNU.Pack.DNUPackSettings)' is obsolete: Please use DotNetCorePack(string, DotNetCorePackSettings) instead.' unknown.cake (1750,43): Cake.Common.Xml.XmlPokeAliases.XmlPoke(this Cake.Core.ICakeContext, string, string, string)' is obsolete: Please use XmlPokeString(string, string, string) instead.' unknown.cake (1757,43): Cake.Common.Xml.XmlPokeAliases.XmlPoke(this Cake.Core.ICakeContext, string, string, string, Cake.Common.Xml.XmlPokeSettings)' is obsolete: `Please use XmlPokeString(string, string, string, XmlPokeSettings) instead.'
    Stacktrace:

    at <0xffffffff>
    at (wrapper managed-to-native) System.Reflection.Emit.TypeBuilder.create_runtime_class (System.Reflection.Emit.TypeBuilder,System.Reflection.Emit.TypeBuilder) <0x00012>
    at System.Reflection.Emit.TypeBuilder.CreateTypeInfo () <0x00464>
    at System.Reflection.Emit.TypeBuilder.CreateType () <0x0001d>
    at Mono.CSharp.TypeDefinition.CloseContainer () <0x00133>
    at Mono.CSharp.TypeContainer.CloseContainer () <0x0005f>
    at Mono.CSharp.TypeDefinition.CloseContainer () <0x001bb>
    at Mono.CSharp.TypeContainer.CloseContainer () <0x0005f>
    at Mono.CSharp.TypeContainer.CloseContainer () <0x0005f>
    at Mono.CSharp.ModuleContainer.CloseContainer () <0x0013b>
    at Mono.CSharp.Evaluator.CompileBlock (Mono.CSharp.Class,Mono.CSharp.Undo,Mono.CSharp.Report) <0x00b23>
    at Mono.CSharp.Evaluator.Compile (string,Mono.CSharp.CompiledMethod&) <0x00207>
    at Mono.CSharp.Evaluator.Evaluate (string,object&,bool&) <0x0005f>
    at Mono.CSharp.Evaluator.Run (string) <0x00033>
    at Cake.Scripting.Mono.MonoScriptSession.Execute (Cake.Core.Scripting.Script) <0x00087>
    at Cake.Core.Scripting.ScriptRunner.Run (Cake.Core.Scripting.IScriptHost,Cake.Core.IO.FilePath,System.Collections.Generic.IDictionary`2<string, string>) <0x00789>
    at Cake.Commands.BuildCommand.Execute (Cake.CakeOptions) <0x0003f>
    at Cake.CakeApplication.Run (Cake.CakeOptions) <0x0003a>
    at Cake.Program.Main () <0x0031f>
    at (wrapper runtime-invoke) .runtime_invoke_int (object,intptr,intptr,intptr) <0x000b0>

    Native stacktrace:

    Debug info from gdb:

    (lldb) command source -s 0 '/tmp/mono-gdb-commands.aut1Dw'
    Executing commands in '/tmp/mono-gdb-commands.aut1Dw'.
    (lldb) process attach --pid 9271
    warning: (i386) /Library/Frameworks/Mono.framework/Versions/4.4.2/lib/mono/4.5/mscorlib.dll.dylib empty dSYM file detected, dSYM was created with an executable with no debug info.
    Process 9271 stopped

    • thread #1: tid = 0x24fd38, 0x97d14cee libsystem_kernel.dylib__wait4 + 10, name = 'tid_a0b', queue = 'com.apple.main-thread', stop reason = signal SIGSTOP frame #0: 0x97d14cee libsystem_kernel.dylib__wait4 + 10
      libsystem_kernel.dylib`__wait4:
      -> 0x97d14cee <+10>: jae 0x97d14cfe ; <+26>
      0x97d14cf0 <+12>: calll 0x97d14cf5 ; <+17>
      0x97d14cf5 <+17>: popl %edx
      0x97d14cf6 <+18>: movl 0xb9be32f(%edx), %edx

    Executable module set to "/usr/local/bin/mono".
    Architecture set to: i386-apple-macosx.
    (lldb) thread list
    Process 9271 stopped

    • thread #1: tid = 0x24fd38, 0x97d14cee libsystem_kernel.dylib__wait4 + 10, name = 'tid_a0b', queue = 'com.apple.main-thread', stop reason = signal SIGSTOP thread #2: tid = 0x24fd50, 0x97d143ea libsystem_kernel.dylib__psynch_cvwait + 10
      thread #3: tid = 0x24fd51, 0x97d0d4d6 libsystem_kernel.dylibsemaphore_wait_trap + 10, name = 'tid_1803' thread #4: tid = 0x24fd52, 0x97d14d5e libsystem_kernel.dylib__workq_kernreturn + 10
      thread #5: tid = 0x24fd53, 0x97d157fa libsystem_kernel.dylibkevent_qos + 10, queue = 'com.apple.libdispatch-manager' thread #6: tid = 0x24fd54, 0x97d14d5e libsystem_kernel.dylib__workq_kernreturn + 10
      (lldb) thread backtrace all

    • thread #1: tid = 0x24fd38, 0x97d14cee libsystem_kernel.dylib`__wait4 + 10, name = 'tid_a0b', queue = 'com.apple.main-thread', stop reason = signal SIGSTOP

      • frame #0: 0x97d14cee libsystem_kernel.dylib__wait4 + 10 frame #1: 0x958727e0 libsystem_c.dylibwaitpid$UNIX2003 + 48
        frame #2: 0x0012249d monomono_handle_native_sigsegv(signal=11, ctx=0x00743fe0, info=0x00743fa0) + 541 at mini-exceptions.c:2348 [opt] frame #3: 0x00172512 monomono_arch_handle_altstack_exception(sigctx=, siginfo=, fault_addr=, stack_ovf=0) + 162 at exceptions-x86.c:1107 [opt]
        frame #4: 0x00064c53 monomono_sigsegv_signal_handler(_dummy=<unavailable>, _info=<unavailable>, context=<unavailable>) + 467 at mini-runtime.c:2888 [opt] frame #5: 0x91f6379b libsystem_platform.dylib_sigtramp + 43
        frame #6: 0x00181521 monomono_class_layout_fields [inlined] mono_type_get_basic_type_from_generic(type=0x00000000) + 9 at class.c:1796 [opt] frame #7: 0x00181518 monomono_class_layout_fields(klass=0x7d9ecd98) + 168 at class.c:1875 [opt]
        frame #8: 0x002628d9 monomono_reflection_create_runtime_class [inlined] typebuilder_setup_fields(klass=<unavailable>, error=0x00000000) + 2233 at reflection.c:11629 [opt] frame #9: 0x002624df monomono_reflection_create_runtime_class(tb=0x7c830200) + 1215 at reflection.c:11924 [opt]
        frame #10: 0x007d1630
        frame #11: 0x01a6cdb5 mscorlib.dll.dylibSystem_Reflection_Emit_TypeBuilder_CreateTypeInfo + 1125 frame #12: 0x01a6c93e mscorlib.dll.dylibSystem_Reflection_Emit_TypeBuilder_CreateType + 30
        frame #13: 0x036d7c64
        frame #14: 0x032a7dc0
        frame #15: 0x036d7cec
        frame #16: 0x032a7dc0
        frame #17: 0x032a7dc0
        frame #18: 0x032a7d44
        frame #19: 0x032a404c
        frame #20: 0x030f2b50
        frame #21: 0x030f2768
        frame #22: 0x030f26ec
        frame #23: 0x032be300
        frame #24: 0x02702b3a
        frame #25: 0x02702358
        frame #26: 0x025fdf83
        frame #27: 0x006a7210
        frame #28: 0x006a7561
        frame #29: 0x00068487 monomono_jit_runtime_invoke(method=<unavailable>, obj=<unavailable>, params=<unavailable>, exc=<unavailable>) + 951 at mini-runtime.c:2578 [opt] frame #30: 0x00240b26 monomono_runtime_invoke(method=0x7d2e0cc0, obj=, params=, exc=) + 150 at object.c:2897 [opt]
        frame #31: 0x00246ae1 monomono_runtime_exec_main(method=0x7d2e0cc0, args=<unavailable>, exc=0x00000000) + 401 at object.c:4223 [opt] frame #32: 0x00246898 monomono_runtime_run_main(method=0x7d2e0cc0, argc=, argv=, exc=) + 632 at object.c:3837 [opt]
        frame #33: 0x000e68e5 monomono_jit_exec(domain=<unavailable>, assembly=<unavailable>, argc=<unavailable>, argv=<unavailable>) + 213 at driver.g.c:1031 [opt] frame #34: 0x000e8dac monomono_main [inlined] main_thread_handler + 8396 at driver.g.c:1091 [opt]
        frame #35: 0x000e8d74 monomono_main(argc=<unavailable>, argv=<unavailable>) + 8340 at driver.g.c:2162 [opt] frame #36: 0x000596c1 monomain [inlined] mono_main_with_options(argc=6, argc=6, argc=6, argv=0xbffa9c74, argv=0xbffa9c74, argv=0xbffa9c74) + 33 at main.c:28 [opt]
        frame #37: 0x000596a0 monomain(argc=6, argv=0xbffa9c74) + 1184 at main.c:177 [opt] frame #38: 0x000591f5 monostart + 53

      thread #2: tid = 0x24fd50, 0x97d143ea libsystem_kernel.dylib__psynch_cvwait + 10 frame #0: 0x97d143ea libsystem_kernel.dylib__psynch_cvwait + 10
      frame #1: 0x9a68d538 libsystem_pthread.dylib_pthread_cond_wait + 757 frame #2: 0x9a68f276 libsystem_pthread.dylibpthread_cond_wait$UNIX2003 + 71
      frame #3: 0x002a228b monothread_func [inlined] mono_os_cond_wait(mutex=0xb00810b0) + 18 at mono-os-mutex.h:105 [opt] frame #4: 0x002a2279 monothread_func(thread_data=0x00000000) + 457 at sgen-thread-pool.c:118 [opt]
      frame #5: 0x9a68c780 libsystem_pthread.dylib_pthread_body + 138 frame #6: 0x9a68c6f6 libsystem_pthread.dylib_pthread_start + 155
      frame #7: 0x9a689f7a libsystem_pthread.dylib`thread_start + 34

      thread #3: tid = 0x24fd51, 0x97d0d4d6 libsystem_kernel.dylibsemaphore_wait_trap + 10, name = 'tid_1803' frame #0: 0x97d0d4d6 libsystem_kernel.dylibsemaphore_wait_trap + 10
      frame #1: 0x0023e40e monofinalizer_thread [inlined] mono_os_sem_wait(flags=MONO_SEM_FLAGS_ALERTABLE) + 14 at mono-os-semaphore.h:72 [opt] frame #2: 0x0023e400 monofinalizer_thread [inlined] mono_coop_sem_wait(flags=MONO_SEM_FLAGS_ALERTABLE) + 10 at mono-coop-semaphore.h:40 [opt]
      frame #3: 0x0023e3f6 monofinalizer_thread(unused=0x00000000) + 118 at gc.c:711 [opt] frame #4: 0x00217979 monostart_wrapper [inlined] start_wrapper_internal + 540 at threads.c:717 [opt]
      frame #5: 0x0021775d monostart_wrapper(data=<unavailable>) + 29 at threads.c:764 [opt] frame #6: 0x002d19bd monoinner_start_thread(arg=) + 349 at mono-threads-posix.c:92 [opt]
      frame #7: 0x9a68c780 libsystem_pthread.dylib_pthread_body + 138 frame #8: 0x9a68c6f6 libsystem_pthread.dylib_pthread_start + 155
      frame #9: 0x9a689f7a libsystem_pthread.dylib`thread_start + 34

      thread #4: tid = 0x24fd52, 0x97d14d5e libsystem_kernel.dylib__workq_kernreturn + 10 frame #0: 0x97d14d5e libsystem_kernel.dylib__workq_kernreturn + 10
      frame #1: 0x9a68c34b libsystem_pthread.dylib_pthread_wqthread + 1289 frame #2: 0x9a689f56 libsystem_pthread.dylibstart_wqthread + 34

      thread #5: tid = 0x24fd53, 0x97d157fa libsystem_kernel.dylibkevent_qos + 10, queue = 'com.apple.libdispatch-manager' frame #0: 0x97d157fa libsystem_kernel.dylibkevent_qos + 10
      frame #1: 0x9da9d7ea libdispatch.dylib_dispatch_mgr_invoke + 234 frame #2: 0x9da9d3be libdispatch.dylib_dispatch_mgr_thread + 52

      thread #6: tid = 0x24fd54, 0x97d14d5e libsystem_kernel.dylib__workq_kernreturn + 10 frame #0: 0x97d14d5e libsystem_kernel.dylib__workq_kernreturn + 10
      frame #1: 0x9a68c34b libsystem_pthread.dylib_pthread_wqthread + 1289 frame #2: 0x9a689f56 libsystem_pthread.dylibstart_wqthread + 34
      (lldb) detach

    =================================================================
    Got a SIGSEGV while executing native code. This usually indicates
    a fatal error in the mono runtime or one of the native libraries

    used by your application.

  • jeffchen.5589jeffchen.5589 USMember
    I use the Xlabs for my xamarin forms. I registered the service in my android application as below, and resolver.resolve in the PCL project. Is the process right?  I donot know where to save the taken pictures. what is the path to the pictures?
    

    I cannot debug the camera implementation. However, I just want to make sure if my code implementation in android and pcl are right. Are they right in the process

    thanks -- Jeff

    The Android code is:

    [Activity(Label = "FSRApp", Icon = "@drawable/icon", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
    public class MainActivity : XFormsApplicationDroid //global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
    {
    protected override void OnCreate(Bundle bundle)
    {
    base.OnCreate(bundle);

            //new labs
            var container = new SimpleContainer();
            container.Register<IDevice>(t => AndroidDevice.CurrentDevice);
            container.Register<IGeolocator, Geolocator>();
            Resolver.SetResolver(container.GetResolver());
            //end labs
            global::Xamarin.Forms.Forms.Init(this, bundle);
            LoadApplication(new App());
        }
    }
    

    the PCL code in the App():

    private async Task TakePicture()
    {
    var device = Resolver.Resolve();

            var mediaPicker = device.MediaPicker;
    
    
    
    
            mediaPicker = Resolver.Resolve<IDevice>().MediaPicker;
    
    
    
    
    
            try
            {
                var mediaFile = await mediaPicker.TakePhotoAsync(new CameraMediaStorageOptions
                {
                     Name = "aaa",
                    Directory="MyAppName",
                    DefaultCamera = CameraDevice.Front,
                    MaxPixelDimension = 1,
                    PercentQuality = 2,
                });
    
    
    
    
           string a=     mediaFile.Path;
    
    
    
    
    
    
             //  var image = GetResizedImage(mediaFile.Source, 990, 560);
               //OnImageUpdate(this, image);
            }
            catch (Exception ex)
            {
    
    
    
    
                string status = ex.Message;
            }
        }
    
  • akashakash USMember ✭✭

    I am getting error on ios when the line

    await media.TakePhotoAsync(o);

    struck in the following code.

    PCL page code:

    XLabs.Platform.Services.Media.CameraMediaStorageOptions o = new XLabs.Platform.Services.Media.CameraMediaStorageOptions() {
    DefaultCamera = CameraDevice.Front,
    SaveMediaOnCapture = false,
    MaxPixelDimension = 400,
    PercentQuality=100
    };

                try
                {
                    XLabs.Platform.Services.Media.MediaFile f = await media.TakePhotoAsync(o);
                    await DisplayAlert("Photo path", f.Path, "cancel");
                }
                catch (Exception ex)
                {
                    await DisplayAlert("Error!", ex.StackTrace, "Cancel");
                }
    

    AppDelegate.cs code:

    var container = new XLabs.Ioc.SimpleContainer();
    container.Register(t => AppleDevice.CurrentDevice);
    container.Register<IGeolocator, Geolocator>();
    Resolver.SetResolver(container.GetResolver());

            global::Xamarin.Forms.Forms.Init();
            LoadApplication(new App());
    

    Error: screenshot attached.

    Also the CameraDevice.Front does not open the front camera, always opens rear camera.

    Please help!

  • KapilDaveKapilDave USMember ✭✭

    Hello All

    I have tried downloaded XLABS (https://github.com/XLabs/Xamarin-Forms-Labs) and try to execute it but its generate error. "System" not found. "Xamarin.Forms" not found. blah blah blah.......

    I have tried to resolved it and finally execute it in Android Simulator, but its crash while launching.

    Please anyone guide me how to use XLABS (https://github.com/XLabs/Xamarin-Forms-Labs) Framework using Visual Studio 2017. Its would be great if anyone suggest, any help document or readymade sample using XLABS to download.

    Thanks in advance for time.

    Waiting for reply

    Regards
    Kapil Dave
    https://in.linkedin.com/in/kapilkumardave

  • GiampaoloGabbaGiampaoloGabba USMember ✭✭✭

    As stated in the github page, xlabs is no longer maintained.

    ##NOTICE: This project is no longer maintained. It may not work with newer versions of Xamarin.Forms.
    https://github.com/XLabs/Xamarin-Forms-Labs

    Still, there is a lot of useful code that you can use for "inspiration" for your needs.

  • KapilDaveKapilDave USMember ✭✭
    edited September 2017

    Hi GiampaoloGabba

    Thanks for your most valuable comment, Please can you guide for minimum version of Xamarin.Forms with I can use with XLABS.

    Please can you guide for any other good MVVM Framework like XLABS.

    Actually I am looking for Same UI across platform using Xamarin.Forms. Please can you guide for this. https://forums.xamarin.com/discussion/38556/same-ui-across-platform-using-xamarin-forms

    Regards
    Kapil Dave

  • GiampaoloGabbaGiampaoloGabba USMember ✭✭✭
    edited September 2017

    Hey KapilDave,
    i'm not involved in the Xlabs project, i used it like... 2 years ago with xamarin forms version 1.3 - 1.4. I dont even remeber the setup (but i followed the github wiki, at that time it was working).
    Honestly i cant help with xlabs :(

    For a pure MVVM Framework i suggest PRISM, FreshMvvM or Exrin. There are a lot informations here in the forums.

    https://github.com/PrismLibrary/Prism
    https://github.com/rid00z/FreshMvvm
    https://github.com/exrin/Exrin

    The authors of the frameworks are active in the forums and very helpful.

    Xamarin forms supports MVVM out of the box, but the frameworks i posted are a great productivity boost (plus they help write better code)!

    Instead of xlabs you can use single plugins for your needs, here a good collection:
    https://github.com/xamarin/XamarinComponents

    Regarding the same UI across all platform i dont know. Xamarin forms has the ability to share most of the code between all platforms, but it uses native controls, so every platform look a bit different.

    You can standardize the most using styles but some differences will be always here: in the end with xamarin forms you are developing native apps using native controls for each OS.
    You can always try to not use standard ui element and design everything custom, but its a lot of work and you'll get a performance hit.

    Otherwise there is html + phonegap. You can achieve the exactly same UI in all platforms but the user experience is poor compared with pure native controls.

  • KapilDaveKapilDave USMember ✭✭

    Hi GiampaoloGabba

    Thanks for your quick help.

    your > @GiampaoloGabba said:

    Hey KapilDave,
    i'm not involved in the Xlabs project, i used it like... 2 years ago with xamarin forms version 1.3 - 1.4. I dont even remeber the setup (but i followed the github wiki, at that time it was working).
    Honestly i cant help with xlabs :(

    For a pure MVVM Framework i suggest PRISM, FreshMvvM or Exrin. There are a lot informations here in the forums.

    https://github.com/PrismLibrary/Prism
    https://github.com/rid00z/FreshMvvm
    https://github.com/exrin/Exrin

    The authors of the frameworks are active in the forums and very helpful.

    Xamarin forms supports MVVM out of the box, but the frameworks i posted are a great productivity boost (plus they help write better code)!

    Instead of xlabs you can use single plugins for your needs, here a good collection:
    https://github.com/xamarin/XamarinComponents

    Regarding the same UI across all platform i dont know. Xamarin forms has the ability to share most of the code between all platforms, but it uses native controls, so every platform look a bit different.

    You can standardize the most using styles but some differences will be always here: in the end with xamarin forms you are developing native apps using native controls for each OS.
    You can always try to not use standard ui element and design everything custom, but its a lot of work and you'll get a performance hit.

    Otherwise there is html + phonegap. You can achieve the exactly same UI in all platforms but the user experience is poor compared with pure native controls.

    Thanks for your quick help

Sign In or Register to comment.