android系统手机, 检测网络上的新固件,有固件有更新时,下载更新包, android系统是如何实现这个功能的?

huabinsir 2014-10-31 05:06:44
android系统手机, 检测网络上的新固件,有固件有更新时,下载更新包, android系统是如何实现这个功能的?
...全文
367 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Judy889 2015-10-23
  • 打赏
  • 举报
回复
请问如何判断升级是成功还是失败呢?
袁保康 2014-11-04
  • 打赏
  • 举报
回复
真正的物理上升级过程是不区别版本号的,升级过程中是不会检测升级包中的版本号,只要是一个无误的「升级包」就可以完成「升级」,这一点首先是要明确的。 版本号是人为添加的,为了区别版本的东西。所以至于是什么版本只有上层APK来和服务器区分。 然后再说怎么“升级”,一般情况下自己设备上的系统版本号不是会是完全跟随Android官方的版本号,因为自身的一般会比官方的升级频率高一些,且这样才可以达到自主控制,这一点可以参考「Miui的版本号」。说到这里其实你的APK也可以参考Miui中那个管理升级的APK了。压根都没有想过用系统中的,所以我也就没有关心过系统中有没有自带的。这个东西也没有办法统一,且也不是那么的难,且统一的意义也不大。 APK的功能其实很简单,这个在什么系统中都可以实现,就是一个简单的逻辑,主要是服务器的配合。真正到升级的地方是系统已经完全做好,只需要调用系统的API 把你下载的升级包(zip包)存放的路径告知系统就好了,到这里你APK的工作就完了。 上述中具体的API: http://developer.android.com/reference/android/os/RecoverySystem.html
huabinsir 2014-11-03
  • 打赏
  • 举报
回复
引用 3 楼 kangear 的回复:
做过这个,简单来说两句。 先不拽名词,比较版本是有版本号的,这个没得说的。搭建一个服务器配合本地应用,本地应用向服务器发送本地系统版本号,服务器进行判断,以返回不同的值。如果最新的和本地一样,那么就告知用户已经最新,如果有比更新的,那么就下载更新包。 更新包重点更新的是system分区(类似于PC上C盘),在本地更新的流程完全是标准Android中实现的,会经过严格检查匹配稍有问题就不进行更新。所谓更新就是把下载包 替换 system分区。 具体的更新过程就类似于Windows上使用PE启动一个最小系统,然后把 更新包 的system分区中的内容更新到对应的分区中(这点类似你执行了ghost还原系统到C盘)。 /system分区一般是只读的,一般不去Root然后修改/system目录下的内容,更新都不会出任何的错误,如果root机器,修改了/system分区的内容,那么最后在最小系统更新系统时,检测到与原来的不同,则不予更新。 而这个过程由于是远程下载更新包更新系统,不需要借助其它工具,称之为 OTA(空中下载技术)。
编译android系统及内核时,会产生三个Bin文件(编译bootloader产生uboot.bin, 编译kernel产生boot.img, 编译android系统产生system.img) 请问,所谓的 /system分区是和以上哪个img 文件对应?
huabinsir 2014-11-03
  • 打赏
  • 举报
回复
"搭建一个服务器配合本地应用,本地应用向服务器发送本地系统版本号,服务器进行判断,以返回不同的值。如果最新的和本地一样,那么就告知用户已经最新,如果有比更新的,那么就下载更新包。" <----手机是android系统, android系统本身有这样的功能? (将本地系统版本号发送到服务器) 还是需要另外写APK 或服务,在后台进行? (将本地系统版本号发送到服务器)
袁保康 2014-11-03
  • 打赏
  • 举报
回复
引用 4 楼 huabinsir 的回复:
[quote=引用 3 楼 kangear 的回复:] 做过这个,简单来说两句。 先不拽名词,比较版本是有版本号的,这个没得说的。搭建一个服务器配合本地应用,本地应用向服务器发送本地系统版本号,服务器进行判断,以返回不同的值。如果最新的和本地一样,那么就告知用户已经最新,如果有比更新的,那么就下载更新包。 更新包重点更新的是system分区(类似于PC上C盘),在本地更新的流程完全是标准Android中实现的,会经过严格检查匹配稍有问题就不进行更新。所谓更新就是把下载包 替换 system分区。 具体的更新过程就类似于Windows上使用PE启动一个最小系统,然后把 更新包 的system分区中的内容更新到对应的分区中(这点类似你执行了ghost还原系统到C盘)。 /system分区一般是只读的,一般不去Root然后修改/system目录下的内容,更新都不会出任何的错误,如果root机器,修改了/system分区的内容,那么最后在最小系统更新系统时,检测到与原来的不同,则不予更新。 而这个过程由于是远程下载更新包更新系统,不需要借助其它工具,称之为 OTA(空中下载技术)。
编译android系统及内核时,会产生三个Bin文件(编译bootloader产生uboot.bin, 编译kernel产生boot.img, 编译android系统产生system.img) 请问,所谓的 /system分区是和以上哪个img 文件对应?[/quote] /system分区对应system.img。 boot.img和uboot.bin也会更新,但是频率没有system.img高。 它们的更新频率从高到低如下: system.img -> boot.img -> uboot.bin
袁保康 2014-10-31
  • 打赏
  • 举报
回复
做过这个,简单来说两句。 先不拽名词,比较版本是有版本号的,这个没得说的。搭建一个服务器配合本地应用,本地应用向服务器发送本地系统版本号,服务器进行判断,以返回不同的值。如果最新的和本地一样,那么就告知用户已经最新,如果有比更新的,那么就下载更新包。 更新包重点更新的是system分区(类似于PC上C盘),在本地更新的流程完全是标准Android中实现的,会经过严格检查匹配稍有问题就不进行更新。所谓更新就是把下载包 替换 system分区。 具体的更新过程就类似于Windows上使用PE启动一个最小系统,然后把 更新包 的system分区中的内容更新到对应的分区中(这点类似你执行了ghost还原系统到C盘)。 /system分区一般是只读的,一般不去Root然后修改/system目录下的内容,更新都不会出任何的错误,如果root机器,修改了/system分区的内容,那么最后在最小系统更新系统时,检测到与原来的不同,则不予更新。 而这个过程由于是远程下载更新包更新系统,不需要借助其它工具,称之为 OTA(空中下载技术)。
huabinsir 2014-10-31
  • 打赏
  • 举报
回复
引用 1 楼 qiangv 的回复:
OTA 字数补丁
?
qiangv 2014-10-31
  • 打赏
  • 举报
回复
OTA 字数补丁

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