【问题标题】:How to fix cannot transform kotlin-android-extensions-1.3.71.jar' using Jetifier error?如何修复无法使用 Jetifier 转换 kotlin-android-extensions-1.3.71.jar' 错误?
【发布时间】:2020-07-15 01:29:57
【问题描述】:

任务“:app:mergeDebugJavaResource”执行失败。

无法解析配置“:app:debugRuntimeClasspath”的所有文件。 无法转换工件 'kotlin-android-extensions.jar (org.jetbrains.kotlin:kotlin-android-extensions:1.3.71)' 以匹配属性 {artifactType=android-java-res, org.gradle.libraryelements=jar, org.gradle.usage=java-runtime}。 JetifyTransform 执行失败:C:\Users\user.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-android-extensions\1.3.71\ea43e0e563e1915ea845a482fd6f31a948386ab9\kotlin-android-extensions-1.3。 71.jar。 无法转换 'C:\Users\user.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-android-extensions\1.3.71\ea43e0e563e1915ea845a482fd6f31a948386ab9\kotlin-android-extensions-1.3.71 .jar' 使用 Jetifier。原因:给定的工件包含带有包引用“android.support.v4”的字符串文字,无法安全地重写。注解处理器等使用反射的库需要手动更新以添加对androidx的支持..

应用构建.gradle

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-android-extensions'
android {
    compileSdkVersion 29
    buildToolsVersion "29.0.3"
    defaultConfig {
        applicationId "com.appname"
        minSdkVersion 21
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

    //to avoid retrofit client error
    compileOptions {
        targetCompatibility = JavaVersion.VERSION_1_8
        sourceCompatibility = JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_1_8
    }
}
androidExtensions {
    experimental = true
}

dependencies {
    ext.kotlin_version = '1.3.71'
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    implementation "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    implementation 'com.google.firebase:firebase-auth:19.1.0'
    def lifecycle_version = '2.2.0'
    implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
    // Optional : Kotlin extension (https://d.android.com/kotlin/ktx)
    implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
    implementation 'androidx.core:core-ktx:1.2.0'
    def appcompat_version = "1.1.0"

    implementation "androidx.appcompat:appcompat:$appcompat_version"
    // For loading and tinting drawables on older versions of the platform
    implementation "androidx.appcompat:appcompat-resources:$appcompat_version"
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation "androidx.viewpager2:viewpager2:1.0.0"
    implementation "androidx.legacy:legacy-support-v4:1.0.0"
    implementation 'com.google.android.gms:play-services-maps:17.0.0'

    //GIF
    implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.19'

    ext {
        retrofit_version = '2.8.1'
    }
    implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
    implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofit_version"
    implementation "com.squareup.retrofit2:converter-gson:$retrofit_version"
    implementation 'io.reactivex.rxjava2:rxjava:2.2.19'
    implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
    implementation("io.reactivex.rxjava2:rxkotlin:2.4.0")
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.3'

    implementation 'com.github.bumptech.glide:glide:4.11.0'
    // Skip this if you don't want to use integration libraries or configure Glide.
    kapt 'com.github.bumptech.glide:compiler:4.11.0'
    implementation 'com.google.android.gms:play-services-location:17.0.0'

    def room_version = "2.2.5"

    implementation "androidx.room:room-runtime:$room_version"
    kapt "androidx.room:room-compiler:$room_version" // For Kotlin use kapt instead of annotationProcessor

    // optional - Kotlin Extensions and Coroutines support for Room
    implementation "androidx.room:room-ktx:$room_version"

    // optional - RxJava support for Room
    implementation "androidx.room:room-rxjava2:$room_version"
}
repositories {
    mavenCentral()
}
apply plugin: 'com.google.gms.google-services'

gradle.properties

org.gradle.jvmargs=-Xmx1536m
org.gradle.parallel=true
android.useAndroidX=true
android.enableJetifier=true
kotlin.code.style=official
kotlin.caching.enabled=false

项目 gradle.build

buildscript {
    ext.kotlin_version = '1.3.71'
    repositories {
        google()
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 
        classpath 'com.google.gms:google-services:4.3.2'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

【问题讨论】:

  • 对我来说,最好的解决方案是使用 ext.kotlin_version = '1.3.61'

标签: android kotlin androidx


【解决方案1】:

其实kotlin-android-extensions是一个Gradle插件,不是代码依赖。

尝试删除并删除这些:

implementation files('jetifier-processor-1.0.0-beta09')
implementation files('jetifier-core-1.0.0-beta09')

而是将这些行添加到文件gradle.properties

android.useAndroidX=true
android.enableJetifier=true

在尝试构建之前清空目录C:\Users\user.gradle\caches

【讨论】:

  • 我们为什么不改用org.jetbrains.kotlin.android.extensions
【解决方案2】:

更改了 gradle.properties

org.gradle.jvmargs=-Xmx1536m
org.gradle.parallel=true
android.useAndroidX=true
android.enableJetifier=false

项目构建.gradle

buildscript {
    ext.kotlin_version = '1.3.71'
    repositories {
        google()
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.gms:google-services:4.3.2'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

和应用程序 bild.gradle

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-android-extensions'
android {
    compileSdkVersion 29
    buildToolsVersion "29.0.3"
    defaultConfig {
        applicationId "com.appname"
        minSdkVersion 21
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

    //to avoid retrofit client error
    compileOptions {
        targetCompatibility = JavaVersion.VERSION_1_8
        sourceCompatibility = JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_1_8
    }
}
androidExtensions {
    experimental = true
}

dependencies {
    ext.kotlin_version = '1.3.71'
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"

    implementation "androidx.annotation:annotation:1.1.0"
    // To use the Java-compatible @Experimental API annotation
    implementation "androidx.annotation:annotation-experimental:1.0.0"


    def appcompat_version = "1.1.0"

    implementation "androidx.appcompat:appcompat:$appcompat_version"
    // For loading and tinting drawables on older versions of the platform
    implementation "androidx.appcompat:appcompat-resources:$appcompat_version"
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation "androidx.viewpager2:viewpager2:1.0.0"
    implementation 'com.google.android.gms:play-services-maps:17.0.0'

    //GIF
    implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.19'

    ext {
        retrofit_version = '2.8.1'
    }
    implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
    implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofit_version"
    implementation "com.squareup.retrofit2:converter-gson:$retrofit_version"
    implementation 'io.reactivex.rxjava2:rxjava:2.2.19'
    implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
    implementation("io.reactivex.rxjava2:rxkotlin:2.4.0")
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.3'

    implementation 'com.github.bumptech.glide:glide:4.11.0'
    implementation 'com.google.android.gms:play-services-location:17.0.0'

    def room_version = "2.2.5"

    implementation "androidx.room:room-runtime:$room_version"
    kapt "androidx.room:room-compiler:$room_version"
}
repositories {
    mavenCentral()
}
apply plugin: 'com.google.gms.google-services'

【讨论】:

    【解决方案3】:

    在我的情况下,删除该行

        implementation "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    

    来自 app build.gradle 解决了这个问题。通过在项目 build.gradle 和 apply plugin: 'kotlin-android-extensions' 中添加 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 似乎可以使用“Kotlin Android 扩展”功能。

    以下将是一个相关问题(但还没有答案):

    Failed to transform artifact 'kotlin-android-extensions.jar

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-15
      • 2019-10-12
      • 1970-01-01
      • 1970-01-01
      • 2020-03-29
      相关资源
      最近更新 更多