• <small id='bU7Vq'></small><noframes id='bU7Vq'>

        <bdo id='bU7Vq'></bdo><ul id='bU7Vq'></ul>
      <i id='bU7Vq'><tr id='bU7Vq'><dt id='bU7Vq'><q id='bU7Vq'><span id='bU7Vq'><b id='bU7Vq'><form id='bU7Vq'><ins id='bU7Vq'></ins><ul id='bU7Vq'></ul><sub id='bU7Vq'></sub></form><legend id='bU7Vq'></legend><bdo id='bU7Vq'><pre id='bU7Vq'><center id='bU7Vq'></center></pre></bdo></b><th id='bU7Vq'></th></span></q></dt></tr></i><div id='bU7Vq'><tfoot id='bU7Vq'></tfoot><dl id='bU7Vq'><fieldset id='bU7Vq'></fieldset></dl></div>

      <legend id='bU7Vq'><style id='bU7Vq'><dir id='bU7Vq'><q id='bU7Vq'></q></dir></style></legend>
        <tfoot id='bU7Vq'></tfoot>

        (私有)Android 应用程序的自动更新

        时间:2023-11-09
        • <i id='PgYI9'><tr id='PgYI9'><dt id='PgYI9'><q id='PgYI9'><span id='PgYI9'><b id='PgYI9'><form id='PgYI9'><ins id='PgYI9'></ins><ul id='PgYI9'></ul><sub id='PgYI9'></sub></form><legend id='PgYI9'></legend><bdo id='PgYI9'><pre id='PgYI9'><center id='PgYI9'></center></pre></bdo></b><th id='PgYI9'></th></span></q></dt></tr></i><div id='PgYI9'><tfoot id='PgYI9'></tfoot><dl id='PgYI9'><fieldset id='PgYI9'></fieldset></dl></div>
          1. <tfoot id='PgYI9'></tfoot>

                <bdo id='PgYI9'></bdo><ul id='PgYI9'></ul>

                <small id='PgYI9'></small><noframes id='PgYI9'>

                <legend id='PgYI9'><style id='PgYI9'><dir id='PgYI9'><q id='PgYI9'></q></dir></style></legend>
                  <tbody id='PgYI9'></tbody>
                • 本文介绍了(私有)Android 应用程序的自动更新的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我正在开发一个非公开的 Android 应用程序,即该应用程序不会在全球 Android 市场上提供.该应用程序将安装在有限数量的客户端上,例如通过使用 apk 文件.如何在此应用中启用自动更新功能?

                  I'm developing a non-public Android app, i.e. the app won't be available in the global Android Market. The app will be installed on a limited number of clients, e.g. by using an apk file. How can I enable an auto-update functionality in this app?

                  我看到了不同的潜在选择(我不知道这些在技术上是否难以实现,甚至无法实现,或者是否有任何可以重复使用的现有功能):

                  I see different potential options (I do not know if those are technically hard or even impossible to implement or if there are any existing functionalities that can be reused):

                  • 在每次启动时,应用都会测试是否存在新版本(通过请求服务器),如果存在,则下载新的 apk 并将其自身替换为新版本.
                  • 使用(或开发?)一个独立的应用或服务来承担更新检查和替换过程.
                  • 使用(或开发?)具有自动更新选项的私人市场应用.此选项类似于第二个选项,但更通用:市场应用程序将连接到存储库,即它将处理任意数量的(私有)应用程序.

                  我更喜欢选项一,因为自动更新功能包含在需要较少开发工作的应用程序中.

                  I would prefer option one since the auto-update functionality is included in the app which needs less development efforts.

                  推荐答案

                  janjonas,在我工作的公司中,我们在使用 Windows Mobile 6.x 时遇到了类似的问题,我们使用的解决方案几乎与 EboMike 指出的相同:

                  janjonas, in the company I work we had a similar problem with Windows Mobile 6.x, and we use pretty much the same solution pointed by EboMike:

                  主应用程序根据 WebService 检查它是否已更新.它接收当前版本 &下载新版本的 URL(如有必要).然后主应用程序启动 Updater 应用程序,传递 URL,然后退出.

                  The main app check if it's updated, against a WebService. It receives the current version & the URL from where download the new version, if necessary. The main app then start the Updater app, passing the URL, and quit.

                  更新程序通过 HTTP 下载新程序,向用户显示下载的百分比.用户可以随时以受控方式取消下载,更新程序可以注册此取消.

                  The Updater do the download of the new program, via HTTP, showing to the user the % downloaded. The user can cancel the download anytime, in a controlled way, and the Updater can registry this cancellation.

                  由于下载了新应用,更新程序运行新应用并退出.

                  Since the new app is downloaded, the Updater run the new app, and quit.

                  这篇关于(私有)Android 应用程序的自动更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:如何在 Android 上以“提供反馈"模式启动 Google Play 意图? 下一篇:违反 Google Play 开发者政策的警告:需要采取措施

                  相关文章

                      <bdo id='wRSpC'></bdo><ul id='wRSpC'></ul>
                  1. <tfoot id='wRSpC'></tfoot>

                    <i id='wRSpC'><tr id='wRSpC'><dt id='wRSpC'><q id='wRSpC'><span id='wRSpC'><b id='wRSpC'><form id='wRSpC'><ins id='wRSpC'></ins><ul id='wRSpC'></ul><sub id='wRSpC'></sub></form><legend id='wRSpC'></legend><bdo id='wRSpC'><pre id='wRSpC'><center id='wRSpC'></center></pre></bdo></b><th id='wRSpC'></th></span></q></dt></tr></i><div id='wRSpC'><tfoot id='wRSpC'></tfoot><dl id='wRSpC'><fieldset id='wRSpC'></fieldset></dl></div>

                    <small id='wRSpC'></small><noframes id='wRSpC'>

                    <legend id='wRSpC'><style id='wRSpC'><dir id='wRSpC'><q id='wRSpC'></q></dir></style></legend>