Không thể giải quyết biến '$ {Animal.sniffer.version}' khi di chuyển sang AndroidX


137

Tôi đang sử dụng Android Studio 3.2 Beta5 để di chuyển dự án của mình sang AndroidX . Khi tôi xây dựng lại ứng dụng của mình, tôi đã gặp những lỗi sau:

LRI: [TAG] Không thể giải quyết biến '$ {Animal.sniffer.version}'

LRI: [TAG] Không thể giải quyết biến '$ {junit.version}'

Làm sạch hoàn toàn & xây dựng lại không hoạt động! Bất cứ ai cũng biết làm thế nào để sửa lỗi này?


gradle.properies

android.enableJetifier=true
android.useAndroidX=true

xây dựng. nâng cấp

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
}

ứng dụng / 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'

Có tiến triển gì ở đây không?
Chad Bingham

@ChadBingham Không, vẫn là lỗi tương tự
nhoxbypass

Cuối cùng cũng tìm thấy giải pháp, vui lòng tìm câu trả lời tại đây: stackoverflow.com/a/52308912/10224384
Nabster

Bản sao có thể có của stackoverflow.com/questions/52294319/ Từ
Nabster

5
@Nabster hey hey câu hỏi của tôi đã được đăng một tháng trước trong khi câu hỏi này đã được đăng 20 giờ trước!
nhoxbypass

Câu trả lời:


108

Tôi sửa lỗi này bằng hai bước

1) Tệp -> Bộ nhớ cache không hợp lệ / khởi động lại ... nhập mô tả hình ảnh ở đây

2) Xây dựng -> Dự án sạch nhập mô tả hình ảnh ở đây


4
Bằng cách nào đó đã làm việc cho một vài lần xây dựng lại nhưng bây giờ tôi lại gặp lỗi tương tự ..
Al Cabone

2
Đối với tôi Dự án sạch đã vừa đủ
f4bo

1
Ngoài ra Dự án Sạch là tất cả những gì cần thiết cho tôi. Cảm ơn @ f4bo cho tiền boa.
John Bentley

1
Nó hoạt động. Tôi chỉ làm sạch dự án. Câu trả lời này nên được đặt là câu trả lời được chấp nhận. @nhoxbypass
azwar_akbar

30

Tôi đã gặp lỗi tương tự sau khi cập nhật tệp build.gradle của mình với các phụ thuộc Kiểm tra AndroidX . Hóa ra tôi đã quên loại bỏ sự phụ thuộc của Junit cũ. Vì vậy, đối với tôi, cách khắc phục chỉ đơn giản là loại bỏ sự phụ thuộc sau:

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

Đây là vấn đề đối với tôi.
Brill Pappin

Yep đã sửa nó. Tôi gặp vấn đề với khóa học Udacity Kotlin đoán nó là trò chơi
Aswin Mohan

Bạn có thể vui lòng giải thích tại sao đây là trường hợp?
Riz-waan

17

Thêm sự cố hỗ trợ Java 8 cho tệp build.gradle đã sửa lỗi cho tôi

