You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Kotlin至1.5.0后Android应用构建出现No noarg构造器错误

解决Kotlin 1.5.0升级后@Parcelize密封类子类触发的No noarg super constructor错误

问题根源

你给kotlin-noarg插件配置了对@Parcelize注解类生成无参构造,但@Parcelize本身通过CREATOR机制处理Parcelable序列化,完全不需要无参构造。同时,密封类Profile仅提供带参的protected构造,noarg插件无法为子类生成合法的无参构造,最终触发构建错误。

解决方案

1. 移除noarg插件对@Parcelize的注解配置

修改app级build.gradle,删除noArg块中针对@Parcelize的注解配置(如果插件是为其他自定义注解服务,保留对应配置即可):

apply plugin: "kotlin-noarg"

noArg {
    // 仅保留你真正需要生成无参构造的注解,比如自定义的@NoArg
    // annotation("com.yourpackage.NoArg")
    invokeInitializers = true
}

2. 若无需noarg插件,直接彻底移除

如果项目中kotlin-noarg插件仅为@Parcelize服务,直接删除所有相关配置:

  • 移除project级build.gradle中插件的引入
  • 移除app级build.gradle中的apply plugin: "kotlin-noarg"及noArg配置块

3. 优化密封类代码(可选)

子类无需重复实现Parcelable,父类Profile已经实现该接口,简化代码:

import android.os.Parcelable
import kotlinx.parcelize.Parcelize

sealed class Profile(
    val count: Int
) : Parcelable {
    @Parcelize
    class User(
        val origincount: Int,
        val imageUrl: String
    ) : Profile(origincount)

    @Parcelize
    class Guest(
        val origincount: Int
    ) : Profile(origincount)
}

内容的提问来源于stack exchange,提问作者ant2009

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 18:54:29