Fix for UITest crashing after Xamarin Studio update to 6.1 (build 5441) fails with SetUp : System.InvalidOperationException

When running UITest locally after updating Xamarin Studio to to 6.1 (build 5441) and to Xcode 8, UITest fails with

“SetUp : System.InvalidOperationException : Sequence contains no matching element … at System.Linq.Enumerable.First[TSource] … at Xamarin.UITest.iOS.Instruments.GetAutomationTemplatePath ()”

UITest crashing with XS 6.1 (build 5441)

Next time I will need to read the release notes more diligently… 😉

There are two options to have this problem fixed:

“– Xcode 8 removes the UI Automation API, causing “SetUp : System.InvalidOperationException : Sequence contains no matching element … at System.Linq.Enumerable.First[TSource] … at Xamarin.UITest.iOS.Instruments.GetAutomationTemplatePath ()” when attempting to use UITest locally.

  • Candidate fix: Update to the Xamarin.UITest 2.0.0 Beta prerelease, which is based on Calabash 0.20 and includes a new API that uses XCUITest rather than UI Automation.
  • Alternate temporary workaround: Keep using Xcode 7, or just keep Xcode 7 installed in the default location and unpack Xcode 8 side-by-side to a custom location.”

After updating to Xamarin.UITest 2.0.0 Beta  ALL IS WELL..!!!

Update to Xamarin.UITest 2.0.0 Beta

 

Link to a  sample XF project with a fix

Xamarin Dev Days – Jacksonville

Xamarin Dev Days JAX was on September 12, 2015 and it truly was “more than just a hackathon” and it was a great success. Xamarin super team (Krystin Stutesman and John Davis) did great job presenting, teaching, answering tough questions and helping one on one with setup and labs, TekSystems made sure we had a plenty of food for breakfast and lunch and I had a great time presenting about MVVM + Xamarin Forms as well as helping out with organizing our event.

Big thanks go to Dr Roy Swapnoneel and School of Computing University of North Florida for allowing us to use their auditorium.

Xam Days JAX

Shortly after the breakfast, Krystin Stutesman, the newest Xamarin Evangelist   kicked off Xamarin Dev Day with two sessions: “Developing iOS & Android Apps in C#” and “Introduction to Xamarin.Forms, Insights, and Test Cloud”, she did an excellent job.

After Krystin, I presented “Intro to MVVM in 30 min”

Intro to MVVM

Right before lunch W Brian Leonard, from Oracle presented session about Oracle Mobile Cloud Service titled: “Enterprise Mobile Success with Xamarin and Oracle”

W Brian Leonard, Oracle

Lunch was provided by TekSystems and then we got into the labs, with Krystin and  John Davis helping with one on one questions about hands on labs and other topics related to Xamarin development.

Xamarin hands on labs

Congratulations to our raffle winners and thanks to our other sponsors: TekSystems, Telerik, Nokia and Pluralsight who provided some cool raffle prizes

 

 

Publishing Xamarin x-platform app resources

Apple, Google and Microsoft developer portals to submit your app

Before submitting

The review process varies for each store, some very strict (iOS) and some very loose (Android). To avoid the app rejection, make sure to review your app with that in mind.

Tips

Running localhost REST Web API on MacBook Pro with VMWare + Xamarin

If you developing REST Web API services for mobile x-platform apps sometimes you need to locally debug and test using emulators (iPhone or Android) running on Mac before publishing REST to the server…
Or if you’re need to test your app on a plane ride without connection to the published service… etc… you’re came to the right place.

Developer Setup

1) MacBook Pro (OS X Yosemite v 10.10.4)
2) Windows 8.1 running in VMWare Fusion (v 7.1.2)
3) Visual Studio 2013 running in the Windows 8.1
4) Xamarin Studio (v 5.9.4)

Follow these 7 steps and you’ll be able to do this

1) Change Network Adapter Setting on the VMWare’s instance of Windows to “Bridged Networking” (Wi-Fi will allow actual devices iPhone/iPad or Android to run websites and REST WebAPI on your Windows)

2) Set up IIS in the VMWare’s Windows environment (Windows 8.1 in this example)

a) Open “Control Panel”

Screen Shot 2015-07-23 at 1.46.01 PM

b) Select “Programs and Features” then select “Turn Windows features on or off”

Screen Shot 2015-07-23 at 1.46.26 PM

c) Select “Internet Infromation Services” and make sure WWW Service has
“.NET 4.5” selected as well as “Security/Window Authentication” is selectedScreen Shot 2015-07-23 at 10.57.32 AM

 

3) Setup “Windows Firewall” to allow incoming HTTP Requests
(Control Panel/Windows Firewall/Allow an app or feature through Windows Firewall)

4) Run “ipconfig” in Command Prompt to find out the VM’s IP address (in my case 10.0.1.13)

Screen Shot 2015-07-23 at 8.05.56 PM

5) At this point you should run the IIS from Safari browser (or any other device in your network i.e. iPhone/iPad etc), just type your IP address (in my case 10.0.1.13)

Screen Shot 2015-07-23 at 8.16.16 PM

 

6) Setup Visual Studio with your WebAPI project to run in local IIS (here is a link to a sample code for WebApplication2)

