提示make update-api-Api 问题小结文章目录前言一、问题二、如何产生这个问题1、编译报错提醒语音2、举例说明编译报错案例尝试更改系统服务-添加服务修改了系统文件Build三、解决方案1、环境准备2、Lunch 自己的项目3、更新api4、update 成功 信息5、提醒-闭坑-小结提醒-闭坑小结总结前言自己在做Framework层开发时候更改了系统api 会无法编译报错提醒我们类似如下m api-stubs-docs-non-updatable-update-current-api为什么关注这个问题可能自己现在有经验了这样的问题特别简单常规操作但是也是一个知识点经常遇到所以记录下。对于新手而言特别是刚开始接触Framework层开发的同学遇到这个问题一脸懵逼无从下手。所以这里以自己的经验来说明问题并总结一下方便自己理解知识点和其他友人能够有所启发并解决实际问题。一、问题当我们更改了系统的api , 编译不会通过的会报错类似如下错误提醒{米米米米米米家家术家家术术术术术京京家京京京京京家本术术本Youhave triedtochangetheAPIfrom what has been previouslyapproved.Tomake these errors go away,you have two choices:1.Youcan add ehidejavadoc comments(and remove eSystemApi/eTestApi/etc)tothenewmethods,etc.shown in the above diff2.Youcan update current.txt and/or removed,txt by executing the following command:m api-stubs-docs-non-updatable-update-current-apiTosubmit the revised current,txttothemainAndroidrepository,you will need approval.米家家家米京家家京家京京家京京京京京京京京京家米米米米二、如何产生这个问题1、编译报错提醒语音本质原因是系统本身是有一套机制和规则、权限的必须按照系统要求、规范进行开发当你尝试去更改系统API方法时候系统就会提醒你了比如如上系统已经提醒你了说得很清楚You have tried to change the API from what has been previously approved.2、举例说明编译报错案例尝试更改系统服务-添加服务大家可以看一下之前的文章 就是新增了系统服务与应用端进行aidl 通信系统定制服务-IPC实战-系统新增aidl接口-实现自定义系统服务功能Framework-自定义服务 AIDL 与应用通信二实际编译时候就会提醒你让你更新API路径如下\frameworks\base\services\api实际更新的内容修改了系统文件Build由于项目需求需要修改文件frameworks/base/core/java/android/os/Build.java比如 自己做了如下修改其实就是新增了一下 字段定义但是系统检测到你要更改我的api,那么我就提醒你破坏了体系环境需要更新一下环境。所以当我们更新了环境后我们看看实际的源码对应变化路径/frameworks/base/core/api/current.txt我们看看实际源码变化三、解决方案这里给出自己的经验总结解决方案其实就是按照系统提醒针对性的更新一下系统api 就可以了你可以理解为更新系统环境1、环境准备执行命令source build/envsetup.sh我个人理解就是准备编译环境2、Lunch 自己的项目分两步lunch 命令执行选择自己的项目 比如rk3576_u-ap4a-userdebug放在一起执行就是一条命令lunch rk3576_u-ap4a-userdebugrk3576_u-ap4a-userdebug是我自己开发的项目举例说明而已3、更新api按照编译报错提醒更新一次api ,如下m api-stubs-docs-non-updatable-update-current-api 有时候更新命令不一样的按照 系统提醒进行更改即可。4、update 成功 信息比如如下5、提醒-闭坑-小结提醒-闭坑特别是新手遇到类似的问题会懵逼所以首先要有解决的意愿。 在如上1 和 2 步骤中好多同学懵逼不知道自己项目是什么因为实际开发当中我们有自己的编译指令高度集成或者封装的如下RK平台#!/bin/bash #生成软件路径FS_SW_BIN_PATHrockdev #DM77_20250509_V1.0.0.0#项目名 exportFS_PRODUCT_NAMEDR7600_LVDS#日期FS_SW_DATE20260413#版本号 exportFS_PRODUCT_VERSION1.0.0.3#完整项目软件版本名 exportFS_SW_VERSION${FS_PRODUCT_NAME}_${FS_SW_DATE}_V${FS_PRODUCT_VERSION}functionbinPac(){source build/envsetup.sh lunch rk3576_u-ap4a-userdebug./build.sh-AUCKuo# 带OTA#./build.sh-AUCKu# 无OTA#./build.sh-Au# 无OTAmkdir./${FS_SW_BIN_PATH}/${FS_SW_VERSION}cp./${FS_SW_BIN_PATH}/Image-rk3576_u/update.img./${FS_SW_BIN_PATH}/${FS_SW_VERSION}/${FS_SW_VERSION}.img cp./${FS_SW_BIN_PATH}/Image-rk3576_u/rk3576_u-ota*.zip./${FS_SW_BIN_PATH}/${FS_SW_VERSION}/${FS_SW_VERSION}_ota.zip rm-rf./${FS_SW_BIN_PATH}/Image-rk3576_ureturn0;}binPac;MTK 平台#!/bin/bash #生成软件路径 #FS_SW_BIN_PATHrockdev #DM88_S_20230904_V1.0.0.0#项目名 exportFS_PRODUCT_NAMEDM88_P_YL_FP#日期FS_SW_DATE20260415#版本号 exportFS_PRODUCT_VERSION1.0.0.3#完整项目软件版本名 exportFS_SW_VERSION${FS_PRODUCT_NAME}_${FS_SW_DATE}_V${FS_PRODUCT_VERSION}exportDM88_MODEMTK_MD_BASIC_LWTG_6177M_6769_DM88_PfunctionbinPac(){# full_k65v1_64_bsp-user # full_k65v1_64_bsp-userdebug # full_k65v1_64_bsp_k510-user # full_k65v1_64_bsp_k510-userdebug # full_k69v1_64_k419-user # full_k69v1_64_k419-userdebug # full_k69v1_64_k510-user # full_k69v1_64_k510-userdebug python vendor/mediatek/proprietary/scripts/releasetools/split_build_helper.py--run full_k69v1_64_k419-userdebug #Normalpython out_sys/target/product/mssi_64_cn/images/split_build.py--system-dir out_sys/target/product/mssi_64_cn/images--vendor-dir out/target/product/k69v1_64_k419/images--kernel-dir out/target/product/k69v1_64_k419/images--output-dir ${FS_SW_VERSION}/${FS_SW_VERSION}/#OTA# python out_sys/target/product/mssi_64_cn/images/split_build.py--system-dir out_sys/target/product/mssi_64_cn/images--vendor-dir out/target/product/k69v1_64_k419/images--kernel-dir out/target/product/k69v1_64_k419/images--output-dir ${FS_SW_VERSION}/${FS_SW_VERSION}/--otapackage cp./vendor/mediatek/proprietary/modem/${DM88_MODEM}/MDDB_InfoCustomAppSrcP_MT6768_S00_MOLY_LR12A_R3_MP_V283_3_P1_1_ulwtg_n.EDB./${FS_SW_VERSION}/${FS_SW_VERSION}/MDDB_InfoCustomAppSrcP_MT6768_S00_MOLY_LR12A_R3_MP_V283_3_P1_1_ulwtg_n.EDBcp./${FS_SW_VERSION}/${FS_SW_VERSION}/target_files.zip./${FS_SW_VERSION}/target_files.zip rm-rf./${FS_SW_VERSION}/${FS_SW_VERSION}/target_files.zipreturn0;}binPac;但是你要搞清楚无论平台源码怎么变谷歌体系下的源码编译一定有sourcelunch指令对于自己的项目名称是什么在编译脚本里面一定有的自己去查找。小结做完如上、更新完api 后重新编译一次就可以了编译就不会提醒和报错了。总结这里是对 编译过程中常见问题的一个小结总结一下是一个必备技能知识点。涉及道德编译环境问题、编译步骤、编译命令 也是基础中的基础需要掌握的这里暂不讨论。最后希望每一次的总结都是后续高效工作的基石 在重新编译之前就先解决api 更新问题努力提高开发效率。