CM12.0 CMUpdater解读

本文介绍了一款为CM定制的OTA更新应用的工作原理和技术细节。该应用通过Volley框架实现客户端与服务器之间的通信,用于检查更新并下载。文章详细解释了UpdateCheckService与DownloadService的服务交互过程及所用数据格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本应用为CM定制OTA更新应用
其中,使用了volley框架来实现网络请求连接操作,将手机端的基础信息以json的形式发送到服务器端,与服务器进行交互,获取更新信息。
在服务器端,服务器会接收客户端发送来的基本信息,包括手机信号,手机IMEI,incremental号,服务器会检测特定机型,特定的IMEI是否有更新,如果有,则返回更新信息;如果没有,则返回错误。
在客户端,接收到服务器的更新信息后,会对比本系统的信息,查看是否需要更新,如果需要,则下载,向服务器端发送本机的incremental与目标incremental,给服务器,在服务器端检测是否有匹配的增量更新包,如果存在,则返回增量更新包的download URL,如果不存在,则直接返回错误。
在客户端,接收到服务器端返回的信息,如果增量包的信息存在,直接使用下载增量包,如果不存在,则直接使用第一次检测,服务器返回的全包的download URL,使用系统服务DownloadManager来下载更新包。
注意:本应用不支持断点续传。

下面是应用的细节:
两个服务与服务其交互
UpdateCheckService.java 此服务用来检测更新
直接检测时要发送的数据:
to server: JSONObject{ (method:get_all_builds), (params( (device:xxx), (imei:xxx)), (source_incremental:xxx))) }
get server: JSONObject( from JSONAray (result:JSONObject))(由UpdateInfo数据构成):
UpdateInfo(filename, url, changes, md5sum, api_level, timestamp, channel, incremental)关于更新的情况
客户端从服务器中解读出的数据:更新信息的条数(updates.size()),新的更新次数(EXTRA_NEW_UPDATE_COUNT)
已经更新的次数(EXTRA_NEW_UPDATE_COUNT)

当设置更新形式的时候,发送的数据(此处可用于测试):有更新方式的区别
to server: JSONObject{ (method:get_all_builds), (params( (device:xxx), (channels :xxx)), (source_incremental:xxx))) }

DownloadService.java 此服务用来获取下载链接
与服务器交互: URL: http://123.56.87.121/api.ashx?action=download
to server: JSONObject{(device:xxx), (imei:xxx) , (source_incremental:xxx), (target_incremental:xxx) }
get server: JSONObject(包含UpdteInfo的数据);
其中 包含 UpdateInfo(filename, download_url, me5sum, mInfo, date_created_unix, update_type, incremental); 下载增量包
或 null, 下载全量包
下载服务直接利用系统DownloadManager,从download_url下载更新包

FetchChangeLogTask.java中,对更新的UpdateInfo,会检测其changeLog,如果没有,会与服务器进行一次交互
从服务器获取信息,生产changeLog
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值