Gagal menyelesaikan variabel '$ {animal.sniffer.version}' saat bermigrasi ke AndroidX

141

Saya menggunakan Android Studio 3.2 Beta5 untuk memigrasi proyek saya ke AndroidX . Ketika saya membangun kembali aplikasi saya, saya mendapat kesalahan ini:

EROR: [TAG] Gagal menyelesaikan variabel '$ {animal.sniffer.version}'

EROR: [TAG] Gagal menyelesaikan variabel '$ {junit.version}'

Pembersihan penuh & pembangunan kembali tidak berfungsi! Ada yang tahu cara memperbaikinya?


gradle.properties

android.enableJetifier=true
android.useAndroidX=true

build.gradle

buildscript {
    repositories {
        google()
        jcenter()
        mavenCentral()
        maven { url 'https://maven.fabric.io/public' }
        maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.0-beta05'

        classpath 'com.google.gms:google-services:4.0.1'
        classpath "io.realm:realm-gradle-plugin:5.3.1"
        classpath 'io.fabric.tools:gradle:1.25.4'
        classpath 'com.google.firebase:firebase-plugins:1.1.5'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
        maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
    }
}

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

app / build.gradle

apply plugin: 'com.android.application'
apply plugin: 'realm-android'
apply plugin: 'io.fabric'
apply plugin: 'com.google.firebase.firebase-perf'

android {
    compileSdkVersion 28
    buildToolsVersion "28.0.0"
    defaultConfig {
        applicationId "com.iceteaviet.fastfoodfinder"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
        }
    }
    aaptOptions {
        cruncherEnabled = false
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    testImplementation 'junit:junit:4.12'

    implementation 'com.jakewharton:butterknife:9.0.0-SNAPSHOT'

    implementation 'androidx.appcompat:appcompat:1.0.0-rc01'
    implementation 'com.google.android.material:material:1.0.0-rc01'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0-rc01'
    implementation 'androidx.cardview:cardview:1.0.0-rc01'

    implementation 'com.google.maps.android:android-maps-utils:0.5'
    implementation 'com.google.android.gms:play-services-maps:15.0.1'
    implementation 'com.google.android.gms:play-services-location:15.0.1'
    implementation 'com.google.firebase:firebase-core:16.0.1'
    implementation 'com.google.firebase:firebase-database:16.0.1'
    implementation 'com.google.firebase:firebase-auth:16.0.1'
    implementation 'com.google.android.gms:play-services-auth:15.0.1'

    implementation 'com.github.bumptech.glide:glide:4.7.1'

    implementation 'com.google.code.gson:gson:2.8.5'
    implementation 'com.squareup.retrofit2:retrofit:2.4.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.4.0'

    implementation 'org.greenrobot:eventbus:3.1.1'

    implementation 'de.hdodenhof:circleimageview:2.2.0'

    implementation 'io.realm:realm-android-library:5.3.1'

    implementation 'com.facebook.android:facebook-android-sdk:4.34.0'

    implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
    implementation 'io.reactivex.rxjava2:rxjava:2.0.2'

    implementation 'androidx.multidex:multidex:2.0.0'

    implementation 'com.crashlytics.sdk.android:crashlytics:2.9.4'
    implementation 'com.google.firebase:firebase-perf:16.0.0'

    implementation 'com.jakewharton.timber:timber:4.7.1'

    annotationProcessor 'com.jakewharton:butterknife-compiler:9.0.0-SNAPSHOT'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
}

apply plugin: 'com.google.gms.google-services'
nhoxbypass.dll
sumber
Ada kemajuan di sini?
Chad Bingham
@ChadBingham Tidak, itu masih kesalahan yang sama
nhoxbypass
Akhirnya menemukan solusinya, silakan temukan jawabannya di sini: stackoverflow.com/a/52308912/10224384
Nabster
Kemungkinan duplikat stackoverflow.com/questions/52294319/…
Nabster
5
@Nabster hey hey my question diposting sebulan yang lalu sementara pertanyaan ini diposting 20 jam yang lalu!
nhoxbypass

Jawaban:

112

Saya memperbaikinya dengan dua langkah

1) File -> Invalidate Cache / restart ... masukkan deskripsi gambar di sini

2) Bangun -> Proyek bersih masukkan deskripsi gambar di sini

