ParcelCreator Lint抑制失效及Parcelize集成失败问题求助
解决Parcelize无法工作及ParcelCreator Lint抑制失效问题
一、先搞定Parcelize的配置问题
从你贴的项目级Gradle配置来看,目前的设置还不完整,我给你梳理下关键修复点:
补全模块级build.gradle的配置
光在项目级依赖里加kotlin-android-extensions的classpath还不够,必须在模块级的build.gradle里启用Android Extensions,并且因为你用的是旧版Kotlin,Parcelize还属于实验性功能,得手动开启:apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { // 你的其他Android配置... kotlinOptions { jvmTarget = "1.8" } // 开启Parcelize所需的实验性配置 androidExtensions { experimental = true } }修复版本兼容性问题
你用的Kotlin1.2.30和Gradle插件3.1.0版本偏旧,两者搭配可能存在兼容性bug,建议升级到更稳定的匹配版本,比如:buildscript { ext.kotlin_version = '1.3.72' // 和Gradle插件3.1.0兼容的较新版本 repositories { maven { url "https://jitpack.io" } google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.6.4' // 更稳定的Gradle插件版本 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version" // 补全你截断的Realm插件配置,比如匹配版本的: classpath "io.realm:realm-gradle-plugin:5.11.0" } }确认数据类的注解使用正确
别漏了@Parcelize注解,而且要让数据类正确继承Parcelable:import android.os.Parcelable import kotlinx.android.parcel.Parcelize @Parcelize data class YourModel(val id: Int, val name: String) : Parcelable
二、解决ParcelCreator的Lint抑制失效问题
如果单个注解抑制不管用,试试这几个方法:
直接在Parcelable类上添加抑制注解
把@SuppressLint("ParcelCreator")直接加在你的数据类上:@Parcelize @SuppressLint("ParcelCreator") data class YourModel(val id: Int, val name: String) : Parcelable全局禁用该Lint规则
在模块级build.gradle的lintOptions里配置全局禁用:android { // 其他配置... lintOptions { disable 'ParcelCreator' } }清理Lint缓存
有时候缓存会导致规则不生效,执行这条命令清除缓存后重新检查:./gradlew lint --no-build-cache
内容的提问来源于stack exchange,提问作者user8789149
相关产品推荐
相关产品推荐

