如何运行 Android 像PWA App这样的电脑浏览器中的应用程序?

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

我想比较原生和跨平台技术。

我正在编写 Kotlin Android Native 应用程序,是否可以像 Chrome 一样在浏览器中轻松打开它,它的工作方式与 Flutter 中的 Web 应用程序类似? 我的目标是编写本机应用程序,可以在计算机上的 'normal' 浏览器上启动它。

让我们从概念开始

PWA

Progressive Web 应用程序,总而言之,它只是一个带有特殊 java 脚本的网络,可以使用设备(desktop/mobile)硬件特征 and/or css 文件具有使 web 看起来像本机应用程序的效果。最后是 只是一个 Web 应用程序 运行 远程服务器上的一个通常具有 www.acme.com 之类的域并通过 Web 浏览器访问。

UI 表单元素只是 html

本机移动应用程序

这是一个应用程序,使用 java 或 kotlin 为 android 和 Objective-C 或 Swift 为 ios 开发。结果是包含通常不可读文件的 .apk 或 .ipa。这种应用程序无法使用网络浏览器打开

UI 表单元素是原生组件,不是html

移动网络浏览器

在移动设备中,我们有 opera、chrome、firefox、safari 等网络浏览器。正如我们所注意到的,这些是能够通过 url 打开任何网页的本机应用程序.这是混合应用程序中使用的移动设备提供的功能。

混合应用程序

混合应用程序是一种软件应用程序,它结合了本机应用程序和网络应用程序的元素,其中应用程序的核心是使用网络技术编写的。

非常概括地说,这个应用程序是一种网络浏览器,只打开一个url,没有地址栏,它使用新的设备功能欺骗用户 通过将网站显示为本机应用程序

通常在混合应用中加载的web应用是pwas或类似的。

UI 表单元素只是 html.

来源:

你的问题

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

不,你不能。如果您的应用是使用母语开发的 (android sample)

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

无法在同一设备的网络浏览器中打开它,更不用说在其他桌面浏览器中打开它了。

解决方法

如果您的应用程序是一个具有有效 url 的网络,并且您实现了开发一种具有浏览器功能的本机应用程序(例如 WebViews for android and wkWebView 用于 ios),但是硬编码url 并隐藏地址栏,您将拥有:

  • 一个可以直接打开任何桌面浏览器的网站
  • 可以在任何移动设备上打开的本机应用程序 phone。

请记住,您的网站的外观应该类似于 Material 为 Angular or React. Also should have advanced features like service worker in pwa 设计的本机应用程序。没有它们,您的用户会注意到这是一个网络而不是移动应用程序。

不要重新发明轮子

前面解释的解决方法正是以下框架所做的,但使用了类固醇。结果应用程序有时称为“混合应用程序”。基本上,您只需开发 html + java 脚本,框架会将您的代码打包为标准 Web,android 的原生 .apk 和 ios 的原生 .ipa。这里有一些框架:

  • Apache 科尔多瓦
  • React Native
  • 颤动
  • 离子
  • Phone差距
  • Unity(游戏)
  • Apache Flex

图片来源:https://www.statista.com/statistics/869224/worldwide-software-developer-working-hours/