Android项目代码库是完整的java,Dagger 2也是用java实现的。我在代码中集成了Kotlin,每次我重建时,Dagger都会出错。(在下面添加)
代码:
构建.gradle(项目)
buildscript {
ext {
kotlin_version = "1.7.10"
}
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.google.gms:google-services:4.3.10'
classpath 'com.android.tools.build:gradle:7.2.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
构建.gradle(应用程序)
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
android {
compileSdkVersion 32
defaultConfig {
applicationId "co.xyz.abc"
minSdkVersion 21
targetSdkVersion 32
versionCode 15
versionName "1.1.1"
multiDexEnabled true
renderscriptTargetApi 19
renderscriptSupportModeEnabled true
vectorDrawables.useSupportLibrary = true
}
buildTypes {
// ...
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
buildFeatures {
viewBinding true
}
}
dependencies {
// AndroidX
// ....
//kotlin
implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.7.10'
implementation 'androidx.core:core-ktx:1.9.0'
// ViewModel
def lifecycle_version = "2.4.1"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
// Dagger2
def daggerVersion = "2.35.1"
api "com.google.dagger:dagger:$daggerVersion"
annotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion"
// Dagger Android
api "com.google.dagger:dagger-android-support:$daggerVersion"
api "com.google.dagger:dagger-android:$daggerVersion"
annotationProcessor "com.google.dagger:dagger-android-processor:$daggerVersion"
// AssistedInject
def assistedInject = '0.6.0'
compileOnly "com.squareup.inject:assisted-inject-annotations-dagger2:$assistedInject"
annotationProcessor "com.squareup.inject:assisted-inject-processor-dagger2:$assistedInject"
androidTestImplementation 'junit:junit:4.13.2'
}
分级属性
android.enableJetifier=true
android.useAndroidX=true
org.gradle.jvmargs=-Xmx1536m
kotlin.code.style=official
Gradle-wrapper.属性
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip
重建后出现错误:
失败:生成失败,出现异常.
- 问题:执行任务":app:checkStagingLocalDevAarMetadata“失败。执行com.android.build.gradle.internal.tasks时出现故障。检查AAR元数据时发现CheckAarMetadataWorkAction 3个问题:
1.依赖项'androidx.core:core-ktx:1.9.0'需要依赖于它的库和应用程序才能针对Android API 33或更高版本进行编译。
:应用程序目前是针对android-32编译的。
此外,建议Android Gradle插件7.2.1的最高编译SDK版本为32。
建议采取的行动:将此项目的Android Gradle插件版本更新为支持33的版本,然后更新此项目以使用至少为33的compileSdkVerion。
请注意,更新库或应用的compileSdkVersion(允许使用较新的API)可以与更新targetSdkVersion(选择应用使用新的运行时行为)和minSdkVersion(确定应用可以安装在哪些设备上)分开进行。
1.依赖项“androidx.core:core:1.9.0”需要依赖于它的库和应用程序才能针对Android API 33或更高版本进行编译。
:应用程序目前是针对android-32编译的。
此外,建议Android Gradle插件7.2.1的最高编译SDK版本为32。
建议采取的行动:将此项目的Android Gradle插件版本更新为支持33的版本,然后更新此项目以使用至少为33的compileSdkVerion。
请注意,更新库或应用的compileSdkVersion(允许使用较新的API)可以与更新targetSdkVersion(选择应用使用新的运行时行为)和minSdkVersion(确定应用可以安装在哪些设备上)分开进行。
1.依赖项'androidx.annotation:annotation-experimental:1.3.0'需要依赖于它的库和应用程序才能针对Android API 33或更高版本进行编译。
:应用程序目前是针对android-32编译的。
此外,建议Android Gradle插件7.2.1的最高编译SDK版本为32。
建议采取的行动:将此项目的Android Gradle插件版本更新为支持33的版本,然后更新此项目以使用至少为33的compileSdkVerion。
请注意,更新库或应用的compileSdkVersion(允许使用较新的API)可以与更新targetSdkVersion(选择应用使用新的运行时行为)和minSdkVersion(确定应用可以安装在哪些设备上)分开进行。
当我将compileSdk更改为33时:
任务:应用程序:使用Javac编译暂存本地开发Java
错误:找不到符号导入公司。abc。客户。di。组件。DaggerABCApplicationComponent;^符号:类匕首ABC应用程序组件位置: Package 公司
现在,如果我将core-ktx版本降级到1.8.0,并将annotationProcessor更改为kapt:
任务:应用程序:kaptStagingLocalDevKotlin /工作室项目/项目/应用程序/源/主/java/co/abc/客户端/di/模块/帐户/辅助模块。java:8:错误:无法找到@模块符号(包括=辅助注射_辅助模块.类)^符号:java:9:1000 - 10000:10000:10000 - 10000:10000:10000:10000 - 10000:10000:10000:10000 - 100000:10000:10000:100000:10000:100000:10000:100000:100000:100000:100000:100000:1000000:1000000:1000000:1000000:100000:10000错误:[ComponentProcessor:MiscError] dagger.internal.codegen.ComponentProcessor无法处理此接口,因为无法解析其所有依赖项。请检查编译错误或生成的代码的循环依赖项。public interface AssistedModule {} ^ /StudioProjects/project/app/src/main/java/co/abc/client/di/components/ABCApplicationComponent.java:40:错误:[ComponentProcessor:MiscError] dagger.internal.codegen.ComponentProcessor无法处理此接口,因为无法解析其所有依赖项。请检查生成的代码是否存在编译错误或循环依赖项。公共接口ABCApplicationComponent extends AndroidInjector { ^
任务:应用程序:kaptStagingLocalDevKotlin失败
失败:生成失败,出现异常.
- 问题:执行任务“:app:kaptStagingLocalDevKotlin”失败。执行org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction java.lang.reflect.InvocationTargetException时出现故障(无错误消息)
这里可能有什么问题?匕首相关的代码应该用Kotlin写吗?当匕首在那里的时候,有没有一个我可以参考的源代码在java代码库中集成kotlin?
到目前为止,我已经尝试了这些没有工作:
1.Kotlin和dagger的升级和降级版本。
1.将所有注解处理器更改为kapt
1.将其添加到gradle - -Pandroid。增量Java编译=false
- android {编译选项.增量= false }
1.重新启动ide
此外,我有另一个项目(java代码库和Kotlin集成设置),这是与这些版本,所以问题似乎不与此。唯一的区别是,匕首不在我的其他项目和一切运行良好。
2条答案
按热度按时间5sxhfpxr1#
尝试在Gradle中使用最新版本的匕首
在应用程序级别
nnsrf1az2#
可能是版本问题
降级你的Kotlin版本,然后检查它