simulatorhttpserverwebos

LG WebOS cannot run web app which requires an http server on Simulator


I've got an idea to run Flutter app on WebOS. I've downloaded the latest WebOS sdk and a Simulator (as they already deprecated the Emulator) I've created a simple Hello World app that simply uses HTML and it ran just fine on the Simulator. Then I decided to add a logic for running Flutter app to it. So now the compiled app structure is like this enter image description here

The content of the index.html is as follows

<!DOCTYPE html>
<html>

<head>
  <base href="/">

  <meta charset="UTF-8">
  <meta content="IE=Edge" http-equiv="X-UA-Compatible">
  <meta name="description" content="A new Flutter project.">

  <!-- iOS meta tags & icons -->
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
  <meta name="apple-mobile-web-app-title" content="flutter_iz_tube_tv">
  <link rel="apple-touch-icon" href="icons/Icon-192.png">

  <!-- Favicon -->
  <link rel="icon" type="image/png" href="favicon.png" />

  <title>IZ Tube TV</title>
  <link rel="manifest" href="manifest.json">

  <script>
    // The value below is injected by flutter build, do not touch.
    var serviceWorkerVersion = '3924677883';
  </script>
  <script src="flutter.js" defer></script>
  <script src="webOSTVjs-1.2.4/webOSTV.js" charset="utf-8"></script>
  <script src="webOSTVjs-1.2.4/webOSTV-dev.js" charset="utf-8"></script>
</head>

<body>
  <script>
    window.addEventListener('load', function (ev) {
      // Download main.dart.js
      _flutter.loader.loadEntrypoint({
        serviceWorker: {
          serviceWorkerVersion: serviceWorkerVersion,
        }
      }).then(function (engineInitializer) {
        return engineInitializer.initializeEngine();
      }).then(function (appRunner) {
        return appRunner.runApp();
      });
    });
  </script>
</body>

</html>

And here is the content of appinfo.json

{
  "id": "com.example",
  "version": "0.0.1",
  "vendor": "Test TV",
  "type": "web",
  "main": "index.html",
  "title": "tv_app",
  "icon": "icon.png",
  "largeIcon": "largeIcon.png"
}

This app runs fine in browser if I use a web server. But the problem starts when I load it on a WebOS Simulator using App button on RCU.

enter image description here

I just cannot run. And the problem is, obviously, because it uses a simple file: protocol instead of running an http server. I've googled a lot and haven't found a solution to this. Does anyone know how to run an app like this in simulator?


Solution

  • I've found out it's impossible to do in a Simulator. But there is a workaround. We can add a redirection to the "head" part of index.html file like this (https://webostv.developer.lge.com/develop/app-developer-guide/hosted-web-app/):

    <meta http-equiv="refresh" content="0;url=http://0.0.0.0:8080/index.html">
    

    Thus effectively redirecting it to the remote app. And WebOS can display a Flutter app