Beto
sumber
4
Entah bagaimana bekerja untuk beberapa pembangunan kembali tetapi saya mendapatkan kesalahan yang sama lagi sekarang ..
Al Cabone
2
bagi saya Proyek Bersih sudah cukup
f4bo
1
Juga Proyek Bersih adalah semua yang dibutuhkan untuk saya. Terima kasih @ f4bo untuk tipnya.
John Bentley
1
Berhasil. Saya hanya membersihkan proyek. Jawaban ini harus ditetapkan sebagai jawaban yang diterima. @nhoxbypass
azwarakbar
32

Saya mendapatkan kesalahan yang sama setelah memperbarui file build.gradle saya dengan dependensi AndroidX Test . Ternyata saya lupa menghapus ketergantungan junit lama. Jadi bagi saya, perbaikannya hanya menghapus ketergantungan berikut:

dependencies {
    ...
    testImplementation 'junit:junit:4.12'
}
Seorang Droid
sumber
Ini adalah masalah saya.
Brill Pappin
Ya, perbaiki. Saya mengalami masalah dengan kursus tebak kursus Udacity Kotlin
Aswin Mohan
Bisakah Anda menjelaskan mengapa hal ini terjadi?
Riz-waan
17

Menambahkan dukungan Java 8 ke file build.gradle memperbaiki masalah saya

android {
     ...

     //Add the following configuration in order to target Java 8.
     compileOptions {
         sourceCompatibility JavaVersion.VERSION_1_8
         targetCompatibility JavaVersion.VERSION_1_8
     }
}
Dhaval Patel
sumber
leanback tidak ditemukan. Saya sedang membangun aplikasi TV dan menjadi merah pada apa pun tentang dukungan leanback
v17
1
batalkan cache dan mulai ulang studio android
Dhaval Patel
3
tidak, saya pikir Anda harus menggunakan paket androidx.
ralphgabb
Saya kira menambahkan dukungan Java 8 memaksa Android Studio untuk membatalkan cache-nya dan dengan demikian mencapai hasil yang sama sebagai efek samping ... Hmmmm, baiklah ...
varun
14

Tampaknya Glide masalahnya.

Saya mengalami kesalahan yang sama dan saya baru saja memperbarui dependensi Glide menjadi 4,8 dan tidak ada kesalahan pembuatan.

Kotlin:

// Glide
def glide_version = "4.8.0"
implementation "com.github.bumptech.glide:glide:$glide_version"
kapt "com.github.bumptech.glide:compiler:$glide_version"

Jawa:

// Glide
def glide_version = "4.8.0"
implementation "com.github.bumptech.glide:glide:$glide_version"
annotationProcessor "com.github.bumptech.glide:compiler:$glide_version"

Pastikan untuk mengaktifkan gradle.properties Anda:

android.useAndroidX=true
android.enableJetifier=true

Sumber: https://github.com/bumptech/glide/issues/3124

Semoga ini bisa membantu Anda!

Vince
sumber
9
Kesalahan ini juga muncul pada saya tanpa Glide sebagai ketergantungan
Fabian Streitel
6

Perbaiki dengan membuka direktori utama dan mengetik flutter clean

beeftosino.dll
sumber
1
Hebat, bagaimana jika Anda tidak menggunakan flutter;)
Kevin Galligan
4
@Kevin Kemudian gunakan Flut;)
Keponakan dari Stoverflow
4

Menghapus testInstrumentationRunner berhasil untuk saya:

