kapt迁移KSP

2023-04-09  本文已影响0人  KennGM

为什么要迁移

因为kapt的编译速度很慢,而为什么慢?

APT android-apt annotationProcessor kapt KSP科普

开始迁移

  1. 首先Project下的build.gradle kt的版本必须对应ksp的版本
 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10"
 classpath 'com.google.devtools.ksp:symbol-processing-api:1.8.10-1.0.9'
  1. 模块下的build.gradle
plugins {
     id 'com.google.devtools.ksp' version '1.8.10-1.0.9'
}
  1. kapt改成ksp
    kapt 'androidx.room:room-compiler:2.5.0'
dependencies {
    ksp 'androidx.room:room-compiler:2.5.0'
}
  1. 删除kapt
    apply plugin: 'kotlin-kapt'
  2. 删除kapt配置

然后就是结局各种坑

  1. Could not find method ksp() for arguments
    出现这个就是没有下载下来一般是gradlePluginPortal()这个的原因
    或者就是model配置的版本不正确
    settings.gradle
pluginManagement{
  repositories{
      gradlePluginPortal()
      google()
      mavenCentral()
  }
}

dependencyResolutionManagement {
 repositories {
     google()
      mavenCentral()
 }
}

然后很多库要由Transform升级到了AsmClassVisitorFactory才支持KSP 然后你就被迫配升级Gradle8.0


目前支持KSP的库

Kotlin Symbol Processing API | Kotlin Documentation (kotlinlang.org)

Gradle插件对应表
Android studio 兼容表

所以你就必须使用Giraffe版本的Android Studio

以下是具体配置
gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip

project build.gradle

classpath 'com.android.tools.build:gradle:8.1.0-alpha11'

model build.gradle

删除 buildToolsVersion

 id 'com.google.devtools.ksp' version '1.8.10-1.0.9'
 kotlinOptions {
   jvmTarget = JavaVersion.VERSION_17
}

 compileOptions {
        kotlinCompilerExtensionVersion = "1.4.2"
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }

以上完成基本上就能用了
然后是不兼容的库需要处理
aRouter建议迁移到 TheRouter有工具可以一键迁移
目前能用的版本

    cn.therouter:plugin:1.1.3-rc3
    id 'therouter'

    implementation "cn.therouter:router:1.1.3-rc3"
    ksp "cn.therouter:apt:1.1.3-rc3"

greendao建议直接换room

ButterKnife建议使用插件干掉


插件
上一篇 下一篇

猜你喜欢

热点阅读