使用OTA更新Android应用程序

6
我有自己的应用商店,其中托管了所有的安卓应用程序。一些应用已经被修改过了。那么我该如何使用OTA向客户/用户发送更新呢?这样,客户就能知道有新的更新并下载它。
3个回答

3
一个月前在HN上发现了一个有趣的解决方案,与直接更新客户端应用程序而不需要任何用户交互相关。由于您拥有自己的应用商店,因此不应遇到HN线程中列出的任何问题。

该解决方案从网站中提取工作片段:

...截取对startActivityForResult、getResources和一些其他函数的所有调用。当您尝试启动活动时,Evolve会生成一个虚拟类并将其超类设置为您想要启动的活动。

...动态生成新类的字节码

...然后更改意图以启动适当的类

这仍处于alpha模式,因此需要您付出一些努力进行集成。

解决方案链接 - http://blog.vivekpanyam.com/evolve-seamlessly-deploy-android-apps-to-users

假设这是您期望的内容,希望对您有所帮助!


我认为这真的很棒!不幸的是,我们不能在Google Play商店应用中使用它,而且实现似乎要下载整个更新的apk。我想知道是否可能只下载一堆.java类并动态编译它们,或者将新代码的字节流传输到旧的.apk文件中位于旧的.java文件中(尽管我担心这可能需要重新编译apk)。 - Migisha

1

1.创建一个Web服务,您的应用程序可以在每次启动应用程序时轮询该服务,或者基于某个时间限制来检查是否存在新版本。

2.此Web服务应返回托管在服务器上的最新apk文件版本以及具有新版本的应用程序文件的URI。

3.当您的应用程序从Web服务获得响应时,它将解析JSON并将您的应用程序版本与服务器上可用的最新版本进行比较。

4.如果您的应用程序版本低于最新版本,则会提示用户开始下载过程。

5.新应用程序的下载由下载管理器处理。下载管理器将使用广播接收器通知您的应用程序下载完成情况。

6.在完成应用程序文件的最新版本后,您可以启动安装该文件的活动。此时,用户需要确认安装。请参阅https://code.google.com/p/auto-update-apk-client/


我按照你提到的方法做了,但在这种情况下,客户端应用程序每次启动时都会检查是否有更新可用。我想通过使用OTA(空中下载)仅在更新可用时通知客户端。 - user2833700
这是一个简单的逻辑。如果有更新,请向服务器发送一个布尔值。 - Sree

0

如果您拥有自己的应用商店,那么您必须在相关设备上运行客户端应用程序,以允许用户从该应用商店安装/更新应用程序。

作为客户端的一部分,您可以拥有一个服务,枚举设备上安装的应用程序,并检查您的商店是否有可用的更新。如果是,则向用户显示提示,让其访问商店以更新相应的应用程序-或在情况下执行其他适当的操作。

您还可以注册此服务以接收网络连接事件的广播,以便如果没有互联网连接,服务将在连接再次可用时接收通知。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接