At this point, we are well in to understanding Xamarin and Xamarin Forms. On its face, it seems as though these technologies are going to solve a large swathe of issues that we have for getting enterprise level apps to our customers. However, I am green when it comes to app stores and the rules etc. for dealing with app stores. The main issue that I have in my mind is how to manage the deployment of multiple configurations (custom DLLs) for the one application.
Ultimately, we'd like to have one app store app for each platform (Android, iOS, UWP). This would require that custom assemblies be served up over the web after installing the application. I.e. once the shell app has been installed on the device, the shell would download further content such as images, data and custom assemblies (custom assemblies being the most important). There doesn't seem to be a technical hurdle to achieving this on iOS and Android. In this thread, I provide sample code on how assemblies can be loaded at runtime on iOS, and Android: https://forums.xamarin.com/discussion/comment/252571/#Comment_252571 . Unfortunately, the same cannot be done on UWP because UWP doesn't allow for assemblies being loaded from outside the AppX package, and it seems that Microsoft doesn't have any plans for allowing this in future.
If you clone this repo, you can see how assemblies can be loaded dynamically at runtime:
When I got this right, my first thought was that this is fantastic. If we can dynamically load assemblies at runtime, we do not have to have multiple app store instances, which means that we don't have to be subject to the whims of the various apps stores. We can just deploy shell apps in to each app store, and from that point forward, the shell app can dynamically down the content that is needed for each of our customers. This really seems like a necessity because maintaining multiple app store deployments would be a nightmare from a maintenance point of view - especially if we have to wait for changes to the apps to be accepted. But, after talking to a friend about this, I realised that this might actually be a problem.
Will iPhones, iPads, and Android devices allow for assemblies being loaded dynamically? Have I perhaps stumbled on a feature that is supported by side loaded apps, but not supported on Store deployed apps? Could Apple, or Google potentially disable this capability in future?
If there's any risk of the above, how are other people dealing with the issues I've mentioned? Do you have more than 10 customers with different custom assemblies? Are you manually managing each customer's deployment through separate app store apps? How are you finding this? Any tips on how to automate this? Do the various app stores take long to approve a change?