a) In Visual Studio select your project properties/Web and select “Apply server settings to all users (store in project file) and select “Local IIS” from the dropdown

Screen Shot 2015-07-23 at 1.43.56 PM

b) compile and run (in Windows you will access it in http://localhost/WebApplication2 from Mac http://10.0.1.13/WebApplication2)

Screen Shot 2015-07-23 at 1.52.28 PM

 

7) VOILA..! now you can access your WebAPI Application running locally on your Mac OS, inside VMWare Windows. Access it from other emulators on your Mac, Safari or other browsers and mobile devices on your local wi-fi network

Here is a link to a sample TestWebAPI Xamarin Forms application to test any REST WebAPI rest point

Reasons to choose Xamarin to develop your next cross platform mobile app

  1. Xamarin is a world-class development environment for cross-platform mobile apps. Using Xamarin with Visual Studio or Xamarin Studio you are getting all the advantages of modern and powerful IDEs, which helps to boost a development process and simplify development and support process.
  1. Xamarin delivers high performance compiled code with full access to all the native APIs so you can create native apps with device-specific experiences. Anything you can do in Objective-C or Java, can be done in C# with Xamarin
  1. Using Xamarin technology allows to keep Native UI across all three platforms, therefor preserving Native Performance while enjoying full API coverage, shared codebase and application logic. It also allows for re-using skills, teams, tools and most importantly – the CODE! Needless to say, it saves time and resources.
  1. Xamarin is integrated with SDKs of all of the different operating systems. You have the ability to utilize native controls that exist for the iPad, Android or Windows but only coded once.Linked files, conditional compilation, and portable class libraries make it possible for developers to share the code. The ability to reuse 60-90% of the code cuts the development time in half. That obviously saves time and money to both customers and service providing companies on the app’s multi-channel distribution. Additionally, a single codebase dramatically reduces costs for support and new features introduction.
  1. Xamarin supports iBeacons, Google Glass devices, Android Wear, Apple Watch and Microsoft Band. That is a great opportunity for developers to innovate with Xamarin.
  1. Windows Phone and Windows 8 development is natively supported by Visual Studio, and Xamarin is not involved here. Code can be shared between iOS, Android and Windows using Portable Class Libraries and proper application architecture.
  1. Xamarin TestCloud  allows to automatically test iOS and Android apps immediately, on hundreds of devices, offering continuous integration, beautiful reports, test for fragmentation, and object-based UI testing.
  1. Xamarin allows building applications on C# and here are some reasons why C# is good for that: it is a simple, modern, general-purpose, object-oriented programming language. You can leverage all the power of strong typed language, lambdas, LINQ, async programming:
  • Language integrated queries make it even more powerful. LINQ introduces standard, easily-learned patterns for querying and updating data, and the technology can be extended to support potentially any kind of data store. Visual Studio includes LINQ provider assemblies that enable the use of LINQ with .NET Framework collections, SQL Server databases, ADO.NETDatasets, and XML documents.
  • The most powerful way to do parallel work is using Microsoft Task Parallel Library (TPL) and Xamarin supports it. The purpose of the TPL is to make developers more productive by simplifying the process of adding parallelism and concurrency to applications. Parallelism is crucial for responsive mobile application user interfaces. Unfortunately, existing approaches with callbacks and synchronization make the code less readable, complicated and confusing. Conversely, with the TPL you can focus on business logic and let the framework deal with an asynchronous code.  In addition, the TPL handles partitioning of work, scheduling of threads on the ThreadPool, cancellation support, state management, and other low-level details.
  • The C# language is great to develop async code in a nice and clean way.

 

  1. Today, nearly 500,000 developers are already using Xamarin to create amazing apps. And here are the companies that are taking advantage of Xamarin today:
  1. What experts are saying about Xamarin:

“We knew we had to cover a large demographic of mobile users—to do this we decided to adopt the Xamarin platform. Xamarin is the only platform that gives us what we needed. If you want to build high-quality native apps, then Xamarin is the only platform you should use.”

Gordon Langford

Mobile Director, Screenmedia

 

“As a QA Engineer, I am really enjoying Xamarin Test Cloud because it offers me a broad range of Android and iOS devices. It gives me the ability to have more test coverage and to discover issues sooner. And what’s particularly helpful is that Xamarin offers exceptional service and support that I can depend on every day.”

Derrick Lam

QA Engineer, Flipboard

 

“Xamarin’s architectural approach provides completely native UIs with better performance than other cross-platform techniques… Xamarin uses multifaceted technology built by a cohesive team with a solid long-term track record.”

Gartner

Magic Quadrant for Mobile Application Development Platforms

 

“The broad collaboration between Microsoft and Xamarin is targeted at supporting developers interested in extending their applications across multiple devices. With Xamarin, developers combine all of the productivity benefits of C#, Visual Studio 2013 and Windows Azure with the flexibility to quickly build for multiple device targets.”

Somasegar

Corporate Vice President, Microsoft Corporation

 

Using Xamarin, we can write apps entirely in C#, sharing the same code on iOS, Android, Windows and Mac. Reuse favorite .NET libraries, and still easily incorporate platform-specific libraries and frameworks when we need to. It allows to produce fast, modern, reliable user-friendly apps faster and more cost effectively.