ไม่สามารถแก้ไขตัวแปร '$ {animal.sniffer.version}' เมื่อย้ายไปยัง AndroidX


141

ฉันใช้Android 3.2 สตูดิโอ Beta5การโยกย้ายโครงการของฉันที่จะAndroidX เมื่อฉันสร้างแอปใหม่ฉันพบข้อผิดพลาดเหล่านี้:

ข้อผิดพลาด: [TAG] ไม่สามารถแก้ไขตัวแปร "$ {animal.sniffer.version}"

ข้อผิดพลาด: [TAG] ไม่สามารถแก้ไขตัวแปร "$ {junit.version}"

ทำความสะอาดและสร้างใหม่ทั้งหมดไม่ทำงาน! ใครทราบวิธีแก้ไขปัญหานี้


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'

มีความคืบหน้าไหม
Chad Bingham

@ChadBingham ไม่ยังคงเป็นข้อผิดพลาดเดิม
nhoxbypass

ในที่สุดก็พบวิธีแก้ปัญหาโปรดค้นหาคำตอบที่นี่: stackoverflow.com/a/52308912/10224384
Nabster

อาจซ้ำกันของstackoverflow.com/questions/52294319/…
Nabster

5
@Nabster เฮ้เฮ้คำถามของฉันถูกโพสต์เมื่อเดือนที่แล้วในขณะที่คำถามนี้ถูกโพสต์เมื่อ 20 ชั่วโมงที่แล้ว!
nhoxbypass

คำตอบ:


112

ฉันแก้ไขปัญหานี้ด้วยสองขั้นตอน

1) ไฟล์ -> ไม่ถูกต้องแคช / รีสตาร์ท ... ป้อนคำอธิบายภาพที่นี่

2) สร้าง -> โครงการที่สะอาด ป้อนคำอธิบายภาพที่นี่


4
อย่างใดได้ผลสำหรับการสร้างใหม่สองครั้ง แต่ตอนนี้ฉันได้รับข้อผิดพลาดเดียวกันอีกครั้ง ..
Al Cabone

2
สำหรับฉัน Clean Project ก็เพียงพอแล้ว
f4bo

1
นอกจากนี้ Clean Project ก็เป็นสิ่งที่จำเป็นสำหรับฉัน ขอบคุณ @ f4bo สำหรับเคล็ดลับ
John Bentley

1
มันได้ผล. ฉันทำความสะอาดโครงการเท่านั้น คำตอบนี้ควรตั้งเป็นคำตอบที่ยอมรับ @nhoxbypass
azwar_akbar

32

ผมได้รับข้อผิดพลาดเดียวกันหลังจากที่อัพเดตไฟล์ build.gradle ของฉันกับการอ้างอิง AndroidX ทดสอบ ปรากฎว่าฉันลืมลบการพึ่งพา Junit เก่า ดังนั้นสำหรับฉันการแก้ไขก็เพียงแค่ลบการพึ่งพาต่อไปนี้:

dependencies {
    ...
    testImplementation 'junit:junit:4.12'
}

นี่คือปัญหาสำหรับฉัน
Brill Pappin

ใช่แก้ไขมัน ฉันพบปัญหากับหลักสูตร Udacity Kotlin เดาว่าเกม
Mohan

คุณช่วยอธิบายได้ไหมว่าทำไมถึงเป็นเช่นนี้
Riz-waan

17

การเพิ่มการสนับสนุน Java 8ให้กับไฟล์build.gradleแก้ไขปัญหาสำหรับฉัน

android {
     ...

     //Add the following configuration in order to target Java 8.
     compileOptions {
         sourceCompatibility JavaVersion.VERSION_1_8
         targetCompatibility JavaVersion.VERSION_1_8
     }
}

ไม่พบเอนหลัง ฉันกำลังสร้างแอปทีวีและมันจะกลายเป็นสีแดงในทุกสิ่งที่เกี่ยวข้องกับการสนับสนุนแบบลีนแบ็ค v17
ralphgabb

1
ทำให้แคชเป็นโมฆะและรีสตาร์ท android studio
Dhaval Patel

