赞
踩
笔者报错时的运行环境:
笔者在刚安装完的 Android Studio 中使用 Lombok 时,发现 Lombok 不起作用。具体遇到的问题有两个:
Lombok 的注解在 Android Studio 中报红。
本来应该由 Lombok 生成的方法在 Android Studio 中报红。
Lombok 的这两个依赖关键字 implementation、annotationProcessor 同时不能少。
如果缺少 implementation,则在 IDE 中会直接报红,编译和运行也会直接失败。
如果缺少 annotationProcessor,则编译和运行会直接失败。
Lombok 依赖不具有传递性,在每个使用它的模块都要注明对它的依赖(在依赖模块中对 Lombok 使用关键字 api
也没用)。
先解决第一个问题。第一个问题是因为没有引入 Lombok 依赖。为此,需要在子项目的 build.gradle
文件中引入如下依赖:
build.gradle
dependencies {
// Others...
compileOnly 'org.projectlombok:lombok:1.18.26'
annotationProcessor 'org.projectlombok:lombok:1.18.26'
}
这样就解决了注解报红的问题。
Lombok 官方解释:
解决完第一个问题之后,实际上 Lombok 就起作用了。例如,在 Android Studio 中使用 rebuild,就可以在子项目的 build 文件夹(子项目\build\intermediates\javac\debug\classes\
)下看到 Lombok 生成的方法。
但问题是,Android Studio 仍然对本来应该由 Lombok 生成的方法报红,这说明这是 IDE 自身的问题。实际上,在 IDE 中使用 Lombok 需要 Lombok 插件的支持。
可以印证这一点。在 IntelliJ IDEA (IntelliJ IDEA 2022.3.1 (Ultimate Edition))中实际上已经内置了 Lombok 的插件。
但 Android Studio 却把这个插件给移除了,且无法在 Android Studio 插件商店中搜索到这个插件。
因此,需要自行安装 Lombok 的插件。Lombok 的插件地址:https://plugins.jetbrains.com/plugin/6317-lombok/versions
通常,最好下载一个插件的最新稳定版,但很遗憾,Lombok 的这个插件已经很久没有更新了。这带来的问题是,这个插件就算是下载下来,但由于 Android Studio 版本过高的原因,也无法在 Android Studio 中安装。但实际上这个插件是可以使用的。因此,需要手动更改下载下来的 Lombok 的这个插件所注明支持的版本。
现在主流的压缩软件基本已经支持压缩包内替换了,所以不用担心解压之后再打包的问题。不过,这个插件的压缩包内还有压缩包,所以需要解压二次,替换二次。
现在,经过两次解压,找到名为 plugin.xml
的文件。打开它,找到第 9 行 <idea-version../>
的位置。
然后再根据自己 Android Studio 的版本号作相应修改。
如图,需要同时修改 since-build
和 until-build
属性。
然后,经过两次替换即可制成符合 Android Studio 版本要求的 Lombok 插件。然后就可以在 Android Studio 中安装了。
方法 1 的弊端就是每次安装新的 Android Studio 就要手动去 Lombok 压缩包内更改一次支持版本。这很麻烦,实际上,可以 Android Studio 的插件可以免在 Android Studio 运行界面中安装的。
Android Studio 的插件目录实际上位于 Android Studio 安装目录\plugins
中。因此,可以直接解压 Lombok 的压缩包,然后将其直接拷贝到 Android Studio 插件目录中(不需要对压缩包内的文件作任何改动)。
Lombok 压缩包解压之后会生成一个名为 lombok-plugin
的文件夹。直接把这个文件夹拷贝进 Android Studio 插件目录中即可。
如下图所示。
当然,如果觉得这个文件夹 lombok-plugin
的名称不好听,可以改成其它名称(如 lombok
),这不影响安装。
这样做了之后,再启动 Android Studio,就可以发现该插件已经安装了。
Lombok 插件安装完之后,重启 Android Studio,可以发现方法报错已经消失了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。