Android App就地更新

时间:2017-02-01 11:02:54

标签: java android react-native

我有一个应用程序部署到世界上一些非常偏远的数据连接饥饿区域,特别是卫生工作者。

这些人拥有最少的数据连接,应用程序需要定期更新,以提供增强的功能和关键错误修正。

我们遇到的问题是该应用的APK是5.7mb,只会变得更大。这意味着每次用户需要更新应用程序时,他们都必须下载5.7 meg apk进行更新。如果我们在一周内推出多个版本,它可能会占用他们数据计划的大部分时间以及他们必须等待下载和安装的时间。

有更好的方法吗?一些方法来修补与完全替换主机设备上的应用程序,以便我们部署较小的补丁?

我试过寻找“主机”应用程序的例子,其中实际的应用程序只是一个可下载的库集的shell,有点像插件系统,但找不到任何示例。

是否有任何资源或标准方法来实现这一目标?

另外值得注意的是这是一个本机反应应用程序,我们已经运行了proguard并基于架构拆分apks以减小apk大小。

1 个答案:

答案 0 :(得分:0)

你有没有机会检查CodePush?它基本上允许您在不使用户下载新版本的apk的情况下,仅为您的应用程序的javascript部分(捆绑)推送更新,而不会让用户下载新版本的apk。

如果您向项目添加新的本机代码,您仍然需要构建和发布新的apk。

工作原理是,当您更新应用中的javascript代码时,您会推送新版本。当用户运行应用程序时,CodePush会检查是否有新版本可用,如果有,请立即更新,如果您将上述版本标记为 function apache_mod_loaded($mod, $default = false) { global $is_apache; if ( !$is_apache ) return false; if ( function_exists( 'apache_get_modules' ) ) { $mods = apache_get_modules(); if ( in_array($mod, $mods) ) return true; } elseif ( function_exists( 'phpinfo' ) && false === strpos( ini_get( 'disable_functions' ), 'phpinfo' ) ) { ob_start(); phpinfo(8); $phpinfo = ob_get_clean(); if ( false !== strpos($phpinfo, $mod) ) return true; } return $default; } ,请重新启动应用程序,或者在下次运行时使用新下载的捆绑版本。

编辑:CodePush的react-native库是here on github