从 10.0 移植了几个类过来,没想到一编译出来几十个 errors,这就很离谱,明明是现成的代码。

后来仔细看了错误 log 提示,Your API changes are triggering API Lint warnings or errors

详细 log 如下

26 new API lint issues were found.
See tools/metalava/API-LINT.md for how to handle these.
************************************************************
Your API changes are triggering API Lint warnings or errors.
To make these errors go away, fix the code according to the
error and/or warning messages above.If it is not possible to do so, there are workarounds:1. You can suppress the errors with @SuppressLint("<id>")
2. You can update the baseline by executing the followingcommand:cp \"/home/xxx/android11.0/8788/alps/out/soong/.intermediates/frameworks/base/api-stubs-docs/android_common/api_lint_baseline.txt" \"/home/xxx/android11.0/8788/alps/frameworks/base/api/lint-baseline.txt"To submit the revised baseline.txt to the main Androidrepository, you will need approval.
************************************************************
[ 45% 4001/8864] //frameworks/base:test-api-stubs-docs metalava merged [common]

那就按照提示,把 out 下的 api_lint_baseline.txt copy 到 frameworks/base/api/lint-baseline.txt

再次编译没啥变化,还是一样的错误提示。网上找了这篇

Android R 系统编译时 Lint 工具检查问题记录

看评论里说的如果 lint-baseline.txt 不生效,去检查 frameworks/base/StubLibraries.bp 中是否有添加依赖。

后来我把依赖加进去后,再次编译错误提示变了,有点类似需要执行

make api-stubs-docs-non-updatable
make api-stubs-docs-non-updatable-update-current-api
make api-stubs-docs-update-current-api

但是执行了以后好像错误依旧。

解决办法

根据错误 log 提示找到对应地方添加 @SuppressLint("")

frameworks/base/core/java/android/hardware/player/AndroidPlayer.java:63: error: Registration methods should have overload that accepts delivery Executor: `AndroidPlayer` [ExecutorRegistration]
frameworks/base/core/java/android/hardware/player/CodecPlayerImpl.java:16: error: Don't expose your implementation details: `CodecPlayerImpl` ends with `Impl` [EndsWithImpl]
frameworks/base/core/java/android/hardware/player/CodecPlayerImpl.java:62: error: Registration methods should have overload that accepts delivery Executor: `CodecPlayerImpl` [ExecutorRegistration]
frameworks/base/core/java/android/hardware/player/CodecPlayerImpl.java:496: error: Returned time values are strongly encouraged to be in milliseconds unless you need the extra precision, was `getVsyncDurationNanos` [MethodNameUnits]
frameworks/base/core/java/android/hardware/player/MediaCodecPlayer.java:34: error: Registration methods should have overload that accepts delivery Executor: `MediaCodecPlayer` [ExecutorRegistration]
frameworks/base/core/java/android/hardware/player/MediaCodecPlayer.java:15: error: All constants must be defined at compile time: android.hardware.player.MediaCodecPlayer#PLAY_TIME_MS [CompileTimeConstant]
frameworks/base/core/java/android/hardware/player/MediaTimeProvider.java:9: error: Returned time values are strongly encouraged to be in milliseconds unless you need the extra precision, was `getVsyncDurationNanos` [MethodNameUnits]
frameworks/base/core/java/android/hardware/player/VideoFrameReleaseTimeHelper.java:91: error: Returned time values are strongly encouraged to be in milliseconds unless you need the extra precision, was `getVsyncDurationNanos` [MethodNameUnits]
8 new API lint issues were found.
See tools/metalava/API-LINT.md for how to handle these.
************************************************************
Your API changes are triggering API Lint warnings or errors.
To make these errors go away, fix the code according to the
error and/or warning messages above.If it is not possible to do so, there are workarounds:1. You can suppress the errors with @SuppressLint("<id>")
2. You can add a baseline file of existing lint failuresto the build rule of api-stubs-docs-non-updatable.
************************************************************

import android.annotation.NonNull;
import android.annotation.SuppressLint;

导入上面这两个包

@SuppressLint("") 中的 id 就是错误 log 中的 [xxxxxx]

@NonNull 也可以用 @SuppressLint(“MissingNullability”)

具体修改

