[解決済み] IntelliJ Idea with gradleでcom.google.android.gms:play-servicesの解決に失敗した。
質問
IntelliJ Idea の libGDX プロジェクトに google play services を追加しようとしています。ここのセットアップガイドに従いました。 https://developers.google.com/android/guides/setup
というように、かなり簡単なようです。私はこれらの行をbuild.gradleの対応するセクションに追加しただけで、物事は次のようになります。
project(":android") {
apply plugin: "android"
apply plugin: 'com.android.application'
configurations { natives }
dependencies {
compile project(":core")
compile "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi"
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a"
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a"
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86"
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64"
compile "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion"
natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi"
natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi-v7a"
natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86"
compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi-v7a"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-arm64-v8a"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86_64"
compile 'com.google.android.gms:play-services:11.2.0'
}
}
それから、Ideaのgradleプロジェクトを同期させようとすると、"Failed to resolve"というエラーが表示されるだけです。
セットアップ ガイドには、「Google Play サービスが更新されるたびにこのバージョン番号を更新してください」とも書かれていますが、問題は、そのバージョン番号を見つけることがほぼ不可能であることです。Android SDK マネージャーによると私の Google Play サービス SDK バージョンは "43" で、これまでのところ、このバージョン番号と "11.2.0" または任意の典型的なバージョン文字列を関連づけることができません。セットアップ ガイドにそのことについて何も書かれていないわけではありません。
とにかく、私はこれに関する多くの質問から多くのことを試しましたが、無駄でした。特に、私は Android SDK を適切に更新しており、それが Idea で使用されているものであることを確信しています (すでにトリプル チェック済みです...)。
私はAPIレベル26を使用していますが、いずれにせよ、他の定義もAndroid SDKのためにまったく同じディレクトリを使用しています。さらに、このラップトップには他のアンドロイド SDK はまったくインストールされていないので、Idea がその 1 つだけを使用していることに疑問の余地はありません。
どんなアイデアでも大歓迎です。
ありがとうございます。
どのように解決するのですか?
バージョン 11.2.0 を 11.0.0 に置き換えたところ、問題なく動作したようなので、11.2.0 が最新の Android SDK に含まれていなかったということなのでしょう。
そこで、利用可能なすべての散在したドキュメントと格闘した後、まったくの偶然でこのドキュメントにたどり着きました (Googleによって十分に上位にインデックスされていないのでしょう)。 https://developers.google.com/android/guides/releases
そこから引用します。
<ブロッククオートGoogle Play サービス 11.2 リリースのハイライトです。Google Play サービスの依存関係が maven.google.com 経由で利用可能になりました。
さて、必ずしもダウンロードした SDK で利用できなくなるわけではないはずなのに、実際にそうなっているようです。
とにかく、私の build.gradle に google() を追加してもうまくいかなかったので (not found, undefined, or whatever...) 、私は前のものから参照したこのドキュメントで見つけた別の方法を使用しました。
https://developer.android.com/studio/build/dependencies.html#google-maven
というように、allprojects/repositoriesにその行を追加してbuild.gradleファイルを変更しました。
allprojects {
...
repositories {
...
maven { url "https://maven.google.com/"}
}
}
そして、同じbuild.gradleファイル内のandroidセクションにも。
project(":android") {
...
dependencies {
...
compile 'com.google.android.gms:play-services-ads:11.2.0'
}
}
この2行でGradleは問題なく同期することができました。libGDXプロジェクトにデフォルトで追加されているプラグインを除けば、何も追加する必要はありませんでした。
その後、いくつかの異なるエラーが表示されましたが、Gradle や依存性についてのものはありませんでした。簡単に言うと、JFTRです。
まず、minSdkVersionが8だったのですが、14まで上げることで解決しました。14以下のデバイスは全部サポートしなくても生きていけると思います。
2 つ目は、dex の参照の上限に関する問題がありました。com.google.android.gms:play-services' 全体をコンパイルする代わりに、私が今実際に興味を持っている API である 'com.google.android.gms:play-services-ads' のみを使用したのです。このようなソリューションが有用でない他の特定のケースについては、このドキュメントがいくつかのより良い洞察を提供することができます。 https://developer.android.com/studio/build/multidex.html
第三に、その後も私はこの"jumbo"事の問題を説明し、ここに答えました。 https://stackoverflow.com/a/26248495/1160360
これで完了です。今現在、すべてがビルドされ、私のゲームはついにAdmobバナーを表示するようになりました。
このために何時間も費やしました。最近使用しているすべてのビルディング オートメーション システムは、余分な負荷を追加する価値があるのだろうかと考えさせられます。
つまり、5 年ほど前に初めて Admob をアプリに追加しなければならなかったとき、私は .jar ファイルをダウンロードして、プロジェクト上のディレクトリに置くだけでした。ググって「Admobをアンドロイドのプロジェクトに設定する方法」を調べ、アプリにAdmobバナーを表示させるまで、ほんの数分しかかからなかったのです。ここはそのような議論をする場所ではないので、ここに残すことにします。
それでも、私自身の経験がさらに誰かの役に立つことを願っています。
関連
-
Java の switch case 文で必要な定数式の問題の解決法
-
メモ帳でJavaプログラムをコンパイルして実行すると、Could not find or load main class ...というエラーが表示される。解決方法
-
ジャバアレイ
-
eclipse にリソースリーク:'in' が閉じない
-
org.xml.sax.SAXParseExceptionのエラー解決方法
-
Spring Bootは、Tomcatの組み込みのmaxPostSizeの値を設定します。
-
[解決済み] アイテムの親を取得する際にエラーが発生しました。AppCompat v23にアップグレードした後、指定された名前に一致するリソースが見つかりません。
-
[解決済み] Eclipseが起動できない - Javaは起動したが終了コード=13を返した
-
[解決済み] IntelliJのインスペクションで「シンボルを解決できない」と表示されたが、コードはコンパイルされる
-
[解決済み】IntelliJ IDEAプロジェクトに外部jar(lib/*.jar)を追加するための正しい方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
アクセス制限です。タイプ 'JPEGCodec' は API ではない ☞My Blog Github ☜ ホームページを見る
-
プロジェクトの依存関係を解決できない。
-
ajax コミット リソースの読み込みに失敗しました: サーバーはステータス 400 で応答しました ()
-
強制型変換について
-
Javaジェネリックを1つの記事で
-
Java基礎編 - オブジェクト指向
-
eclipse 実行 Java、エラー: 選択を起動できず、レシーバーもありません。
-
git pull appears現在のブランチに対するトラッキング情報がありません。
-
Java基礎 - マッピングとQ/A
-
[解決済み] DexException: 新しいインデックス65536を非ジャンボ命令にマージできません。