首页 > 解决方案 > 如果我使用 Moshi,为什么任务 ':app:kaptDebugKotlin' 执行失败?

问题描述

我创建了一个使用匕首、房间、Moshi、Retrofit 等的应用程序......

在我将此行添加到我的模型类之前,它可以正常工作:@JsonClass(generateAdapter = true)

之后我收到此错误:

执行 org.jetbrains.kotlin.gradle.internal.KaptExecution 时发生故障

java.lang.reflect.InvocationTargetException(无错误消息)

我不知道是什么问题,因为我的另一个应用程序使用的是 Moshi,而且效果很好。

我添加了所有的 Moshi 依赖项和插件

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)
}

标签: androidkotlinmoshi

解决方案


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


推荐阅读