Android Kotlin 1.4.21配置kotlin-parcelize后@Parcelize无法识别
@Parcelize注解无法识别的配置修正方案
核心配置问题排查
- 仓库配置不统一:你将Kotlin相关仓库、mavenCentral配置写在模块级build.gradle末尾,根项目
allprojects的仓库列表缺失必要源,导致kotlinx.parcelize包无法正常拉取解析。 - 实验性API未开启:Kotlin 1.4.21版本中
@Parcelize属于实验性API,未添加对应编译参数时,Android Studio会直接忽略该注解的识别。 - 插件应用顺序冲突:
kotlin-parcelize与kotlin-android插件的声明顺序不合理,可能导致注解处理器无法正常加载。
具体修正步骤
- 统一仓库配置
- 删除模块级build.gradle末尾冗余的自定义
repositories块 - 修改根目录build.gradle的
allprojects.repositories配置,补全必要依赖源:
- 删除模块级build.gradle末尾冗余的自定义
allprojects { repositories { google() jcenter() mavenCentral() maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' } } }
- 开启实验性API编译参数
在模块级build.gradle的android块下方添加Kotlin编译配置:
kotlinOptions { freeCompilerArgs += [ "-use-experimental=kotlinx.parcelize.Parcelize" ] }
- 调整插件声明顺序
修改模块级build.gradle的plugins块顺序,避免插件加载冲突:
plugins { id 'com.android.application' id 'kotlin-android' id 'kotlin-parcelize' id 'kotlin-kapt' }
- 同步与重建项目
- 点击Android Studio顶部的
Sync Project with Gradle Files完成配置同步 - 依次执行
Build -> Clean Project、Build -> Rebuild Project完成项目重建 - 若重建后仍无法识别,可执行
File -> Invalidate Caches and Restart清理IDE缓存重启
- 点击Android Studio顶部的
正确的业务代码示例
你编写的数据类逻辑无问题,配置修正后可正常识别:
import android.os.Parcelable import kotlinx.parcelize.Parcelize @Parcelize data class Cipher(val id: Int, val name: String) : Parcelable
内容的提问来源于stack exchange,提问作者Adam Knirsch
相关产品推荐
相关产品推荐

