如果我使用莫希,为什么任务“:app:kaptagglgKotlin”执行失败?

ccgok5k5  于 2023-11-21  发布在  Kotlin
关注(0)|答案(4)|浏览(134)

Hy
我创建了一个应用程序,使用匕首,房间,莫希,改装等.
它可以正常工作,直到我将这一行添加到Model类中:@JsonClass(generateAdapter = true)
在此之后,我得到这个错误:
执行org.jetbrains.Kotlin.gradle.internal.KaptExecution时出错
java.lang.reflect. ExceptionTargetException(无错误消息)
我不知道是什么问题,因为我的另一个应用程序是使用莫希,它的工作很好。
我添加了所有的莫希依赖项和插件

My gradle settings:
buildTypes {
        all {
            buildConfigField 'String', 'API_URL', "\"$apiurl\""

            lintOptions {
                abortOnError true
                //ignoreWarnings true
                fatal 'MissingTranslation', 'ExtraTranslation'
            }

        }

        debug {
            //applicationIdSuffix ".debug"
            ext.enableCrashlytics = false
            ext.alwaysUpdateBuildId = false
            multiDexEnabled true
        }

        staged {
            signingConfig signingConfigs.debug
            //applicationIdSuffix ".staged"
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro', getDefaultProguardFile('proguard-android-optimize.txt')

            matchingFallbacks = ['debug']
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro', getDefaultProguardFile('proguard-android-optimize.txt')
        }
    }

ApiModule:

  @Provides
    @Singleton
    fun provideMoshi(): Moshi {
        return Moshi.Builder()
            .add(DateConverter())
            .add(BigDecimalConverer())
            .add(KotlinJsonAdapterFactory())
            .build()
    }

@Provides
@Singleton
fun provideAuthApi(@Named("base_url") url: String, moshi: Moshi): AuthApi {

    var builder = OkHttpClient.Builder()
    builder = BuildTypeInitializations.setupInterceptor(builder)

    return Retrofit.Builder()
        .baseUrl(url)
        .addCallAdapterFactory(CoroutineCallAdapterFactory())
        .addConverterFactory(MoshiConverterFactory.create(moshi))
        .client(builder.build())
        .build()
        .create(AuthApi::class.java)
}

字符串

uklbhaso

uklbhaso1#

最后,我解决了。我使用了1.8.x版本的莫希,当我更新到1.11.0时,错误就消失了

hsgswve4

hsgswve42#

我有同样的问题,但对我来说,解决方案是添加implementation "com.squareup.moshi:moshi-adapters:$1.12.0"build.gradle文件

tmb3ates

tmb3ates3#

我遇到了一个类似的问题,当处理Room实体时,InvocationTargetExceptionkapt抛出,说了一些关于不存在的类型的事情。经过长时间的调查,我发现包含实体的库也使用了莫希,并用@Json注解标记了一个实体,但由于使用此库的应用程序没有导入莫希,kapt无法解决导致错误的类型。解决方案是通过“API”而不是“implementation”在库中导入莫希。或者通过“实现”在客户端应用程序中导入莫希。

jvidinwx

jvidinwx4#

对我来说,只有从kapt迁移到ksp才有帮助
这里如何升级https://developer.android.com/build/migrate-to-ksp#kts
将版本更改为ksp https://github.com/google/ksp/releases的最新发布版本
您可能还需要更新您的Kotlin插件版本,在这里您可以找到最新的https://kotlinlang.org/docs/releases.html#release-details

相关问题