android {
     ...

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

không tìm thấy tôi đang xây dựng một ứng dụng TV và nó chuyển sang màu đỏ trên mọi thứ liên quan đến hỗ trợ leanback v17
ralphgabb

1
bộ nhớ cache không hợp lệ và khởi động lại studio android
Dhaval Patel

3
không, không, tôi đoán bạn phải sử dụng gói androidx.
ralphgabb

Tôi đoán việc thêm hỗ trợ Java 8 buộc Android Studio phải vô hiệu hóa bộ nhớ cache và do đó đạt được kết quả tương tự như hiệu ứng phụ ... Hmmmm, được rồi ...
varun

14

Có vẻ như là Glide vấn đề.

Tôi đã có cùng một lỗi và tôi vừa cập nhật các phụ thuộc của Glide lên 4.8 và không có lỗi xây dựng.

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"

Hãy chắc chắn đã kích hoạt trong gradle.properies của bạn:

android.useAndroidX=true
android.enableJetifier=true

Nguồn: https://github.com/bumptech/glide/issues/3124

Hy vọng điều này sẽ giúp bạn!


9
Lỗi này cũng xuất hiện với tôi mà không có Glide như một sự phụ thuộc
Fabian Streitel 10/2/19


4

Xóa testInstrumentationRunner làm việc cho tôi:

defaultConfig {
...
...
//        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

giải pháp tuyệt vời! Đã sửa nó cho tôi
beastlyCoder

4

Nếu bạn đang sử dụng Kotlin, sự cố sẽ xuất hiện nếu không sử dụng kaptphiên bản cho bất kỳ bộ xử lý chú thích nào bạn sử dụng trong dự án.
Như @Vince đã đề cập đến trường hợp Glidenày, điều này có thể xảy ra với Dagger2, Butterknifev.v.
Nếu bạn đang sử dụng cả hai JavaKotlinbạn sẽ cần giữ cả hai phụ thuộc, như sau ( $glideVersionlà phiên bản được xác định trước Glide):

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

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

Nếu bạn đang ở trong một Kotlindự án duy nhất, thì sự kaptphụ thuộc sẽ hoạt động một mình.

EDIT
Một điều khác bạn nên có trong đầu là nếu bạn đang sử dụng Androidx. Androidxlà một công cụ tái cấu trúc tuyệt vời nhưng khi di chuyển nó có thể khiến một số phụ thuộc của bạn sụp đổ. Các thư viện chính đã được cập nhật Androidx, tuy nhiên, một số trong số họ không và thậm chí sẽ không.
Nếu vấn đề không giải quyết được với giải pháp được cung cấp của tôi ở trên chỉnh sửa này, bạn có thể xem xét các phụ thuộc của mình và đảm bảo rằng chúng cũng sử dụng Androidx.

EDIT 2
Như @Ted đã đề cập, tôi đã nghiên cứu lại và anh ấy kaptcũng xử lý javacác tập tin. kaptMột mình sẽ làm nên mánh khóe, không cần giữ cả hai kaptannotationProcessorphụ thuộc.


1
kapt cũng có thể xử lý các tệp java, vì vậy không cần sử dụng cả hai, chỉ cần kapt là ổn.
Ted

3

Hãy thử xóa dòng này:

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

từ phần buildscript / kho lưu trữ trong tệp build.gradle của bạn.

Khi tôi thêm dòng đó, tôi đã nhận được lỗi bạn mô tả. Khi tôi loại bỏ nó, không còn. Dòng đó chỉ nên nằm trong phần allprojects / kho.


1
Tôi tin Jake Wharton đã thêm hỗ trợ cho AndroidX trong ảnh chụp nhanh 9.0.0. Xem: github.com/JakeWharton/butterknife/issues/1280
nhoxbypass

2

Hãy thử đặt android.enableJetifier = false trong gradle.properies. Sau đó, Bộ nhớ cache / Khởi động lại không hợp lệ ... trong Android Studio


8
Không nên sử dụng vì có thể có thư viện của bên thứ ba chưa được nâng cấp lên AndroidX! Như tài liệu nói: "android.enableJetifier: Khi được đặt thành true, plugin Android sẽ tự động di chuyển các thư viện bên thứ ba hiện có để sử dụng AndroidX bằng cách viết lại các nhị phân của chúng. Cờ mặc định là sai nếu không được chỉ định." developer.android.com/jetpack/androidx
Gábor Horváth

1

Bản sửa lỗi là trong 4.2.0, sử dụng phiên bản cao hơn của google gms jar.

Hãy thử thay đổi:

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

bởi phiên bản này:

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

Hy vọng điều này hoạt động ...


1
Điều này làm việc cho tôi cùng với việc cập nhật phụ thuộc.
glisu

1

Nếu bạn đang sử dụng dao găm hoặc butterknife, vui lòng đảm bảo cập nhật nó lên phiên bản mới nhất. Hoặc, nếu bạn có một thư viện tiêm khác được sử dụng trong dự án của mình, bạn có thể thử kiểm tra xem nó có hỗ trợ androidx hay không.

Tôi đã tìm thấy một lỗi tương tự, vấn đề là ở dao găm và butterknife của tôi. Đã sửa nó bằng cách cập nhật nó lên phiên bản mới nhất.


1

Phiên bản Android: 4.10.2

Tôi đã giải quyết vấn đề này bằng ba bước đơn giản: Đầu tiên tôi đã thêm vào bên dưới này trong pubspec.yml: (với hai khoảng trắng nhận dạng)

module:
  androidX: true 

Thêm hai dòng dưới đây trong gradle.properies, tôi có cái này trong android / gradle.properies, trong thư mục dự án.

android.useAndroidX=true
android.enableJetifier=true

Và sau này tôi đã viết với thiết bị đầu cuối:

flutter clean

Có thể bạn sẽ phải dừng thiết bị và chạy lại.


0

Tôi đã sửa lỗi này bằng cách cập nhật các phụ thuộc của căn cứ hỏa lực mới nhất.


-1

Tôi đã sửa nó bằng cách làm mới cahche (Thay vì vô hiệu hóa nó - điều này cũng xóa lịch sử địa phương):

  1. trong tệp gradle.properIES, nhận xét dòng org.gradle.caching = true.
  2. Sạch sẽ, xây dựng lại.
  3. trong tệp gradle.properIES, bỏ bình luận dòng org.gradle.caching = true.
  4. Sạch sẽ, xây dựng lại.

Đó là nó!


-1

Đi đến tập tin và bấm vào Bộ nhớ cache không hợp lệ và khởi động lại.

Sau khi khởi động lại, bạn tăng phiên bản SDK tối thiểu trong build.gradletệp ứng dụng của mình .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.