当前位置: 首页 > news >正文

编译问题-make update-api-Api 小结

提示:make update-api-Api 问题小结

文章目录

  • 前言
  • 一、问题
  • 二、如何产生这个问题
    • 1、编译报错提醒语音
    • 2、举例说明编译报错案例
      • 尝试更改系统服务-添加服务
      • 修改了系统文件Build
  • 三、解决方案
    • 1、环境准备
    • 2、Lunch 自己的项目
    • 3、更新api
    • 4、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 'ehide"javadoc 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_PATH=rockdev #DM77_20250509_V1.0.0.0#项目名 exportFS_PRODUCT_NAME=DR7600_LVDS#日期FS_SW_DATE=20260413#版本号 exportFS_PRODUCT_VERSION=1.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_PATH=rockdev #DM88_S_20230904_V1.0.0.0#项目名 exportFS_PRODUCT_NAME=DM88_P_YL_FP#日期FS_SW_DATE=20260415#版本号 exportFS_PRODUCT_VERSION=1.0.0.3#完整项目软件版本名 exportFS_SW_VERSION=${FS_PRODUCT_NAME}_${FS_SW_DATE}_V${FS_PRODUCT_VERSION}exportDM88_MODEM=TK_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 更新问题,努力提高开发效率。

http://www.cnnetsun.cn/news/1945519.html

相关文章:

  • **RISC-V架构下的高效嵌入式开发:从指令集到裸机编程的实战解析**在当前国产化芯片浪潮中,*8RIS
  • 终极Windows更新修复指南:Reset Windows Update Tool一键解决方案
  • 小白程序员必收藏!超全面大模型学习路线,从入门到实战,轻松提升竞争力
  • FPGA新手避坑:用Verilog实现边沿检测时,为什么你的仿真波形总是不对?
  • 【软件质量与测试】实验四: 面向对象测试
  • 3步搭建Windows AirPlay 2接收器:让Windows电脑变身苹果投屏中心
  • 2025届毕业生推荐的十大AI辅助写作助手解析与推荐
  • 2026届最火的AI学术网站实测分析
  • 5步解锁游戏手柄的全部潜力:用AntiMicroX让任何PC游戏完美适配手柄
  • 如何让Axure RP说中文:3分钟完成界面汉化的完整指南
  • [Spark] 图解Job、Stage、Task的生成逻辑与实战推演
  • 【离线部署实战】—— 攻克PyInstaller依赖地狱的完整指南
  • CANoe Panel控件实战:从开关到仪表盘的12种控件配置详解(附避坑指南)
  • 如何用InceptionTime实现时间序列分类的突破性性能
  • Vivado物理优化实战:如何用phys_opt_design命令提升时序性能(附完整Tcl脚本)
  • 如何用Hourglass倒计时器彻底改变你的时间管理方式:终极Windows时间管理工具完整指南
  • 如何在PC上玩Switch游戏:Ryujinx模拟器终极入门指南
  • 异构计算时代的安防底座:基于 Docker 的 X86/ARM 与 GPU/NPU 混合部署架构解析
  • 用OpenCV+ROS搞定无人机视觉定位:手把手教你配置vision_to_mavros节点
  • 从PQ到WFQ:深入解析华为设备队列调度技术的演进与实战
  • 周红伟:雷军对得起营销大师吗?雷军回应被贴上“营销大师”标签:表面在夸我,实际在黑我,去年很长一段时间不愿直播
  • Cal.com 开源五年后转向闭源,只为保护客户数据安全!
  • 从二维照片到三维世界:MicMac摄影测量软件完全指南
  • 海思3516a OSD水印实战:从字体渲染到视频叠加全链路解析
  • Chrome for Testing API 架构深度解析:构建稳定自动化测试环境的技术实现
  • 企业级Java SMB/CIFS客户端库:jcifs-ng如何解决跨平台文件共享的核心痛点
  • Motrix WebExtension终极指南:如何快速提升浏览器下载效率300%
  • 台达PLC与三菱变频器Modbus通讯案例分享
  • yfinance进阶指南:如何用Python分析多只股票的基本面并生成对比报告
  • 5分钟终极指南:使用KMS_VL_ALL_AIO智能激活Windows和Office