一、核心作用
-
API 版本快照
current.txt记录了当前编译环境中 已批准的 API 版本号(如 Android 13 对应 API 33)。- 在编译过程中,系统会通过此文件验证代码中使用的 API 是否与当前版本一致,防止引入未发布的 API 或回退已废弃的接口
-
编译时 API 检查
- 当代码中调用了某个 API,但当前编译环境的
current.txt中未包含该 API 的声明时,编译器会报错,提示需要更新 API 版本或添加@hide注解(隐藏 API)。 - 例如:若在 Android 13(API 33)中调用 Android 14 的 API,编译时会提示
API 未批准错误
- 当代码中调用了某个 API,但当前编译环境的
-
跨模块 API 一致性
- 在复杂系统(如车载 Android 或定制 ROM)中,不同模块(如 Framework、Services)需共享同一套 API 定义。
current.txt确保所有模块基于相同的 API 版本编译,避免接口冲突
- 在复杂系统(如车载 Android 或定制 ROM)中,不同模块(如 Framework、Services)需共享同一套 API 定义。
二、文件内容与结构
-
典型内容示例:
# Android 13 (API 33) platform_api=33 -
作用说明:
platform_api字段明确当前系统 API 的版本号。- 文件通常位于
frameworks/base/core/api/目录下,与api/目录中的其他 API 定义文件(如current.xml)配合使用
三、典型使用场景
-
新增或修改系统 API
-
开发者新增一个公共 API(如
Context.newFeature())后,需执行make update-api命令,自动更新current.txt中的版本号,并生成对应的 API 文档。 -
若未更新
current.txt,编译时会报错:You have tried to change the API from what has been previously approved.
-
-
系统镜像兼容性验证
- 在设备厂商定制 ROM 时,需确保
current.txt中声明的 API 版本与设备硬件驱动、HAL 层接口兼容。例如,车载系统调用UnisocPowerManager时,需验证其 API 版本是否支持当前功能
- 在设备厂商定制 ROM 时,需确保
-
第三方 SDK 集成
- 若 Android 系统预装第三方 SDK(如地图服务),需检查 SDK 的 API 版本是否与
current.txt声明一致,避免因版本不匹配导致运行时崩溃
- 若 Android 系统预装第三方 SDK(如地图服务),需检查 SDK 的 API 版本是否与
四、与其他文件的关联
-
api/目录下的其他文件current.xml:定义 API 的具体接口(如类、方法、字段)。removed.txt:记录已废弃的 API,用于编译时警告开发者。current.txt通过版本号关联这些文件,形成完整的 API 管理体系
-
构建系统依赖
- 在
Android.mk或Android.bp中,通过LOCAL_SDK_VERSION指定模块依赖的 API 版本,构建系统会基于current.txt校验依赖关系
- 在
五、操作命令示例
-
更新 API 版本
make update-api # 自动生成或更新 current.txt -
检查 API 变更
make api-stubs-docs-update-current-api # 高版本 Android 的专用命令 -
手动修改(不推荐)
- 直接编辑
current.txt可能导致版本号与实际代码不一致,需通过构建系统自动维护
- 直接编辑
六、常见问题与解决
- 编译错误:API 版本不匹配
解决:执行make update-api后重新提交current.txt的变更,提交前需通过代码审核(如 Gerrit) - 隐藏 API 暴露
解决:若需临时使用未公开 API,可在代码中添加@hide注解,但需后续通过update-api同步到官方 API 列表
总结
current.txt 是 Android 系统 API 版本管理的核心文件,通过强制版本校验确保系统各模块的兼容性和稳定性。开发者需严格遵循其更新流程,避免因 API 版本冲突导致编译或运行时问题。