web-dev-qa-db-ja.com

Android gradleの解決に失敗しました:play-services-basement

突然gradleは、一瞬前に動作していたのと同じコードをビルドできません!私のプロジェクトはGoogle Playサービスの依存関係に依存しています

それは言う:

Play-services-basement.aar(com.google.Android.gms:play-services-basement:15.0.1)が見つかりませんでした。次の場所で検索: https://jcenter.bintray.com/com/google/Android/gms/play-services-basement/15.0.1/play-services-basement-15.0.1.aar

AARファイルは誤ってGoogleから削除されたと思います

誰にもアイデアがありますか、何が起こっていますか?

46
Ahmed Ali

Build.gradleにgoogle()リポジトリを追加します。そして、google()がjcenter()の前にあることを確認します。

100
Jivy

問題はjcenterにあるようです。私はこの問題と一緒に何時間も費やしましたが、あなたの問題は私の問題と似ているようで、次の解決策がうまくいくと思います。

何らかの理由で、jcenterの多くのライブラリでは、多くのライブラリのpomファイルはそのままですが、対応するaarファイルは削除されています。これは、play-services-basementライブラリの場合も同様です。参照については、以下を確認してください(play-services-basementのpomファイルはjcentre here で利用可能ですが、aarファイルは利用できません) jcentreで利用可能 ここ ):

Solution:プロジェクトレベルのgradleファイルで、次のコードブロックを変更します

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

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

なぜこれが機能するのか?

最初のコードブロックでは、gradleがリポジトリ(私の場合はjcentreリポジトリのgoogle-services-basement)の依存関係を解決しようとすると、対応するaarファイルが削除されたため、ddiは解決されません。結果として、ビルドは次のようなもので失敗します:

 Could not find play-services-basement.aar (com.google.Android.gms:play-services-basement:15.0.1).

2番目のコードブロックでは、jcenterリポジトリの前にgoogleリポジトリが参照されています。 gradleビルドが開始されると、リポジトリで最初にリストされているライブラリを最初に検索します{...プロジェクトで使用されているライブラリを解決します。これで、gradleがjcenterのplay-services-basementを解決しようとすると、対応するaarファイルがgoogleリポジトリによって利用可能になったため、依存関係の解決に成功します(最新バージョンの同じaarファイルはjcenterリポジトリでは利用できません) jcenterリポジトリが評価される前に参照されます。確認して、それが機能するかどうかを教えてください。

20
Abhishek Luthra

働いた

allprojects {
repositories {
    google()
    jcenter()
    maven {
        url 'https://jitpack.io'
    }
    maven {
        url 'https://maven.google.com'
    }

}
0
iman hoshmand