做过这个,简单来说两句。
先不拽名词,比较版本是有版本号的,这个没得说的。搭建一个服务器配合本地应用,本地应用向服务器发送本地系统版本号,服务器进行判断,以返回不同的值。如果最新的和本地一样,那么就告知用户已经最新,如果有比更新的,那么就下载更新包。更新包重点更新的是system分区(类似于PC上C盘),在本地更新的流程完全是标准Android中实现的,会经过严格检查匹配稍有问题就不进行更新。所谓更新就是把下载包 替换 system分区。具体的更新过程就类似于Windows上使用PE启动一个最小系统,然后把 更新包 的system分区中的内容更新到对应的分区中(这点类似你执行了ghost还原系统到C盘)。/system分区一般是只读的,一般不去Root然后修改/system目录下的内容,更新都不会出任何的错误,如果root机器,修改了/system分区的内容,那么最后在最小系统更新系统时,检测到与原来的不同,则不予更新。而这个过程由于是远程下载更新包更新系统,不需要借助其它工具,称之为 OTA(空中下载技术)。
先不拽名词,比较版本是有版本号的,这个没得说的。搭建一个服务器配合本地应用,本地应用向服务器发送本地系统版本号,服务器进行判断,以返回不同的值。如果最新的和本地一样,那么就告知用户已经最新,如果有比更新的,那么就下载更新包。更新包重点更新的是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 文件对应?
编译android系统及内核时,会产生三个Bin文件(编译bootloader产生uboot.bin, 编译kernel产生boot.img, 编译android系统产生system.img)请问,所谓的 /system分区是和以上哪个img 文件对应?/system分区对应system.img。 boot.img和uboot.bin也会更新,但是频率没有system.img高。 它们的更新频率从高到低如下:
system.img -> boot.img -> uboot.bin
还是需要另外写APK 或服务,在后台进行? (将本地系统版本号发送到服务器)
http://developer.android.com/reference/android/os/RecoverySystem.html