3
ไม่ไม่ใช่ฉันคิดว่าคุณต้องใช้แพ็คเกจ androidx
ralphgabb

ฉันเดาว่าการเพิ่มการสนับสนุน Java 8 บังคับให้ Android Studio ทำให้แคชของมันเป็นโมฆะและทำให้ได้ผลลัพธ์เช่นเดียวกับผลข้างเคียง ... อืมเอาล่ะ ...
varun

14

ดูเหมือนว่าจะเหินปัญหา

ฉันมีข้อผิดพลาดเดียวกันและฉันเพิ่งอัปเดตการอ้างอิงของ Glide เป็น 4.8 และไม่มีข้อผิดพลาดในการสร้าง

Kotlin:

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

Java:

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

อย่าลืมเปิดใช้งานใน gradle.properties ของคุณ:

android.useAndroidX=true
android.enableJetifier=true

ที่มา: https://github.com/bumptech/glide/issues/3124

หวังว่านี่จะช่วยคุณได้!


9
ข้อผิดพลาดนี้ดูเหมือนกับฉันโดยไม่ต้องมี Glide เป็นที่พึ่งพา
Fabian Streitel



4

หากคุณกำลังใช้Kotlinปัญหาจะป๊อปอัปหากไม่ใช้kaptเวอร์ชันสำหรับตัวประมวลผลคำอธิบายประกอบใด ๆ ที่คุณใช้ในโครงการ
ในฐานะที่เป็น @Vince กล่าวถึงกรณีที่มีGlideนี้อาจเกิดขึ้นกับDagger2, Butterknifeฯลฯ
หากคุณกำลังใช้ทั้งสองJavaและKotlinคุณจะต้องให้ทั้งการอ้างอิงดังต่อไปนี้ (ก็$glideVersionเป็นรุ่นที่กำหนดไว้ล่วงหน้าGlide):

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

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

หากคุณอยู่ในKotlinโครงการเดียวการkaptพึ่งพาควรทำงานคนเดียว

แก้ไขสิ่งที่คุณควรมีในใจคือถ้าคุณกำลังใช้
เป็นตัวอ้างอิงที่ยอดเยี่ยม แต่เมื่อย้ายข้อมูลอาจทำให้การอ้างอิงบางส่วนของคุณล่มสลาย ไลบรารีกระแสหลักได้รับการอัปเดตเป็นแล้วอย่างไรก็ตามบางส่วนไม่ได้รับการอัปเดตและยังไม่ได้ หากปัญหาไม่หายไปพร้อมกับโซลูชันที่ฉันให้ไว้เหนือการแก้ไขนี้คุณสามารถดูการอ้างอิงของคุณและตรวจสอบให้แน่ใจว่าพวกเขาใช้เช่นกันAndroidxAndroidxAndroidx
Androidx

แก้ไข 2
ตามที่ @Ted กล่าวไว้ฉันค้นคว้ากลับมาและเขาพูดถูกต้องkaptจัดการjavaไฟล์ด้วย kaptคนเดียวจะทำเคล็ดลับไม่จำเป็นต้องเก็บทั้งสองอย่างkaptและการannotationProcessorอ้างอิง


1
kapt ยังสามารถจัดการไฟล์ java ได้ดังนั้นไม่จำเป็นต้องใช้ทั้งสองอย่างเพียงแค่ kapt ก็โอเค
Ted

3

ลองลบบรรทัดนี้:

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

จากส่วน buildscript / repositories ของไฟล์ build.gradle ของคุณ

เมื่อฉันเพิ่มบรรทัดนั้นฉันได้รับข้อผิดพลาดที่คุณอธิบายไว้ เมื่อฉันถอดมันออกก็ไม่ได้อีกต่อไป บรรทัดนั้นควรอยู่ในส่วน allprojects / repositories เท่านั้น


1
ฉันเชื่อว่า Jake Wharton ได้เพิ่มการรองรับ AndroidX ในสแนปชอต 9.0.0 แล้ว ดู: github.com/JakeWharton/butterknife/issues/1280
nhoxbypass

2

