AIDL文件不识别@Nullable等注解报'@' unexpected错误,如何启用注解支持?
AIDL @nullable注解编译报错解决方法
核心原因
你遇到的'@' unexpected编译错误不是注解本身不合法,是缺少AIDL注解包的导入声明,或Android Gradle插件(AGP)版本过低不支持空性注解。
解决步骤
- 确认你的AGP版本在3.6.0及以上,低于该版本的AIDL编译器没有空性注解支持能力
- 在AIDL文件顶部添加平台原生Nullable注解的导入语句,注意不要混用AndroidX的Nullable注解,AIDL编译器仅识别android.annotation包下的原生注解:
import android.annotation.Nullable;
- 方法返回值前的注解使用AIDL规定的全小写
@nullable即可,修改后的完整AIDL示例如下:
package com.example.yourpackage; // 导入必要的类 import android.annotation.Nullable; import com.example.yourpackage.User; interface IUserAuthService { @nullable User registerUser(String name); }
- 如果项目开启了代码混淆,需要在proguard规则中添加以下配置,避免AIDL相关类和注解被误裁剪:
# 保留AIDL相关类与注解 -keep class android.annotation.Nullable { *; } -keep class * implements android.os.Parcelable { *; } -keep interface * extends android.os.IInterface { *; }
额外注意
如果是Java/Kotlin实现的服务端代码,你可以给对应方法添加AndroidX的@Nullable注解做本地代码静态检查,该注解和AIDL文件中的@nullable注解独立生效,互不冲突。
内容的提问来源于stack exchange,提问作者snachmsm
相关产品推荐
相关产品推荐

