Search code examples
androidkotlinprogressive-web-apps

How to run Android Apps in a computer browser like PWA App?


I would like to compare native with cross-platform technology.

I am writing Kotlin Android Native application and is it possible to easily open it in browser like Chrome and it will work similarly like web application in Flutter? My goal is to write native application with possibility to launch it on 'normal' browser on computer.


Solution

  • Let's start with concepts

    PWA

    Progressive Web Application, as a summary is just a web with special javascript that make it possible the use of device(desktop/mobile) hardware features and/or css files with effects that make the web look like a native application. At the end is just a web application running a on remote server usually with a domain like www.acme.com and accessed through a web browser.

    UI Form elements are just html

    Native mobile application

    It is an application, developed with java or kotlin for android and Objective-C or Swift for ios. Result is an .apk or .ipa containing usually non readable files. This kind of application cannot be opened using a web browser.

    UI Form elements are native components, not html

    Mobile web browser

    In a mobile device we have web browsers like opera, chrome, firefox, safari, etc. As we can notice, this are native applications capable of open any web page through its url. This is the feature provided by mobile devices used in the hybrid applications.

    Hybrid Applications

    A hybrid app is a software application that combines elements of both native apps and web applications where the core of the application is written using web technologies.

    As a extremely summary, this apps are a kind of web browsers opening just one url, without the address bar, which uses new device features to trick the user by displaying a website as if it were a native application

    Usually the web application which is loaded in the hybrid applications are pwas or similar.

    UI Form elements are just html.

    Sources:

    Your question

    How to run Android Apps in a computer browser like PWA App?

    No, you can't. If you app is developed on a native language (android sample)

    Button btnTag = new Button(this);
    btnTag.setLayoutParams(new Layout...));
    btnTag.setText("Button");
    btnTag.setId(some_random_id);
    

    There is no way to open it in a web browser of the same device and much less on another desktop browser.

    Workaround

    If you application is a web with a valid url and you achieve to develop a kind of native app with features of browser (like WebViews for android and wkWebView for ios), but hardcoding the url and hiding the address bar , you will have:

    • a web able to opened directly any desktop browser
    • a native app able to be opened on any mobile phone.

    Keep in mind that the look & feel of your web should be similar to a native application like Material Design for Angular or React. Also should have advanced features like service worker in pwa. Without them, your user will notice that is a web and not a mobile app.

    material design

    Don't reinvent the wheel

    The previous explained workaround is exactly what the following frameworks do but with steroids. The result app is called sometimes "hybrid applications". Basically you just develop html + javascript and the framework will package your code as a standard web, native .apk for android and native .ipa for ios. Here some frameworks:

    • Apache Cordova
    • React Native
    • Flutter
    • Ionic
    • Phone Gap
    • Unity (games)
    • Apache Flex

    cross

    image source: https://www.statista.com/statistics/869224/worldwide-software-developer-working-hours/