CodecPlayerImpl.java:62: error: Registration methods should have overload that accepts delivery Executor: CodecPlayerImpl [ExecutorRegistration]

 @SuppressLint("ExecutorRegistration")public CodecPlayerImpl(@NonNull Surface surface,@NonNull ImageReader imageReader,double defaultDisplayRefreshRate, boolean AudioDecodeOnly,@NonNull CodecState.OnVideoImageAvailablelistener onVideoImageAvailablelistener,@NonNull OnCodecErrorListener onCodecErrorListener){

CodecPlayerImpl.java:496: error: Returned time values are strongly encouraged to be in milliseconds unless you need the extra precision, was getVsyncDurationNanos [MethodNameUnits]

 @SuppressLint("MethodNameUnits")public long getVsyncDurationNanos() {if (mFrameReleaseTimeHelper != null) {return mFrameReleaseTimeHelper.getVsyncDurationNanos();} else {return -1;}}

Android API 规范

Android11.0(R) framework 新增类 lint 编码检查问题相关推荐

  1. Android11.0(R) 华为充电动画

    根据系统原有的无线充电动画流程,新增有线充电气泡动画. 效果图 修改文件清单 vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/an ...

  2. Android11.0(R) MTK平台添加新分区

    mtk 平台增加一个新分区test,修改文件列表如下 modified: device/mediatek/mt6765/init.mt6765.rcmodified: device/mediatek/ ...

  3. Android11.0(R) 预留清空锁屏密码接口

    前言 出厂的设备有些客户喜欢设置锁屏密码,无奈记性不好,忘记密码后就只能恢复出厂或者重新刷机了,啊这客户肯定不接受的. 为了防止客户逼逼赖赖,我们就未雨绸缪,给它加个清除接口. 先说结论,系统锁屏密码 ...

  4. Android11.0(R) 预置 wifi 信息自动连接

    在系统中预置一个 wifi 的 ssid 和 pwd,这样在系统烧写启动完成后开机打开 wifi 就能 自动连接指定 ssid. 1.获取 WifiConfigStore.xml R 版本此文件路径位 ...

  5. android11.0(R) data分区节点加密控制分析

    前情提要 androidQ(10.0) 预装集成apk到data分区 Android O.P.Q 版本如何预装 APK 遇到问题 当然是和之前一样啦,开机并不能正常启动,而是 自动进入了 recove ...

  6. Android11.0(R) MTK 预置可卸载app恢复出厂不恢复(仿RK方案)

    常规的预置可卸载 apk 并且恢复出厂不恢复,都是放到 data 目录下,也就是打包到 userdata.img 中. 这里列举几个缺点, 1.从 Q 开始谷歌默认不建议这样做了,所以在不修改源码情况 ...

  7. Android11.0(R) MTK6771 user版本关闭 SELinux

    开始我们先来跟一下 selinux 的初始化过程 system\core\init\main.cpp int main(int argc, char** argv) {#if __has_featur ...

  8. Android11.0(R) HAL 相机集成水印算法+多帧算法

    一.写在前面 上网

  9. ASP.NET 2.0 中的新增安全功能

    发布日期: 8/26/2004 | 更新日期: 8/26/2004 Stephen Walther Microsoft Corporation 适用于: Microsoft ASP.NET 2.0 M ...

最新文章

  1. OpenCV学习笔记(二十六)——小试SVM算法ml OpenCV学习笔记(二十七)——基于级联分类器的目标检测objdect OpenCV学习笔记(二十八)——光流法对运动目标跟踪Video Ope
  2. python中执行sql语句_Python执行sql语句
  3. 习惯性朴实简单!一起学习MySQL常见单行函数,字符数学日期流程控制
  4. GIL线程全局锁 协程
  5. android初学之sharedpreferences存储
  6. k8s从入门到放弃--使用kubeadm快速安装kubernetes
  7. Android版本Oppo电视,OPPO 智能电视 R1
  8. 命令行快速部署Exchange2010
  9. PyTorch学习笔记(七):PyTorch可视化
  10. ctp怎么设置java的编码为GBK_GitHub - yuelong2456/java-ctp: java包装的上期ctp,用swig技术实现。...
  11. Windows如何查看局域网内所有设备的ip
  12. 【python】websockets
  13. 张铁林的十年英国留学生涯
  14. php网页设计导航栏代码,CSS导航栏及弹窗示例代码
  15. 达人评测 r7 7735h和i7 13700h选哪个 锐龙r77735h和酷睿i713700h差距
  16. [玩游戏]-罪案现场全集打包下载
  17. 圣诞节来了,用Python Turtle画棵圣诞树吧
  18. 报错:attributes are not compatible with the provided attributes
  19. 亚马逊简单云存储服务(AWS S3)
  20. 手把手教你读财报----银行业---第五课

热门文章

  1. python基础知识思维导图总结
  2. 1024 —— 实习总结
  3. model给新娘最上镜秘诀
  4. 观世音菩萨成道日这一天您应该做的
  5. python hexdump_细说Linux中怎么用hexdump命令
  6. TexLive安装报错does not map to cp936
  7. 利用qq第三方登录,提示不是官方应用,报100044错,解决方案
  8. html a标签唤醒app,网页唤醒app、一个app唤醒另一个app
  9. C语言利用指针实现数组逆序输出
  10. hive中如何实现13位时间戳转毫秒时间类型