ลองตั้งค่า android.enableJetifier = false ใน gradle.properties จากนั้นทำให้แคชไม่ถูกต้อง / รีสตาร์ท ... ใน Android Studio


8
ไม่แนะนำเนื่องจากอาจมีไลบรารีของบุคคลที่สามซึ่งยังไม่ได้อัปเกรดเป็น AndroidX ตามเอกสารประกอบระบุว่า: "android.enableJetifier: เมื่อตั้งค่าเป็น" จริง "ปลั๊กอิน Android จะย้ายไลบรารีของบุคคลที่สามที่มีอยู่โดยอัตโนมัติเพื่อใช้ AndroidX โดยการเขียนไบนารีขึ้นมาใหม่ค่าสถานะจะเป็นเท็จโดยค่าเริ่มต้นหากไม่ได้ระบุไว้" developer.android.com/jetpack/androidx
GáborHorváth

1

การแก้ไขอยู่ใน 4.2.0 ใช้ google gms jar เวอร์ชันที่สูงกว่า

ลองเปลี่ยน:

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

โดยเวอร์ชันนี้:

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

หวังว่าจะได้ผล ...


1
สิ่งนี้ใช้ได้ผลสำหรับฉันพร้อมกับการอัปเดตการอ้างอิง
glisu

1

หากคุณใช้กริชหรือมีดบัตเตอร์โปรดอย่าลืมอัปเดตเป็นเวอร์ชันล่าสุด หรือถ้าคุณมีคลังฉีดอื่นที่ใช้ในโปรเจ็กต์ของคุณคุณสามารถลองตรวจสอบได้ว่ารองรับ androidx หรือไม่

ฉันพบข้อผิดพลาดเดียวกันปัญหาอยู่ที่กริชและมีดบัตเตอร์ของฉัน ได้แก้ไขโดยอัปเดตเป็นเวอร์ชันใหม่ล่าสุด


1

เวอร์ชัน Android: 4.10.2.2

ฉันแก้ไขปัญหานี้ด้วยสามขั้นตอนง่ายๆขั้นแรกฉันเพิ่มด้านล่างนี้ใน pubspec.yml: (โดยมีการระบุสองช่องว่าง)

module:
  androidX: true 

การเพิ่มสองบรรทัดด้านล่างนี้ใน gradle.properties ฉันมีสิ่งนี้ใน android / gradle.properties ในโฟลเดอร์โครงการ

android.useAndroidX=true
android.enableJetifier=true

และหลังจากนี้ฉันเขียนด้วยเทอร์มินัล:

flutter clean

บางทีคุณอาจต้องหยุดอุปกรณ์และเรียกใช้อีกครั้ง


0

ฉันแก้ไขสิ่งนี้โดยการอัปเดตการอ้างอิงของ firebase เป็นเวอร์ชันล่าสุด


0

ฉันพบข้อผิดพลาดนี้หลังจากเพิ่มบัตเตอร์ไนฟ์ในโครงการของฉัน

ในการแก้ไขข้อผิดพลาดนี้คุณควรใช้ Java8

ฉันจะแนะนำนี้คำตอบ

ฉันแก้ไขได้อย่างไร:

1. เพิ่มรหัสต่อไปนี้ใน build.gradle (โมดูล: แอป)

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. ทำความสะอาดและเรียกใช้

-1

ฉันแก้ไขโดยการรีเฟรช cahche (แทนที่จะทำให้เป็นโมฆะ - ซึ่งจะล้างประวัติท้องถิ่นด้วย):

  1. ในไฟล์ gradle.properties ให้คอมเมนต์บรรทัด org.gradle.caching = true
  2. ทำความสะอาดสร้างใหม่
  3. ในไฟล์ gradle.properties ให้ยกเลิกการแสดงความคิดเห็นบรรทัด org.gradle.caching = true
  4. ทำความสะอาดสร้างใหม่

แค่นั้นแหละ!


-1

ไปที่ไฟล์และคลิกที่ Invalidate caches and restart

หลังจากรีสตาร์ทแล้วคุณจะเพิ่มเวอร์ชัน SDK ขั้นต่ำในbuild.gradleไฟล์ของแอป

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.