只是修改了业务代码,并没有相关注解,再次build时如何不使用kapt

只是修改了业务代码,并没有相关注解,再次build时可以不用使用kapt吧?此时如何关闭kapt,因为kaptDebugKotlin这个task太耗时了

可以通过以下方式实现禁用:

一、正确配置方式

  1. 全局禁用kapt (测了,useBuildCache 没有用,艹)
    在模块的build.gradle中使用kapt.configure闭包:

    android {
        kotlinOptions {
            freeCompilerArgs += ["-Xskip-metadata-version-check"]
        }
    }
    
    kapt {
        useBuildCache = false  // 可选:禁用构建缓存
        includeCompileClasspath = false  // 可选:排除编译类路径
    }
    
  2. 条件式禁用(推荐) (测了,这种可用!!! nmd太难找了,deepseek+网上一大堆说使用各种增量编译的啥啥啥的都没有用,艹!)

    通过Gradle属性动态控制:

    def disableKapt = project.hasProperty('disableKapt')
    tasks.whenTaskAdded { task ->
        if (disableKapt && task.name.startsWith('kapt')) {
            task.enabled = false
        }
    }
    

    运行时添加参数禁用:./gradlew build -PdisableKapt

3.‌ 本地属性控制‌ (测了,没有用,enabled属性不支持,估计是旧版本的,艹)
在local.properties中添加开关:

# 设置为true时启用kapt
kapt.enabled=false

二、替代方案

  1. 移除kapt插件
    当确认无需注解处理时:

    plugins {
        id 'kotlin-kapt' apply false  // 不自动应用插件
    }
    // 需要时手动应用
    if (project.hasProperty('enableKapt')) {
        apply plugin: 'kotlin-kapt'
    }
    
  2. 增量编译优化
    若仍需kapt但想提速:

    # gradle.properties
    kapt.incremental.apt=true
    kapt.use.worker.api=true
    

三、验证步骤

  1. 执行构建时观察日志是否出现SKIPPED标记
  2. 对比构建时间差异:
    ./gradlew assembleDebug --scan
    

注意:禁用后若出现类找不到错误,需临时启用kapt重新生成代码

引用链接:
1.Could not set unknown property ‘allowInsecureProtocol’ for object of type or - 51CTO博客
2.Android Studio报错:Could not get unknown property ‘kotlin_version‘ - CSDN博客
3.gradle 项目构建的提示 Could not set unknown property ‘sourceCompatibility‘ for root project - CSDN博客
4.解决Could not get unknown property ‘AndroidJunkCodeTask’ for project ':buildSrc的具体操作步骤 - 51CTO博客
5.Android Studio - Android
6.使用Java Gradle构建项目遇到的小坑(一) - CSDN博客
7.Spring5.1.x编译遇到的坑 - CSDN博客
8.Kotlin注解处理器(Kapt)执行失败解决方案 - 百度开发者中心
9.could not get unknown property java for soft - 51CTO博客
10.Could not get unknown property for extension ‘android’ of type - 51CTO博客
11.什么是kapt异常? - 腾讯云
12.Could not set unknown property ‘mainClass’ for task ‘:joobyRun’ of type io.jooby.gradle.RunTask. - GitHub
13.Could not set property: Access denied常见原因及解决方法 - CSDN问答
14.gradle :Could not set unknown property - SegmentFault 思否 - 思否开发者社区
15.解决Gradle构建错误:未知属性’com’的获取问题 - 百度智能云
16.MyBatis报错:Could not set parameters for mapping: ParameterMapping{property=‘id’, mode=IN},参数传递异常如何解决? - CSDN问答
17.Quarkus and Gradle - quarkus.io
18.添加Kapt后,执行org.jetbrains.kotlin.gradle.internal.KaptExecution时出现故障 - 腾讯云
19.kapt构建报错 - 博客园
20.SpringBoot + Kotlin 中的坑 - springboot.io

你可能感兴趣的:(android,gradle)