Android R 系统编译时 Lint 工具检查问题记录
Posted 虫师魁拔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android R 系统编译时 Lint 工具检查问题记录相关的知识,希望对你有一定的参考价值。
android R上面对于系统api的修改变更有了新的检查方式,对于代码静态检查变得更严格了,代码中类型或是参数有些必须要添加 @NonNull 等注释,否则编译不过。遇到的报错贼多,举个栗子如下
1、返回类型缺少非空判断
Missing nullability on method `buildParamsForInviteConferenceParticipants` return [MissingNullability]
2、使用了具象类,要求使用父类,这里就是 List 来替换 ArrayList ,使接口可以更宽泛
Parameter type is concrete collection (`java.util.ArrayList`); must be higher-level interface [ConcreteCollection]
3、静态工具类缺少私有构造函数
Fully-static utility classes must not have constructor
修改方式有两种,一是在代码中添加报错提示的注释,如下
public static @NonNull Bundle buildParamsForInviteConferenceParticipants(
@NonNull String callId, @NonNull ArrayList<String> numbers) {
return obtainBuilder(ACTION_INVITE_CONFERENCE_PARTICIPANTS)
.putStringParam(PARAM_STRING_CALL_ID, callId)
.putStringArrayListParam(PARAM_STRING_ARRAY_LIST_NUMBERS, numbers)
.build();
}
二是修改系统的 frameworks/base/api/lint-baseline.txt 把报错部分添加上,跳过编译检查报错
ConcreteCollection: android.telecom.TelecomHelper.InCallServiceHelper#buildParamsForInviteConferenceParticipants(String, java.util.ArrayList<java.lang.String>) parameter #1:
添加时按照 class#mothod() parameter #index 格式,mothod 参数把类型写全,parameter # 后面从0开始,注明是参数几。这种方式有时候没用,还没搞清楚为啥。
以上是关于Android R 系统编译时 Lint 工具检查问题记录的主要内容,如果未能解决你的问题,请参考以下文章
错误记录Android Studio 编译时 lint 检查报错 ( Could not resolve junit:junit:4.+. )
错误记录Android Studio 编译时 lint 检查报错 ( Error: Google Play requires that apps target API level 29 or )
Android Lint——内嵌于Android Studio的代码优化工具
如何检查 Perl-CGI 应用程序中的所有错误(例如,使用 Perl 编译器或类似 lint 的工具检查,免费开源?)