我可以在 android apk 中动态下载 Web 应用程序客户端并启动吗?

Posted

技术标签:

【中文标题】我可以在 android apk 中动态下载 Web 应用程序客户端并启动吗?【英文标题】:Can I download Web application client dynamically inside android apk and launch? 【发布时间】:2019-12-16 16:08:12 【问题描述】:

是否有任何程序或机制可以让我在我的 android apk(由cordova 转换的网络应用程序)中即时下载完整的网络应用程序并在网络视图中显示它?

我有一个重型 Web 应用程序客户端(Angularjs 应用程序),它使用 cordova 转换为 android 应用程序(apk)。每个 Web 应用程序客户端版本都有一个安装在客户位置的服务器中的相应服务器版本。这意味着,如果我的 Web 应用程序客户端版本是 1.2.3.4,它与服务器版本 1.2.3.4 兼容

假设有 1000 个版本的服务器,有 1000 个客户(是的,服务器发布也发生在这么多版本中)。

此 Web 应用程序客户端每两周发布一次,并带有更新版本。现在,我无法将所有 1000 个版本都保留在 android 应用程序中,因为应用程序的大小将失控,并且在生产中发布会一团糟。

假设我有一个机制,我可以通过它找出客户的服务器版本。

我可以根据客户的服务器版本从我们自己的一台服务器下载 Web 应用程序客户端包,并将其作为 Cordova 应用程序加载到移动设备中吗?

我们曾尝试容纳 10 个 Web 应用程序客户端,并尝试通过 Cordova 将它们转换为应用程序,但规模呈指数级增长,我们甚至没有为许多客户提供服务。这是一个瓶颈

【问题讨论】:

【参考方案1】:

如果您使用 Cordova 文件插件,您可以实现所需的功能。主要技巧是不是从 android_asset/www/app 加载文件,而是从手机存储的位置加载文件,使用 cdvfile 协议(指向手机 SD 卡上的文件位置)。

    当您的应用程序第一次启动时,您将转到您的服务器并保存最新的应用程序 版本到手机存储,然后从那里启动您的应用程序逻辑代码。 当您检查更新时,您会将新文件下载到您的应用程序位置,下次再下载 应用程序将使用这些文件。

【讨论】:

其实当你说当你的应用程序第一次启动时,你会去你的服务器并将最新的应用程序版本保存到手机存储中。这正是我的问题。如何获取/下载包含内容的完整 Web 应用程序目录到 SD 卡或移动设备中的某个位置?你能详细说明一下吗?非常感谢您提出的方法。

以上是关于我可以在 android apk 中动态下载 Web 应用程序客户端并启动吗?的主要内容,如果未能解决你的问题,请参考以下文章

Android动态方式破解apk前奏篇(Eclipse动态调试smail源码)

如何在Android上安装apk软件

Android 7.0 下载APK后自动安装

Android7.0下载Apk自动安装

如何在 Android 设备中获取文件 *.apk 位置

android怎么获取刚刚下载安装的APK的APP名字和图片