【问题标题】:how to configure ksp in my android gradle groovy dsl build files如何在我的 android gradle groovy dsl 构建文件中配置 ksp
【发布时间】:2022-01-28 18:14:16
【问题描述】:

我正在研究我当前的 android 项目中的 io.arrow.kt 函数式编程库。

我在配置使用 ksp 生成源代码的光学模块时遇到困难

我的项目gradle 与此类似

buildscript {
    ext.kotlin_version = "1.6.10"
    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:7.1.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.dagger:hilt-android-gradle-plugin:2.40.5'
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
        maven { url 'https://jitpack.io' }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

与我的 android 子模块类似

plugins {
    id "com.android.library"
    id "com.google.devtools.ksp" version "1.6.10-1.0.2"
    id "kotlin-android"
    id "kotlin-kapt"
    id 'org.jetbrains.kotlin.plugin.serialization' version '1.4.20'
    id 'dagger.hilt.android.plugin'
}

android {
    compileSdkVersion 32

    defaultConfig {
        minSdkVersion 26
        targetSdkVersion 32

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        consumerProguardFiles "consumer-rules.pro"

...

dependencies {

    api(platform("io.arrow-kt:arrow-stack:1.0.6-alpha.1"))
    api("io.arrow-kt:arrow-core")
    api("io.arrow-kt:arrow-fx-coroutines")
    api("io.arrow-kt:arrow-fx-stm")
    api("io.arrow-kt:arrow-optics")

    api "com.google.devtools.ksp:symbol-processing-api:1.6.10-1.0.2"
    ksp "io.arrow-kt:arrow-optics-ksp-plugin:1.0.6-alpha.1"

我的 android kotlin 代码中的光学代码无法编译

import arrow.optics.dsl.*
import arrow.optics.Optional
import arrow.optics.optics

@optics
data class Street(val number: Int, val name: String) {
    companion object
}

@optics
data class Address(val city: String, val street: Street) {
    companion object
}

@optics
data class Company(val name: String, val address: Address) {
    companion object
}

@optics
data class Employee(val name: String, val company: Company?) {
    companion object
}

fun what() {
    val john = Employee("John Doe", Company("Kategory", Address("Functional city", Street(42, "lambda street"))))
//
//    val optional: Optional<Employee, String> = Employee.company.address.street.name
//
//    optional.modify(john, String::toUpperCase)
}

因为注释掉的代码中没有找到公司

ksp 可以在安卓上运行吗? 我在我的 gradle 构建文件中犯了什么错误?

【问题讨论】:

    标签: android arrow-kt ksp


    【解决方案1】:

    我找到的解决方案是降级箭头 gradle deps 如下所示

    implementation(platform("io.arrow-kt:arrow-stack:1.0.3-alpha.1"))
    api("io.arrow-kt:arrow-core")
    api("io.arrow-kt:arrow-fx-coroutines")
    api("io.arrow-kt:arrow-fx-stm")
    api 'io.arrow-kt:arrow-optics'
    
    api "com.google.devtools.ksp:symbol-processing-api:1.6.10-1.0.2"
    

    我也必须添加

    sourceSets {
        main {
            java {
                srcDir "${buildDir.absolutePath}/generated/ksp/"
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-12-09
      • 1970-01-01
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 2022-10-15
      • 2022-07-23
      • 1970-01-01
      • 2019-04-06
      相关资源
      最近更新 更多