首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏半行代码

    Android编译解析-Kapt

    今天分享一下关于 Kotlin 编译里面比较重要的相关步骤:kapt。 在 kotlin 里,需要使用 apt 的话,需要使用 kapt 插件来替代 annotationProcessor 的声明: apply plugin: 'kotlin-kapt' // 依赖 kapt 需要把 kotlin 文件生成一个 Java 编译可以认识的产物。 (kaptClassLoader)) 这里执行的是 org.jetbrains.kotlin.kapt3.base.Kapt对象的 kapt 方法。 相关的内容,我们可以从中相关的内容了解 kapt 的原理。

    2.3K20编辑于 2022-05-10
  • 来自专栏Android机动车

    编译时注解apt kapt

    APT和KAPT APT (Annotation Processor Tool):注解处理器是一个在javac中的,用来编译时扫描和处理的注解的工具。你可以为特定的注解,注册你自己的注解处理器。 KAPT与APT完全相同,只是在Kotlin下的注解处理器。 实例 使用编译时注解+APT+动态生成字节码完成了一个butterKnife最基础的findViewById的功能,适合入门学习。

    2K20发布于 2019-04-25
  • 来自专栏技术小黑屋

    简单几招提速 Kotlin Kapt编译

    应用Kotlin之后,涉及到注解的注解处理器依赖也会由annotationProcessor替换成kapt,和最初应用Kotlin一样,总会让人一种感觉,一番应用Kotlin和Kapt之后,编译耗时更长了 app module下的 build.gradle 文件增加如下代码 1 kapt { 2 useBuildCache = true 3 } 注意: kapt配置和android配置同一层级。 API实现并行执行kapt任务。 /gradlew aDeb -Pkapt.verbose=true | grep KAPT [INFO] Incremental KAPT support is disabled. /gradlew aDeb -Pkapt.verbose=true | grep KAPT [INFO] Incremental KAPT support is disabled.

    2.3K20发布于 2020-01-20
  • 来自专栏逮虾户

    还在用kapt吗? 试试ksp吧 | 项目复盘

    Compared to KAPT, annotation processors that use KSP can run up to 2x faster. 同时ksp相比于kapt接入方式也更清凉,还有就是它本身也支持增量编译等。有兴趣的老哥可以仔细阅读下谷歌对于ksp的介绍,下面是传送门。 因为我们要获取到ksp的依赖,同时ksp和kapt一样,都是通过SPI的机制进行加载的,所以我们本身也要引入一个ksp的注解库。 耗时比较 我对其中一个module同时打开了ksp以及kapt,进行了数据测试。发现ksp的总耗时要比kapt要少。 对于编译速度有要求,同时对kapt当前的表现贼不满意的,就可以尝试下先行开发下kspCompiler了,因为这部分都是类生成,所以ksp和kapt可以同时存在于项目中,进行灰度实验测试编译速度哦。

    1.4K50编辑于 2022-03-06
  • 来自专栏移动开发专栏

    ‘annotationProcessor‘ dependencies won‘t be recognized as kapt annotation processors. Please change

    ‘annotationProcessor’ dependencies won’t be recognized as kapt annotation processors. Please change the configuration name to ‘kapt’ for these artifacts: ‘com.airbnb:deeplinkdispatch-processor 简而言之,需要把annotationProcessor切换为kapt就可以了。 'com.github.bumptech.glide:compiler:4.9.0' 切换后: api 'com.github.bumptech.glide:glide:4.9.0' kapt

    59120编辑于 2022-06-10
  • 来自专栏韩曙亮的移动开发专栏

    【错误记录】Android Studio 编译报错 ( To use data binding annotations in Kotlin, apply the ‘kotlin-kapt‘ plu )

    文章目录 一、报错信息 二、kotlin-kapt 插件简介 三、解决方案 一、报错信息 ---- 在 Android Studio 中开发 DataBinding , 使用 如下代码开发 绑定适配器 ; 在 @BindingAdapter("image") 处报如下错误 : To use data binding annotations in Kotlin, apply the 'kotlin-kapt ' plugin in your module's build.gradle 如下图所示 : 二、kotlin-kapt 插件简介 ---- kapt 英文全称为 " Kotlin Annotation Processing Tool " , Kotlin 语言注解处理工具 ; kotlin-kapt 插件 是 Kotlin 编译器插件的一种 , 其作用是在编译时处理 注解 ; 借助 kotlin-kapt 模块 , 这是 Kotlin 注解模块 ; plugins { id 'kotlin-kapt' } 添加完毕后 , 上述报错信息消失 ;

    97230编辑于 2023-04-06
  • 来自专栏逮虾户

    哔哩哔哩在Hilt组件化的使用 | 技术探索

    同时由于是一个空工程,我们把空工程定义为bundle-kapt,所以整体来说对于编译速度影响会变到最小。让各位大佬看下我们后续的优化结果。 初一开始我以为是kapt没有生成好或者别的什么原因导致的。 image.png 由于Hilt使用了kapt,所以很自然的打开了build/generated/source/kapt文件路径,之后我看了下DaggerHiltApplication_HiltComponents_SingletonC 突然这个时候我想到了一件事哦,也就是说我们的bundle-kapt模块,其实它的实际编译产物会根据接入业务的不同而产生实际的变更。 而bundle-kapt这个模块也很不幸,被当做了一个静态模块,变成了一个远端的产物,之后即时业务添加了再多的注入相关的,因为bundle-kapt没有参与编译,所以注入的能力就出错了。

    1.4K30编辑于 2022-03-06
  • 来自专栏开源实验室

    从零接入 TheRouter

    引入kaptTheRouter的注解处理依赖kapt执行,所以要在项目里面手动引入,否则无法处理注解注:所有的模块都必须引入kapt,否则就有可能造成某些路由表不生成。 我最开始以为简单,就在最底层模块依赖了kapt,结果上层模块路由表都没有生成,查了好久才发现,所有模块都要加。 图片如果报找不到kapt,可能是因为没有引入kotlin-kapt的插件,参考步骤3里面的截图,接入对应的kapt。 如果是纯Java工程,需要用Java的APT处理,APT就不用引入插件了,直接把kapt改成annotationProcessorannotationProcessor "cn.therouter:apt 3.14159265358972F) .navigation(); TheRouter.build("如果没有参数,可以什么都不传").navigation();}KSP接入(可选,用于替代kapt

    1.4K101编辑于 2022-11-24
  • 来自专栏掘金文章

    使用注解自动生成代码

    可以兼容 annotationProcessor,反之不行) // 注意 Kotlin 版本要加上 apply kapy // 或者 plugins { id 'kotlin-kapt Please change the configuration name to 'kapt' for these artifacts: 'xxxx'. 如果你是 kotlin 工程,请使用 kapt {your_porcessor_module} 的方式依赖,且需要依赖 kapt gradle 插件 apply kotlin-kapt 如果你是 Java 工程,请使用 annotationProcessor {your_porcessor_module} 的方式依赖,且不需要加上 apply kotlin-kapt kapt 可以兼容 annotationProcessor {your_porcessor_module} 的方式依赖,且需要依赖 kapt gradle 插件 apply kotlin-kapt,否则如果使用 annotationProcessor {your_porcessor_module

    1.3K00编辑于 2021-12-08
  • 来自专栏Android AGP8.1.0

    Android AGP8.1.0组件化初探

    2.1.4"mmkv = "1.3.1"utilcodex = "1.31.1"arouter = "1.5.2"arouter-compiler = "1.5.2"org-jetbrains-kotlin-kapt "org.jetbrains.kotlin.android", version.ref = "org-jetbrains-kotlin-android" }org-jetbrains-kotlin-kapt = {id = "org.jetbrains.kotlin.kapt",version.ref = "org-jetbrains-kotlin-kapt"}[bundles]2.添加lib-common implementation(libs.appcompat) implementation(libs.material) implementation(libs.arouter) kapt )}implementation(libs.arouter)kapt(libs.arouter.compiler)7.2 添加模块名称配置:kapt { arguments { arg

    99920编辑于 2023-09-02
  • 来自专栏Bennyhuo

    如何让注解处理器支持 Kotlin?

    什么是注解处理器 话说,最近尝试了一下写了个注解处理器,也就是我们常见的 apt,在 Kotlin 当中有个插件叫 kapt,说的就是注解处理器。注解处理器能干什么呢? /tmp/kapt3 下面有个 stubs 目录: ? 这个目录里面会有从你的 Kotlin 源码生成的 Java 源码,注解处理器后面会跟据这些源码去做注解处理,这实际上就是 kapt 的原理啦,如果你之前看到过官方写的介绍 kapt 原理的文章,里面说的 ,所以我们还是要把它添加到运行时依赖的(kapt 下面 implementation 那句)。 kapt3/classes 中(原来是在 build/classes/java/main 中) ?

    2.8K41发布于 2020-02-20
  • 来自专栏Android 开发者

    Kotlin Symbol Processing (KSP) Alpha 版现已发布

    诸如 Room 等注释处理器在 Android 平台无处不在,它们依赖于通过 Kotlin 注释处理工具 (KAPT) 实现的 Java 注释处理兼容性。 但是,KAPT 的运行速度可能会很慢,因为它需要生成中间的 Java 存根,然后 Java 注释处理系统才能对其进行提取。 KSP 提供了一个功能强大且简单的 API,它可以直接解析 Kotlin 代码,因此大大降低了 KAPT 生成存根所带来的构建速度负担。 实际上,利用 Room 库执行的初始基准测试表明,KSP 相比 KAPT 速度提高了 2 倍左右。 也就是说,在同一模块中使用 KAPT 和 KSP 最初可能会降低您的构建速度,因此在 Alpha 版期间,最好在单独的模块中使用 KSP 和 KAPT

    1.3K20发布于 2021-03-05
  • 来自专栏Android 开发者

    使用 Kotlin Symbol Processing 1.0 缩短 Kotlin 构建时间

    其与 Kotlin 注解处理工具 (KAPT) 的功能相似,但速度提高了 2 倍,同时还可以直接访问 Kotlin 语言结构并支持多个平台目标。 为 Room 添加 KSP 支持不仅能提升编译速度,还能让 Room 更好地理解 Kotlin 代码,比如使用 KAPT 无法实现的泛型的可空性。 Kotlin 注释处理工具 (KAPT) 通过与 Java 注释处理基础架构相结合,让大部分 Java 语言注释处理器能够在 Kotlin 中开箱即用。 为此,KAPT 将 Kotlin 代码编译进 Java 存根,这些存根中保留了 Java 注释处理器关注的信息。 最后 通过使用 KSP 1.0 版,您可以发现 Kotlin 项目的构建速度得到了提升,因为您将不再使用基于 KAPT 的库。

    4.3K10编辑于 2022-03-10
  • 来自专栏终身开发者

    100行代码拆解EventBus核心逻辑(二)

    apply plugin: 'kotlin-kapt' // ensure kapt plugin is applied dependencies { implementation 'org.greenrobot :eventbus:3.1.1' kapt 'org.greenrobot:eventbus-annotation-processor:3.1.1' } kapt { arguments arg('eventBusIndex', 'com.github.easybus.MyEventBusIndex') } } 由于我的 Demo 使用 Kotlin 编写,所以配置的是 kapt 详细配置文档可以参考EventBus文档 通过 AS 编译之后,就会在 build/generated/source/kapt/debug/com/github/easybus目录下生成索引文件 MyEventBusIndex 这个文件名称就是在 kapt 中配置的。

    55510发布于 2019-12-17
  • 来自专栏Gnod

    拥抱Kotlin之引入Dagger2

    implementation 'com.google.dagger:dagger-android-support:2.26' implementation 'com.google.dagger:dagger:2.26' kapt 'com.google.dagger:dagger-compiler:2.26' kapt 'com.google.dagger:dagger-android-processor:2.26' 并且应用

    46910编辑于 2022-04-07
  • 来自专栏韩曙亮的移动开发专栏

    【Kotlin】Kotlin 中使用 ButterKnife ( 仅用于适配 Kotlin 语言 | 不推荐新项目使用 )

    中进行如下配置 ; /** androidx 依赖与老版本的 butterknife 冲突 */ implementation 'com.jakewharton:butterknife:10.0.0' kapt com.jakewharton:butterknife-compiler:10.0.0' ② 应用插件 : 在 Module 下的 build.gradle 顶部添加如下配置 ; apply plugin: 'kotlin-kapt /** androidx 依赖与老版本的 butterknife 冲突 */ implementation 'com.jakewharton:butterknife:10.0.0' kapt /** androidx 依赖与老版本的 butterknife 冲突 */ implementation 'com.jakewharton:butterknife:8.8.1' kapt /** androidx 依赖与老版本的 butterknife 冲突 */ implementation 'com.jakewharton:butterknife:10.0.0' kapt

    3.1K30编辑于 2023-03-27
  • 来自专栏Android技术分享

    Kotlin 新版来了,支持跨平台!

    版本更新的主要范围为 Kotlin/Native、KAPT 的性能优化以及对 IntelliJ IDEA 的支持优化。 KAPT 支持注解处理器增量编译 KAPT 已经支持注解处理器增量编译,该特性仍处灰度实验阶段,你可以通过在gradle.properties中添加以下配置来启用它: kapt.incremental.apt KAPT: 其他提升 引入了两个配置来提升编译性能。其一是使用 Gradle workers: 这个版本也对它做了优化。

    1.5K20发布于 2019-05-17
  • 来自专栏韩曙亮的移动开发专栏

    【Android NDK 开发】Kotlin 语言中使用 NDK ( 创建支持 Kotlin 的 NDK 项目 | Kotlin 语言中使用 NDK 要点 | 代码示例 )

    build.gradle 中 , kotlin-android 是必须配置的 , kotlin-android-extensions 是扩展 , 选择性配置 , 配置了之后 , 可以很方便地使用视图绑定 ; kotlin-kapt 'com.android.application' id 'kotlin-android' id 'kotlin-android-extensions' id 'kotlin-kapt 'com.android.application' id 'kotlin-android' id 'kotlin-android-extensions' id 'kotlin-kapt

    1.8K00编辑于 2023-03-28
  • 来自专栏韩曙亮的移动开发专栏

    【Jetpack】DataBinding 架构组件 ⑤ ( 数据模型与视图双向绑定 | BaseObservable 实现双向绑定 | ObservableField 实现双向绑定 )

    // 启用 DataBinding dataBinding { enabled = true } } } 2、导入 kotlin-kapt 插件 凡是 在 Kotlin 中使用到注解的情况下 , 都需要导入 kotlin-kapt 插件 ; 在 Module 下的 build.gradle 构建脚本中 , 导入 kotlin-kapt 插件 ; plugins { id 'kotlin-kapt' } 3、数据模型类 数据类中 , 主要 封装 数据模型 ; package kim.hsl.databinding_demo class } } BR 类是 BaseObservable 子类中由 @Bindable 注解修饰的函数生成 ; BR 类生成位置在 app\build\generated\source\kapt

    2K30编辑于 2023-04-24
  • 来自专栏向治洪

    使用Gradle方式构建Kotlin缓存

    缓存 kapt 任务 目前即使使用–build-cache,针对kapt的缓存也默认是禁用的,因为 Gradle 还没有一种方法来映射注解处理器的输入和输出。 你可以通过在kapt配置中将useBuildCache设置为true来明确启用针对 Kotlin 注解处理任务的构建缓存。 kapt { useBuildCache = true } 参考: 你可以通过下列资源来了解更多关于利用 Gradle 构建缓存的信息: https://docs.gradle.org/current

    96830编辑于 2022-11-30
领券