我正在使用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
}
不要使用依赖版本1.0.0-beta1,而是使用1.0.0-beta2,然后尝试编译。
我也在使用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类,用自定义注释注释: 注释定义如下: 我想要的是编写一个注释处理器,有效地使我的控制器像下面的代码一样工作。 我已经能够在运行时通过反射实现这一点,但这大大延长了启动时间。有没有办法只使用注释和自定义注释处理器来实现上述功能?换句话说,我想创建一个注释,将带注释的方法添加到类中,并将任意方法调用添加到现有方法中。 我知道注释处理并不真正支持修改源代码。我有兴趣知道任