defaultConfig {
...
...
//        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
M. Usman Khan
sumber
solusi yang fantastis! Memperbaiki untuk saya
beastlyCoder
4

Jika Anda menggunakan Kotlin, masalah akan muncul jika tidak menggunakan kaptversi untuk pemroses anotasi apa pun yang Anda gunakan dalam proyek.
Seperti yang @Vince sebutkan kasusnya Glide, ini bisa terjadi dengan Dagger2,, Butterknifedll.
Jika Anda menggunakan keduanya Javadan KotlinAnda harus menyimpan kedua dependensi, sebagai berikut (were $glideVersionadalah versi yang ditentukan sebelumnya Glide):

implementation "com.github.bumptech.glide:glide:$glideVersion"

kapt "com.github.bumptech.glide:compiler:$glideVersion"

Jika Anda berada dalam Kotlinsatu proyek, kaptketergantungan harus bekerja sendiri.

EDIT
Hal lain yang harus Anda pikirkan adalah jika Anda sudah menggunakan Androidx. Androidxadalah refactor yang bagus, tetapi saat bermigrasi dapat menyebabkan beberapa dependensi Anda runtuh. Pustaka arus utama sudah diperbarui ke Androidx, namun beberapa di antaranya tidak dan bahkan tidak.
Jika masalah tidak hilang dengan solusi yang saya berikan di atas hasil edit ini, Anda dapat melihat dependensi Anda dan memastikannya juga digunakan Androidx.

EDIT 2
Seperti yang @Ted sebutkan, saya meneliti kembali dan dia benar kaptmenangani javafile juga. kaptsendiri akan melakukan triknya, tidak perlu menyimpan keduanya kaptdan annotationProcessordependensi.

pamobo0609
sumber
1
kapt juga dapat menangani file java, jadi tidak perlu menggunakan keduanya, cukup kapt saja.
Ted
3

Coba hapus baris ini:

maven { url "https://oss.sonatype.org/content/repositories/snapshots" }

dari bagian buildscript / repositories file build.gradle Anda.

Ketika saya menambahkan baris itu, saya mendapatkan kesalahan yang Anda jelaskan. Ketika saya menghapusnya, tidak lagi. Baris itu seharusnya hanya ada di bagian allprojects / repositories.

Raj
sumber
1
Saya yakin Jake Wharton sudah menambahkan dukungan untuk AndroidX di snapshot 9.0.0. Lihat: github.com/JakeWharton/butterknife/issues/1280
nhoxbypass
2

Coba setel android.enableJetifier = false di gradle.properties. Kemudian Invalidate Caches / Restart ... di Android Studio

Minh Pham
sumber
8
Ini tidak disarankan karena mungkin ada pustaka pihak ketiga yang belum ditingkatkan ke AndroidX! Seperti yang disebutkan dalam dokumentasinya: "android.enableJetifier: Jika disetel ke true, plugin Android secara otomatis memigrasikan library pihak ketiga yang ada untuk menggunakan AndroidX dengan menulis ulang binernya. Flag ini salah secara default jika tidak ditentukan". developer.android.com/jetpack/androidx
Gábor Horváth
1

Perbaikannya ada di 4.2.0, gunakan versi yang lebih tinggi dari google gms jar.

Coba ubah:

classpath 'com.google.gms: layanan-google: 4.0.1'

menurut versi ini:

classpath 'com.google.gms: google-services: 4.2.0'

Semoga ini berhasil ...

Dimitri de Jesus
sumber
1
Ini berfungsi untuk saya bersama dengan memperbarui dependensi.
glisu
1

Jika Anda menggunakan belati atau pisau mentega, harap pastikan untuk memperbaruinya ke versi terbaru. Atau, jika Anda memiliki pustaka injeksi lain yang digunakan dalam proyek Anda, Anda dapat mencoba memeriksanya apakah itu mendukung androidx atau tidak.

Saya menemukan kesalahan yang sama, masalahnya ada pada belati dan pisau lipat saya. Perbaiki dengan memperbaruinya ke versi terbaru.

ikhsanudinhakim
sumber
1

Versi Android: 4.10.2

Saya memecahkan masalah ini dengan tiga langkah sederhana: Pertama saya menambahkan di bawah ini di pubspec.yml: (dengan dua spasi identifikasi)

module:
  androidX: true 

Menambahkan dua baris di bawah ini di gradle.properties, saya memilikinya di android / gradle.properties, di folder proyek.

android.useAndroidX=true
android.enableJetifier=true

Dan setelah ini saya menulis dengan terminal:

flutter clean

Mungkin Anda harus menghentikan perangkat dan menjalankannya lagi.

Pedro Molina
sumber
0

Saya memperbaikinya dengan memperbarui dependensi firebase ke yang terbaru.

Gab Ledesma
sumber
0

Saya menghadapi kesalahan ini setelah menambahkan pisau mentega ke proyek saya.

Untuk mengatasi kesalahan ini, Anda harus menggunakan Java8.

Saya akan merekomendasikan jawaban ini .

Bagaimana saya mengatasinya:

1. tambahkan kode berikut di build.gradle (module: app)

android {
  ...
  // Configure only for each module that uses Java 8
  // language features (either in its source code or
  // through dependencies).
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}
  1. bersihkan prject dan jalankan.
Ahsan Malik
sumber
-1

Saya memperbaikinya dengan menyegarkan cahche (Alih-alih membatalkannya - yang juga menghapus riwayat lokal):

  1. dalam file gradle.properties, komentari baris org.gradle.caching = true.
  2. Bersihkan, Bangun kembali.
  3. dalam file gradle.properties, hapus komentar baris org.gradle.caching = true.
  4. Bersihkan, Bangun kembali.

Itu dia!

Hanoch Moreno
sumber
-1

Buka file dan klik Invalidate caches dan restart.

Setelah itu restart maka Anda meningkatkan versi SDK minimum di build.gradlefile aplikasi Anda .

Dan
sumber