Android-EDLA 谷歌安全补丁、GMS包以及mainline包更新
Android-EDLA 谷歌安全补丁、GMS包以及mainline包更新
文章目录
- Android-EDLA 谷歌安全补丁、GMS包以及mainline包更新
- 1.谷歌安全补丁更新
- 1.1 下载安全补丁
- 1.2 打入安全补丁
- 1.3 STS测试安全补丁
- 1.3.1 测试方法
- 1.3.2 Fail项处理
- 2.GMS包更新
- 2.1 下载GMS包
- 2.2 更新GMS包
- 3.Mainline包更新
- 3.1下载Mainline包
- 3.2 Mainline包补丁
- 补丁、谷歌安全补丁、GMS、mainline包的区别
1.谷歌安全补丁更新
按照google要求,安全补丁更新要满足不超过当前日期90天,若10月份送测,那安全补丁必须至少已经合入到了7月份,因此每次EDLA送测之前都应该要计算好时间更新安全补丁。
1.1 下载安全补丁
谷歌官方安全补丁的下载地址为:https://drive.google.com/drive/folders/1in1XSijJkSMOEI6uWRk3EQ7xY6kx7sEw?resourcekey=0-Gy53Mh4PbiOBrTUClcwEkA
如上图是26年6月份的安全补丁,需要下载框框中的ZIP文件。
内容如上,根据项目情况选择具体的安全补丁包,比如是Android 16的项目就选择android-16.0.0_r1。
1.2 打入安全补丁
打入安全补丁主要有以下几步:
将补丁放入对应目录下
source 一下编译脚本,确保中性和客制化的修改有应用到源码中
cd 到对应目录下执行patch -p1 <xxxxx
根据提示的信息,如果有冲突的话需要手动处理冲突,保证补丁修改的内容有合进代码里
将客制化修改的文件同步到客制化的文件夹下面,走复制脚本的流程
更新安全补丁的版本,AN14文件的位置在release/build/make/core/version_defaults.mk。AN16需要改两个文件,文件1:urelease/build/make/core/version_defaults.mk。文件2:wrelease/build/release/flag_values/bp2a/RELEASE_PLATFORM_SECURITY_PATCH.textproto
打入安全补丁之后就可以编包验证了,验证软件需要准备user版本的和userdebug版本的软件进行验证。
1.3 STS测试安全补丁
1.3.1 测试方法
每次更新谷歌补丁都需要进行自测,一台机器大概需要留有一到两天的时间自测和debug。使用user版本的软件测试cts 的CtsSecurityTestCases 模块和 gts-smr,这两个测试时间比较短。
使用userdebug版本的软件测试sts-dynamic-incremental,这个耗时比较长。
命令如下:
run cts -m CtsSecurityTestCases
run gts-smr
run sts-dynamic-incremental
1.3.2 Fail项处理
测试完出报告之后可以根据fail项找到对应的补丁和代码,一般确保代码有合入到系统中就可以pass 对应的fail项。
像这种带有CVE的fail项可以直接到cve的网站上搜索找到对应的补丁信息。不带CVE的fail项需要根据实际情况处理。
CVE:https://cve.mitre.org/cve/(查询安全patch号以及patch内容)
2.GMS包更新
项目第一次进行EDLA认证时需要注意GMS包的时效性,如果第一次送测超过了当前GMS包的有效期并且GMS有更新新的版本的话需要更新GMS包以满足谷歌认证的要求,如果是已经通过了认证、后续进行维护更新的话则不需要更新GMS包,进行SMR测试。
2.1 下载GMS包
谷歌官方GMS包的下载地址为:https://docs.partner.android.com/gms/building/integrating/gms-download?hl=zh-cn
进入下载链接找到对应Android版本的GMS包即可,
如图所示,红框里的代表是202408月份的GMS包,谷歌要求IR项目在10.27号及以后强制使用202408月份的GMS包,因此根据项目情况看是否需要更新GMS包。
进入下载链接找到对应Android版本的最新GMS包即可。需要注意的是,在google官网上浏览或者下载东西要切换成英文,不然用中文所看到的不是最新内容。因此下载GMS包一定要选择英文,mainline包同理。以下是英文浏览下的内容:
2.2 更新GMS包
GMS包包含谷歌的APK和对应的mk文件等配置文件,如果完全替换的话会将中性在相关的文件上的对策覆盖掉出现问题,因此客制化更新GMS包有两种选择:
进行GMS包的更新可以只替换掉APK,不对其他类型的文件进行操作避免导致中性修改的问题再次出现。除了APK之外还需要修改partner_gms\products路径下的gms_package_version.mk文件,更新系统GMS包的日期。
对比文件,将中性的对策也同步到新的文件中进行替换。将需要修改的文件放入客制化文件夹,修改code_path文件在编译时进行替换即可。
3.Mainline包更新
一般来说GMS包需要更新到最新,mainline包不能更新到最新,不然会出现问题,落后当前日期3-6个月区间的mainline包是比较稳定的。
3.1下载Mainline包
谷歌官方Mainline包的下载地址为:https://releasetracker.partner.android.com/projects/mainline/changes?hl=zh-cn
进入网站后然后选择下载mainline包,注意,mainline包的下载对比gms包较为复杂,选择好maline包后,我们这里需要下载的是Preload里的,一般下载最新的版本,然后点击包含的内容,选择版本后,然后会跳转到CI界面,这里需要搜索partner,然后就能下载maline包了,如下列图片:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
3.2 Mainline包补丁
若下载mainline包出现编译报错的情况,先检查下是否需要合入google针对mainline的补丁,Mainline包补丁网站如下:https://docs.partner.android.com/mainline/release/release-notes/platform_patches
补丁、谷歌安全补丁、GMS、mainline包的区别
这是最核心的对比表,覆盖所有关键差异点,后续所有拆解均围绕此表展开,建议你在集成 / 更新时对照校验:
| 对比维度 | 泛指「补丁」 | Android Patch(安卓官方补丁) | Mainline包(主线模块包) | GMS包(Google移动服务包) |
|---|---|---|---|---|
| 核心属性 | 对系统漏洞/问题的修复程序泛称(无标准) | Android系统官方标准化修复包(有强制规范) | AOSP模块化系统核心组件包(开源) | Google闭源授权服务/应用包(需EDLA/MADA协议) |
| 归属方 | 厂商/第三方/Google均可能发布 | Google官方(AOSP团队) | Google官方(AOSP团队) | Google官方(GMS团队) |
| 存在形式 | 无固定形式(单so/脚本/增量包/完整包) | 固定形式:SMR(安全补丁)/IMR(维护补丁) | 固定形式:APEX格式(核心)+APK格式 | 固定形式:目录化合集(priv-app/apps/lib64/etc等) |
| 核心作用 | 修复任意系统问题(漏洞/功能bug/兼容性问题) | 修复Android系统底层漏洞/核心功能bug,保障系统基线安全 | 提供Android模块化系统核心组件,支持独立更新,不依赖完整OTA | 提供Google闭源生态服务/应用,是GMS认证核心,实现Play商店/账号/Chrome等功能 |
| 开源性 | 可闭源/开源 | 核心补丁开源(AOSP提交代码) | 完全开源(AOSP核心模块) | 完全闭源(仅授权设备可获取/集成) |
| EDLA设备更新要求 | 无强制要求 | 季度强制更新(SMR安全补丁),5年安全支持 | 1. 与GMS包版本严格匹配2. 随Android Patch同步更新3. 支持Play系统独立更新 | 1. 月度更新,有效期90天(认证必用未过期版本)2. 与Mainline包版本严格匹配3. 季度安全补丁同步更新 |
| 认证关联 | 无直接关联 | 无最新补丁→CTS/GTS测试失败,认证一票否决 | 版本不匹配/缺失→GTS测试失败,认证一票否决 | 过期/版本不匹配/组件缺失→GMS认证直接失败,EDLA核心要求 |
| 典型内容 | 厂商自定义修复包、第三方漏洞补丁等 | 内核漏洞修复、系统库(bionic/ART)修复、SELinux策略修复等 | Conscrypt(加密)、ART(运行时)、TimeZoneData(时区)、MediaCodec(媒体)等系统模块化组件 | PrebuiltGmsCore(Play服务)、GooglePlayStore(商店)、Chrome、Trichrome内核、AICoreStub等闭源应用/服务 |
| 依赖关系 | 无固定依赖 | 依赖Android系统大版本(如Android12补丁仅适用于12) | 依赖Android系统大版本(Android10 + 支持),与GMS包强绑定 | 依赖Android系统大版本 + Mainline包强绑定,依赖Android Patch安全基线 |
| 部署目录 | 无固定目录 | 集成到/system//kernel等 | vendor/partner_gms | prebuild、vendor/partner_modules |
如果对你有帮助,就一键三连呗(关注+点赞+收藏),我会持续更新更多干货~~
