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

静态编程语言注释处理器在使用带有Android Studio 3.0 beta7的Room时给出编译时错误

伊铭
2023-03-14

我正在使用Android Studio 3.0 Beta 7、Kotlin 1.4-2和Room Persistence Library 1.0.0-beta1编译Android项目。

这是我的Gradle文件的一部分,我在其中添加了房间依赖性:

implementation "android.arch.persistence.room:runtime:1.0.0-beta1"
kapt "android.arch.persistence.room:compiler:1.0.0-beta1"

编译时出现以下错误:

警告:警告:支持annotation processor“android”的源版本“RELEASE_7”。拱坚持不懈房间RoomProcessor“小于源“1.8”

在将stacktrace/debug标志添加到编译选项后,我发现了以下错误:

错误:组织。喷气式飞机。科特林。kapt3.诊断。Kaptror:注释处理时出错

10: 08:03.727[ERROR][org.gradle.internal.buildevents.BuildExceptionReporter]10:08:03.727[ERROR][org.gradle.internal.buildevents.BuildExceptionReporter]失败:生成失败,出现异常。10: 08:03.727[ERROR][org.gradle.internal.buildevents.BuildExceptionReporter]10:08:03.727[ERROR][org.gradle.internal.buildevents.BuildExceptionReporter]*出了什么问题:10:08:03.727[ERROR][org.gradle.internal.buildevents.BuildExceptionReporter]任务执行失败:app:kaptDebugKotlin。10: 08:03.727[错误][org.gradle.internal.buildevents.BuildExceptionReporter]

清理/重建没有帮助。是什么导致了这个错误?临时解决方案似乎是用标准的“注释处理器”替换“kapt”,重建,然后用“kapt”再次构建。但是在项目进一步更改后,错误再次出现。

[编辑]

我的Gradle文件(应用模块):

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.mydomain.myapp"
        minSdkVersion 19
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

androidExtensions {
    experimental = true
}

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'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.1', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    implementation"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"

    // Anko Commons
    implementation "org.jetbrains.anko:anko-commons:$anko_version"

    // Timber logging
    implementation "com.jakewharton.timber:timber:$timber_version"

    // Architecture components - Lifecycle
    implementation "android.arch.lifecycle:extensions:$arch_version"
    kapt "android.arch.lifecycle:compiler:$arch_version"

    // Architecture components - Room ORM
    implementation "android.arch.persistence.room:runtime:$arch_version"
    kapt "android.arch.persistence.room:compiler:$arch_version"

    // Retrofit
    implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
    implementation "com.squareup.retrofit2:converter-gson:$retrofit_version"

    // Picasso
    implementation "com.squareup.picasso:picasso:$picasso_version"
}

Gradle(项目模块):

buildscript {
    ext.kotlin_version = '1.1.4-2'
    ext.anko_version = '0.10.1'
    ext.timber_version = '4.5.1'
    ext.retrofit_version = '2.3.0'
    ext.picasso_version = '2.5.2'
    ext.constraint_layout_version = '1.0.2'
    ext.support_library_version = '26.1.0'
    ext.arch_version = '1.0.0-beta1'
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0-beta7'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

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

共有2个答案

昝涛
2023-03-14

不要使用依赖版本1.0.0-beta1,而是使用1.0.0-beta2,然后尝试编译。

柯建业
2023-03-14

我也在使用kapt插件和room,并且有一个类似的错误。在我的例子中,我通过从应用程序构建中移动this line应用插件:“kotlin kapt”来解决这个问题。渐变到顶部构建。gradle,在buildscript{}块之外,则错误消失。我在这里找到的

 类似资料:
  • 我有以下问题:-创建了几个模块来实现类,并用-我的Android应用程序正在使用检索这些类。但是由于某种原因,没有在

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

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

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

  • 如何将注释实例传递给函数? 我想调用java方法

  • 我有以下Spring Boot类,用自定义注释注释: 注释定义如下: 我想要的是编写一个注释处理器,有效地使我的控制器像下面的代码一样工作。 我已经能够在运行时通过反射实现这一点,但这大大延长了启动时间。有没有办法只使用注释和自定义注释处理器来实现上述功能?换句话说,我想创建一个注释,将带注释的方法添加到类中,并将任意方法调用添加到现有方法中。 我知道注释处理并不真正支持修改源代码。我有兴趣知道任