私は Android Studio 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'
Java 8サポートを追加する / build.gradle file私には解決した問題
Android {
...
//Add the following configuration in order to target Java 8.
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
AndroidX Testの依存関係 でbuild.gradleファイルを更新した後に同じエラーが発生しました。私は古いjunitの依存関係を削除するのを忘れていました。だから私にとっては、修正は単に次の依存関係を削除することでした:
dependencies {
...
testImplementation 'junit:junit:4.12'
}
グライド 問題のようです。
同じエラーがあり、Glideの依存関係を4.8に更新しただけで、ビルドエラーは発生しません。
コトリン:
// 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
これがお役に立てば幸いです。
この行を削除してみてください。
maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
build.gradleファイルのbuildscript/repositoriesセクションから。
その行を追加したとき、私はあなたが説明したエラーを得ました。私がそれを取り除いた時、もう終わりません。その行はallprojects/repositoriesセクションにだけあるべきです。
TestInstrumentationRunnerを削除しても問題ありませんでした。
defaultConfig {
...
...
// testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
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
の依存関係は一人で動くはずです。
_編集_
もう1つ注意すべきことは、既にAndroidx
を使用しているかどうかです。 Androidx
は素晴らしいリファクタですが、移行すると依存関係の一部が崩壊する可能性があります。主流のライブラリはすでにAndroidx
に更新されていますが、そのうちのいくつかは更新されておらず、更新されていません。
この編集の上で私が提供した解決策で問題が解決しない場合は、依存関係を調べて、それらがAndroidx
も使用していることを確認できます。
編集2
@Tedが述べたように、私は戻って研究しました、そして、彼はkapt
がJava
ファイルを同様に扱うことが正しいです。 kapt
だけでうまくいくので、kapt
とannotationProcessor
の両方の依存関係を維持する必要はありません。
Gradle.propertiesでAndroid.enableJetifier = falseを設定してみてください。 Android Studioでキャッシュの無効化/再起動...
修正は4.2.0にあります。Googlegms jarの上位バージョンを使用してください。
変更してみてください。
クラスパス 'com.google.gms:google-services:4.0.1'
このバージョンでは:
クラスパス 'com.google.gms:google-services:4.2.0'
これがうまくいくことを願っています...
ファイルに移動し、キャッシュの無効化をクリックして再起動します。
再起動後、アプリのbuild.gradle
ファイルの最小SDKバージョンを増やします。
Firebaseの依存関係を最新のものに更新することでこれを修正しました。