My trip from UWP development to cross-platform development for a small audio application [Part 1]

Delaire Damien
3 min readOct 31, 2019

In this article I will go over my journey of building an application that runs on multiple platforms. My original application was a classic UWP application and then I decided that I wanted my application to work on other devices.

This article will be broken into 4 parts:

My current setup is that I have one Windows 10 laptop, my phone is an iPhone, my wife has an Android phone and a MacBook Air. I also own a few Windows Phone (what are those???) but they wont be part of our story.

My Story

I built an audio application that only runs on UWP (stupid me) and I am the only one in the house that has a Windows laptop (of course). My wife wants to use my audio app (she is too nice with me) and I would like to use my app on my iPhone. I don’t need to have a cross platform experience (start somewhere and continue on another device) I just want my app to work, simple right?

So basically I would need to build a few additional applications:

  1. Android application
  2. iOS application
  3. macOS application
  4. Web Application
  5. WPF application for non windows 10 users?

I already have a full time job, so no I wont building 4 or 5 different applications (or at least not in a timely matter). Also, I don’t own a MacBook so I am going to have a hard time building an iOS or macOS application.

My UWP Application

Originally my UWP application was one big fat project. However because I want to be able to reuse a much code as possible in my other project I am going to need to split my app so that I can reuse as much code as possible.

Here was my initial app structure:

fat

After a bit of heavy lifting I arrived to a new application structure that was more shareable across different platforms:

  • MyAudio.Common is a library that contained everything that does not need to executed on the UWP framework.
  • Audio.Shared shared project that contained all of my UWP specific application code that could be shared.
Slim

MyAudio.Common is a .NetStandard 2.0 library that holds all of my API calls, my app Models, Helpers , Services, and ViewModels for my items that could be shared and that are not specific to the UWP framework.

I created a Audio.Shared shared project that contained all of my UWP specific application code because I wanted to gain some time when trying out UNO.

The Experiment

Now that we have a correct application setup we can start trying to go cross-platform. I will not try to build a Home view, with a HomeViewModel and some Services that I need to for my application on Web Assembly , Uno and Xamarin Froms. To not go overboard I will time box each development to 4 hours max.

The other articles:

Sign up to discover human stories that deepen your understanding of the world.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Delaire Damien
Delaire Damien

Written by Delaire Damien

Technical Lead on (Windows & Smart TV apps) @Dailymotion, Windows Mobile/ Xbox/ Desktop Lover. Entrepreneur in spirit, I love working on side projects

No responses yet

Write a response