当前位置: 首页 > 知识库问答 >
问题:

静态编程语言注释处理器AutoService

都沈浪
2023-03-14

我有以下问题:-创建了几个模块来实现组件类,并用@AutoService(Component::class)-我的Android应用程序正在使用ServiceLoader检索这些类。但是由于某种原因,kapt没有在META-INF/services/…中生成文件

我的模块格雷德尔。文件:

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.2"


    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

        javaCompileOptions {
            annotationProcessorOptions {
                includeCompileClasspath = true
            }
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.android.support:design:26.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'

    implementation project(':common-dependencies')
    implementation project(':component')
    compileOnly 'com.google.auto.service:auto-service:1.0-rc3'
    kapt "com.google.auto.service:auto-service:1.0-rc3"

    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
}

我的应用程序构建。渐变文件:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.2"
    defaultConfig {
        applicationId "com.test.sampleapp"
        minSdkVersion 19
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

        javaCompileOptions {
            annotationProcessorOptions {
                includeCompileClasspath = true
            }
        }
    }

    flavorDimensions 'required-notused'

    productFlavors {
        brandA {
            resValue "string", "app_name", "Brand A"
        }
        brandB {
            resValue "string", "app_name", "Brand B"
        }

        all { applicationIdSuffix ".${it.name.toLowerCase()}" }
    }

    buildTypes {
        debug

        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.android.support:design:26.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'

    implementation project(':common-dependencies')
    implementation project(':component')

    brandAImplementation project(':city-picker')
    brandAImplementation project(':profile')
    brandAImplementation project(':matches')
    brandAImplementation project(':chat')

    brandBImplementation project(':city-picker')
    brandBImplementation project(':chat')

    compileOnly 'com.google.auto.service:auto-service:1.0-rc3'
    kapt "com.google.auto.service:auto-service:1.0-rc3"
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
}

repositories {
    mavenCentral()
}

我不知道为什么,但是kapt基本上没有生成这些文件。如果我使用Java类,它会立即生成它。猜猜为什么?


共有1个答案

赫连华皓
2023-03-14

你可以试试这个

kapt{更正错误类型=true}

https://kotlinlang.org/docs/reference/kapt.html

 类似资料:
  • 我使用以下方法将KSP与Room结合使用: 这确实有效。但是,当我尝试运行它时,我会收到此警告 [ksp]我的数据库。kt:11:Schema导出目录未提供给注释处理器,因此无法导出架构。您可以提供注释处理器参数或将exportSchema设置为false。 为此:在使用KSP时,如何提供注释处理器参数?

  • 我试图将@Age constraint的实现从java复制到Kotlin,我复制了Java代码库,并使用IDE将其转换为Kotlin代码。 Java代码 Intellij生成的对应静态编程语言代码 Kotlin代码导致错误声明“注释类中不允许成员”。将注释类List从Age中移出是否可以解决此问题?还有其他方法可以在另一个类中实现注释类吗? 非常感谢。

  • 如何为方法/类生成注释?只需输入: 推入似乎在IntelliJ IDEA 2016.1.3中不起作用 看起来Dokka已经取代了KDoc,但为什么IntelliJ中没有支持?还是我错过了什么? 澄清:当输入/**enter时,会生成: 但是我想知道为什么没有添加@参数和其他的生成(就像IntelliJ为Java所做的那样)。这些注释也用于记录静态编程语言代码(https://kotlinlang.

  • 当结合使用SpringWebFlux和Kotlin协同程序时,我很难理解一个简单的RESTfulWS响应处理场景。假设我们在REST控制器中有一个简单的WS方法,该方法可能返回大量(数百万)响应“things”: 这正如人们所期望的那样:只要使用流媒体类型(例如“application/x-ndjson”),结果就会流式传输到客户端。在更复杂的服务调用中,也考虑了错误/警告的可能性,我希望返回以下

  • 上下文:我想在Spring Boot中创建一个自定义注释,并为处理添加额外的逻辑。我举了一个注释非常简单的例子,但我希望有几个这样的注释具有更细粒度的控制。 解决这个问题有几种方法: 创建过滤器 创建拦截器 使用自定义处理创建注释 我必须使用最新的一个,因为上面两个不适用于我的用例。 问题: 我在静态编程语言中有一个自定义注释,我希望它被注册并在运行时被检查。 REST控制器如下: 其思想是每个方

  • 暴露0.27.1是否能够翻译以下SQL语句? 下面是我尝试的内容,但不幸的是,子查询独立于查询的其余部分工作。 此外,如果可能的话,那么如何使用别名从ResultRow获取结果?在这个示例之后,解决方案似乎是将整个子查询存储在单个变量中,并使用一个alias()方法调用,但这看起来很难看。有没有更好的方法?