Android-EDLA 谷歌安全补丁、GMS包以及mainline包更新

📅 2026/8/1 22:19:28 👁️ 阅读次数 📝 编程学习
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 打入安全补丁

打入安全补丁主要有以下几步:

  1. 将补丁放入对应目录下

  2. source 一下编译脚本,确保中性和客制化的修改有应用到源码中

  3. cd 到对应目录下执行patch -p1 <xxxxx

  4. 根据提示的信息,如果有冲突的话需要手动处理冲突,保证补丁修改的内容有合进代码里

  5. 将客制化修改的文件同步到客制化的文件夹下面,走复制脚本的流程

  6. 更新安全补丁的版本,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,这个耗时比较长。

命令如下:

  1. run cts -m CtsSecurityTestCases

  2. run gts-smr

  3. 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包有两种选择:

  1. 进行GMS包的更新可以只替换掉APK,不对其他类型的文件进行操作避免导致中性修改的问题再次出现。除了APK之外还需要修改partner_gms\products路径下的gms_package_version.mk文件,更新系统GMS包的日期。

  2. 对比文件,将中性的对策也同步到新的文件中进行替换。将需要修改的文件放入客制化文件夹,修改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//kernelvendor/partner_gmsprebuild、vendor/partner_modules

如果对你有帮助,就一键三连呗(关注+点赞+收藏),我会持续更新更多干货~~