Android11.0(R) framework 新增类 lint 编码检查问题
从 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 编码检查问题相关推荐
- Android11.0(R) 华为充电动画
根据系统原有的无线充电动画流程,新增有线充电气泡动画. 效果图 修改文件清单 vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/an ...
- Android11.0(R) MTK平台添加新分区
mtk 平台增加一个新分区test,修改文件列表如下 modified: device/mediatek/mt6765/init.mt6765.rcmodified: device/mediatek/ ...
- Android11.0(R) 预留清空锁屏密码接口
前言 出厂的设备有些客户喜欢设置锁屏密码,无奈记性不好,忘记密码后就只能恢复出厂或者重新刷机了,啊这客户肯定不接受的. 为了防止客户逼逼赖赖,我们就未雨绸缪,给它加个清除接口. 先说结论,系统锁屏密码 ...
- Android11.0(R) 预置 wifi 信息自动连接
在系统中预置一个 wifi 的 ssid 和 pwd,这样在系统烧写启动完成后开机打开 wifi 就能 自动连接指定 ssid. 1.获取 WifiConfigStore.xml R 版本此文件路径位 ...
- android11.0(R) data分区节点加密控制分析
前情提要 androidQ(10.0) 预装集成apk到data分区 Android O.P.Q 版本如何预装 APK 遇到问题 当然是和之前一样啦,开机并不能正常启动,而是 自动进入了 recove ...
- Android11.0(R) MTK 预置可卸载app恢复出厂不恢复(仿RK方案)
常规的预置可卸载 apk 并且恢复出厂不恢复,都是放到 data 目录下,也就是打包到 userdata.img 中. 这里列举几个缺点, 1.从 Q 开始谷歌默认不建议这样做了,所以在不修改源码情况 ...
- Android11.0(R) MTK6771 user版本关闭 SELinux
开始我们先来跟一下 selinux 的初始化过程 system\core\init\main.cpp int main(int argc, char** argv) {#if __has_featur ...
- Android11.0(R) HAL 相机集成水印算法+多帧算法
一.写在前面 上网
- ASP.NET 2.0 中的新增安全功能
发布日期: 8/26/2004 | 更新日期: 8/26/2004 Stephen Walther Microsoft Corporation 适用于: Microsoft ASP.NET 2.0 M ...
最新文章
- OpenCV学习笔记(二十六)——小试SVM算法ml OpenCV学习笔记(二十七)——基于级联分类器的目标检测objdect OpenCV学习笔记(二十八)——光流法对运动目标跟踪Video Ope
- python中执行sql语句_Python执行sql语句
- 习惯性朴实简单!一起学习MySQL常见单行函数,字符数学日期流程控制
- GIL线程全局锁 协程
- android初学之sharedpreferences存储
- k8s从入门到放弃--使用kubeadm快速安装kubernetes
- Android版本Oppo电视,OPPO 智能电视 R1
- 命令行快速部署Exchange2010
- PyTorch学习笔记(七):PyTorch可视化
- ctp怎么设置java的编码为GBK_GitHub - yuelong2456/java-ctp: java包装的上期ctp,用swig技术实现。...
- Windows如何查看局域网内所有设备的ip
- 【python】websockets
- 张铁林的十年英国留学生涯
- php网页设计导航栏代码,CSS导航栏及弹窗示例代码
- 达人评测 r7 7735h和i7 13700h选哪个 锐龙r77735h和酷睿i713700h差距
- [玩游戏]-罪案现场全集打包下载
- 圣诞节来了,用Python Turtle画棵圣诞树吧
- 报错:attributes are not compatible with the provided attributes
- 亚马逊简单云存储服务(AWS S3)
- 手把手教你读财报----银行业---第五课