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

迁移到 androidX 后改造接口中的卡普特非存在类异常

左丘兴生
2023-03-14

我正在为我的应用程序使用改装DaggerGlide。迁移到androidX后,kapt,与Dagger和Glide注释处理器完美配合。然而,当我运行应用程序时,我在ApiService接口中得到了Kotlin编译器异常,在那里我使用了改型注释

ApiService.kt

import retrofit2.Call
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import retrofit2.http.GET
import retrofit2.http.POST
import retrofit2.http.Path
import retrofit2.http.Query

interface ApiService {

    @GET("/popular")
    fun getPopular(@Query("lang") lang: String = LANGUAGE): Call<...>

...

    companion object {
        val STATUS_OK = "ok"
        var LANGUAGE = "en"

        fun create(): ApiService {
            val retrofit = Retrofit.Builder()
                    .addConverterFactory(GsonConverterFactory.create())
                    .baseUrl(...)
                    .build()

            return retrofit.create(ApiService::class.java);
        }
    }

build.gradle

    apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

apply plugin: 'kotlin-kapt'

android {
    compileSdkVersion 'android-P'
    buildToolsVersion '28.0.0-rc2'
    defaultConfig {
        applicationId "..."
        minSdkVersion 17
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.google.android:flexbox:0.3.2'
    implementation 'com.google.dagger:dagger:2.16'
    kapt 'com.google.dagger:dagger-compiler:2.16'
    implementation "androidx.lifecycle:lifecycle-runtime:2.0.0-alpha1"
    implementation "androidx.lifecycle:lifecycle-extensions:2.0.0-alpha1"
    implementation 'com.github.rubensousa:gravitysnaphelper:1.5'
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    implementation 'com.github.bumptech.glide:glide:4.7.1'
    kapt 'com.github.bumptech.glide:compiler:4.7.1'
    implementation 'de.hdodenhof:circleimageview:2.2.0'
    implementation 'androidx.appcompat:appcompat:1.0.0-alpha1'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.0'
    implementation 'com.google.android.material:material:1.0.0-alpha1'
    implementation 'com.squareup.retrofit2:retrofit:2.4.0'
    implementation "com.squareup.retrofit2:converter-gson:2.4.0"
    implementation 'androidx.cardview:cardview:1.0.0-alpha1'
    implementation 'androidx.recyclerview:recyclerview:1.0.0-alpha1'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.0-alpha3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha3'
}

例外情况:

不存在的类不能转换为批注@error。不存在类()

我试过根据文件使用这个

kapt {
    correctErrorTypes = true
}

但这导致了另一个例外

java.lang.ClassCastException:

我认为,第一个异常的出现是因为在用kapt插件更新gradle和android studio之后,它突然开始用NonExistentClass声明未知的翻新Java注释(没有任何kapt或annotationProcessor用于翻新,正如你在build.gradle中看到的)。我不知道第二个错误是什么意思。

共有1个答案

裴存
2023-03-14

我发现gradle.properties将android.enableJetifier设置为false可以修复编译错误。我在问题跟踪器中提交了一个错误。

 类似资料:
  • 我正试图迁移到AndroidX,我们在我们的项目中使用这个库。然而,这目前在我们的项目中引起了一个问题: 无法解析对“module @ build type/compile class path”的依赖项:无法使用转换JetifyTransform转换文件“localytics-1.3.0.aar”以匹配属性{artifactType=processed-aar} 删除库会使此问题消失。在这个库被

  • 问题内容: 我正在尝试迁移到androidx。我在Android Studio中使用了迁移工具。当我执行此操作时,我在运行应用程序时得到以下堆栈跟踪。 例外是正确的。android.support.v4.content.FileProvider在我的应用中不存在。但是androidx.core.content.FileProvider包含在我的应用程序中。最大的问题是为什么它要加载旧版本的File

  • 我刚刚通过Android Studio菜单选项Refactor->Refactor to androidx迁移到androidx 我得到以下错误: Android.View.InflateException:二进制XML文件行#2:二进制XML文件行#2:膨胀类AndroidX.ConstraintLayout.ConstraintLayout时出错 知道吗? 堆栈跟踪:

  • 本文向大家介绍Android AndroidX的迁移,包括了Android AndroidX的迁移的使用技巧和注意事项,需要的朋友参考一下 1. 前言 AndroidX replaces the original support library APIs with packages in the androidx namespace. Only the package and Maven arti

  • 当我尝试启动我的应用程序时,我的 MainActivity 在 oncreate() 方法中的“setContentView(R.layout.activity_main);” 中抛出此错误: 这个错误出现在迁移到androidx之后,经过进一步检查,我注意到Bottomnavigationview类中的导入语句已经过时(没有androidx格式,而是旧格式)。Bottomnavigationvi

  • 我的项目在我迁移到AndroidX后无法构建,错误日志显示< code > error:package Android . support . annotation不存在在一些类中,但是这些类不能被编辑,当我编辑这些类并重新构建时,这些将被恢复。当打开这些类时会显示< code >文件是在" build "文件夹下生成的,不应该被编辑。并且当编辑这些类时会显示< code >生成的源文件不应该被编