Google Play開発者サービスを備えたAndroid Studio


95

新しいAndroid StudioでGoogle Play開発者サービスをテストしようとしています。google_play_services.jarに依存するプロジェクトがあります。しかし、プロジェクトを再構築しようとすると、次のエラーが発生します。

Information:[TstGP3-TstGP3] Crunching PNG Files in source dir: C:\Users\ans\AndroidStudioProjects\TstGP3\TstGP3\src\main\res
Information:[TstGP3-TstGP3] To destination dir: C:\Users\ans\AndroidStudioProjects\TstGP3\build\classes\res-cache\TstGP3-TstGP3
Information:Compilation completed with 2 errors and 0 warnings in 2 sec
Information:2 errors
Information:0 warnings
C:\Users\ans\.AndroidStudioPreview\system\compiler\tstgp3.3f17bd41\.generated\Android_BuildConfig_Generator\TstGP3-TstGP3.74fc5b25\production\com\example\tstgp3\BuildConfig.java
    Error:Error:line (4)error: duplicate class: com.example.tstgp3.BuildConfig
C:\Users\ans\.AndroidStudioPreview\system\compiler\tstgp3.3f17bd41\.generated\aapt\TstGP3-TstGP3.74fc5b25\production\com\example\tstgp3\R.java
    Error:Error:line (10)error: duplicate class: com.example.tstgp3.R

2つのBuildConfigファイルと2つのRクラスがあるようです。どうすれば問題を解決できますか?

編集:

コンパイラーが2つのR.javaファイルをコンパイルすることに気づきました。1つはプロジェクトフォルダーにあり、もう1つはフォルダー%USERPROFILE%.AndroidStudioPreviewにあります。このため、コンパイラー設定でこの「プレビュー」フォルダーを除外しようとしましたそして今それは働いています。この問題は、プロジェクトでGoogle Play開発者サービスクラスの使用を開始した後にのみ発生します。誰かがこの問題の背後にある理由を説明できれば幸いです。


このコンパイル「com.google.android.gms:play-services:6.5.87」がandroid studioの依存関係セクションに追加されている間、誰もが助けることができます。jarを追加することもできますが、jarを追加しないので上記の行は何をしますか。
Android Killer

回答:


243

Gradleプラグインv0.4.2のリリースはandroid studioでのGoogle Play開発者サービスのセットアップが簡単なので、これらの答えはすべて間違っています。jarをインポートしたり、プロジェクトライブラリを追加したり、android studioで新しいモジュールを追加したりする必要はありません。正しい依存関係をbuild.gradleファイルに追加する必要があります。それらのリンクをご覧ください:Gradleプラグインv0.4.2のアップデート新しいビルドシステム、およびこのサンプル

これを行う正しい方法は次のとおりです。

まず、SDKマネージャー起動し、「extras」の下にある次のファイルをダウンロードしてインストールする必要があります。AndroidサポートリポジトリGoogle PlayサービスGoogleリポジトリ

Android Studioを再起動し、ビルドGradleファイルを開きます。依存関係の下で次のようになるようにbuild.gradleファイルを変更する必要があります。

dependencies {
    compile 'com.google.android.gms:play-services:6.5.87' 
 }

最後にプロジェクトを同期します(AVDマネージャーの左側にあるボタン)。

バージョン6.5以降、完全なライブラリ(非常に大きい)または必要なモジュールのみ(最適なオプション)を含めることができます。つまり、Googleマップとアナリティクスのみが必要な場合は、前の例を次の例に置き換えることができます。

dependencies {  
    compile 'com.google.android.gms:play-services-base:6.5.87'    
    compile 'com.google.android.gms:play-services-maps:6.5.87'  
}

ここで完全な依存関係リストを見つけることができます

いくつかの補足事項:

  • 最新のPlay Services Libraryバージョンを使用してください。古いバージョンの場合は、Android Studioによって強調表示されます。今日(2月5日は6.5.87)ですが、Gradle Pleaseで最新バージョンを確認できます
  • Android Studioのメジャーアップデート後、@ user123321のコメントで提案されている次の手順に従って、プロジェクトを再構築します。

    プロジェクトフォルダーにcdします
    ./gradlew clean
    ./gradlew build


ねえエストルニーノ。私もこのアップデートを見ましたが、Android Studio(少なくともIDE自体)がどのように依存関係を取得するのか疑問に思っていましたか?Gradle設定だけで動作するようになりましたか?
勝利者n。

はい、それは私のために働いた。IDEは新しい名前を解決することもできます。ありがとう。
勝利者n。

返事が遅れて申し訳ありません。同期ボタンを押すと、IDEが新しい依存関係を自動的に追加します。IDEの動作を規定するのはビルドシステムであり、「古い」アイデアスタイルでプロジェクトに変更を加えることはお勧めしません(つまり、モジュールとプロジェクト構成の変更を意味します)。お役に立ててうれしいです。
イマノール2013

5
Android Studio 2.xが依存関係を取得する前に、。/ gradlewをクリーンにしてから./gradlewをビルドしてください。そうしないと、NoClassDefエラーが発生します
user123321 2013

2
今日、私が入手した最新のビルドは5.2.08でした
chrisbjr

114
  1. [ファイル]-> [プロジェクト構造]に移動します
  2. 「プロジェクト設定」を選択します
  3. 「依存関係」タブを選択します
  4. 「+」をクリックして「1.Library Dependencies」を選択します
  5. 検索:com.google.android.gms:play-services
  6. 最新バージョンを選択して[OK]をクリックします

出来上がり!Gradleと戦う必要はありません:)


5
これは私にとってはうまくいき、とても簡単です。Playサービスの最新バージョン番号はすでにわかっています。リストから選択するだけで、gradleファイルが変更されます。
Nick Perkins

同じ方法を使用して、リーダーボードのBaseGameUtilsをインポートできますか?
eng.ahmed

はい、アーメド。この方法で、任意のAndroidライブラリをインポートできます。
Ivo Stoyanov

シンプルでエレガントなソリューション。@IvoStoyanovのおかげで、私のような初心者の多くの時間を節約できます。
Manikandan S

5

編集:この人は本当にそれを持ち帰り、良い小さなチュートリアル http://instantiatorgratification.blogspot.com/2013/05/google-play-services-with-android-studio.html を持っています

片側メモ:何度も遊んだため、gradlew clean正常に実行するにはa を実行する必要がありました。

プロジェクトをインポートした場合、または\ extras \ google \ google_play_services \ samples \ mapsにあるサンプルマップアプリケーションから作業している場合は、このチュートリアルを確認してください。

https://stackoverflow.com/a/16598478/2414698

新しいプロジェクトを最初から作成する場合は、同じ投稿に対するXavのコメントに注意してください。彼は、Android Studioは別のコンパイラーを使用しており、build.gradleファイルを手動で変更する必要があると説明しています。私はこれを成功させました。コピーした

  • google-play-services.jar
  • google-play-services.jar.properties

私のlibディレクトリに、build.gradleファイルに以下を追加しました

dependencies {
    compile files('libs/android-support-v4.jar')
    compile files('libs/google-play-services.jar')
}

また、これが新しいプロジェクトである場合は、この投稿も確認してください。

https://stackoverflow.com/a/16671865/2414698


7
リンク先の記事は廃止されました。このソリューションは推奨されません。
RevNoah 2013

4

これらの回答のほとんどはコンパイル時の依存関係に対処するだけですが、実行時に多数のNoClassDef例外が見つかります。これは、google-play-services.jar以外にも必要なためです。ライブラリプロジェクトの一部であるリソースを参照します。jarしかない場合、それらは正しく含まれません。

私にとって最も効果的だったのは、最初にEclipseでプロジェクトを正しくセットアップすることでした。ここで説明するように、プロジェクトがアプリとライブラリの両方を含むように構造化します。http//tools.android.com/tech-docs/new-build-system/user-guide#TOC-Multi-project-setup

次に、Eclipseからアプリプロジェクトをエクスポートし、http//developer.android.com/sdk/installing/migrate.htmlの説明に従ってAndroid Studioにインポートします。アプリプロジェクトとGoogle Play開発者サービスライブラリプロジェクトの両方を必ずエクスポートしてください。インポートすると、ライブラリプロジェクトが検出され、モジュールとしてインポートされます。プロジェクトのインポートプロセスでは、すべてのデフォルトを受け入れました。


2
ありがとう、でも日食は使いたくない!
androidtester 2013年

2

AndroidスタジオでのGoogle Play開発者サービスの統合。

ステップ1:

SDK manager->Tools Update this

1.Google play services
2.Android Support Repository

ステップ2:

chance in build.gradle 
defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    dependencies {
    compile 'com.android.support:appcompat-v7:+'
    compile 'com.google.android.gms:play-services:4.0.+'
}

ステップ3:

 android.manifest.xml
<uses-sdk
        android:minSdkVersion="8" />

ステップ4:

Sync project file with grandle.
wait for few minute.

ステップ5:

File->Project Structure find error with red bulb images,click on go to add dependencies select your app module.
Save

ヘルプが必要な場合はコメントを書き込んでください。ハッピーコーディング。


2

上記の解決策のどれも私にとってうまくいきませんでした。それが私のセットアップまたは新しいリリースに固有のものかどうかはわかりません。

私はAndroid Studio Beta 0.8.9を使用していますが、次の指示に従ってライブラリリストにcom.google.android.gms:play-serviceがありませんでした。

[ファイル]-> [プロジェクト構造]-> [プロジェクト設定]を選択します-> [依存関係]タブを選択します[+]をクリックします-> 1.ライブラリの依存関係-> com.google.android.gms:play-services:+

私はすでにこれをしていました:

まず、SDKマネージャーを起動し、「extras」の下にある次のファイルをダウンロードしてインストールする必要があります。Androidサポートリポジトリ、Google Playサービス、Googleリポジトリ。

それを解決したのは、SDK Managerから「FroyoのGoogle Playサービス」を追加して、最初のステップを繰り返すことでした。

理由は正しく理解できませんでしたが、これでうまくいきました。

PS:今でもplay-servicesを検索しても、これは表示されませんが、直接スクロールしてリストを見ると、そこにあります。


2

この記事に従ってください-> http://developer.android.com/google/play-services/setup.html

あなたはAndroid Studioを使用して選択する必要があります

ここに画像の説明を入力してください

Gradleファイルの例:

注:アプリケーションモジュールディレクトリ内のbuild.gradleファイルを開きます。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 20
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "{applicationId}"
        minSdkVersion 14
        targetSdkVersion 20
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:20.+'
    compile 'com.google.android.gms:play-services:6.1.+'
}

Google Play開発者サービスの最新バージョンは、https//developer.android.com/google/play-services/index.htmlにあります。


1

私は次のことをした後でこれがうまくいきました:

  • google-play-services-libをモジュールとして(モジュールとプロジェクトの違いに注意)、google-play-services.jarをモデルの「libs」ディレクトリに追加します。
  • その後、ライブラリを作成してjarをビルドパスに追加するか、jarを別のライブラリに追加します。私は通常、すべての/libs/*.jarファイルを追加する単一のIDEAライブラリを持っています。
  • モジュール設定(F4)を使用して、ライブラリをモジュールのビルドパスに追加します。
  • google-play-services-libをモジュール依存関係としてプロジェクトに追加します。
  • できた!

注:これでもランタイム例外は発生しませんが、機能します。


同じエラーが発生する:R.javaとBuildConfig.javaが重複しています
androidtester

コンパイル依存としてモジュールを持っていますか?
Johan S

はい!唯一の解決策は、前に述べたものです(プレビューフォルダーを除く)
androidtester

0

プロジェクトのbuild.gradleファイルを開き、依存関係モジュールの下に以下の行を追加します。

dependencies {
    compile 'com.google.android.gms:play-services:7.0.0'
}

ライブラリ全体を統合したくない場合は、以下にGoogle AnalyticsMapsを追加します

dependencies {
    compile 'com.google.android.gms:play-services-analytics:7.0.0'
    compile 'com.google.android.gms:play-services-maps:7.0.0'
}

0

私の場合、google-play-services_libは、プロジェクト内のGoogleマップとGCMのモジュール(外部ライブラリ)として統合されています。

今、これらの時間はGoogle Places Autocomplete APIの実装に必要ですが、問題は、コードが新しく、私のライブラリが古いため、一部のクラスが見つからないことです。

次の手順に従ってください...

1> Google PlayサービスをSDK Managerに更新します

2> google playサービスの新しい.jarファイルを選択します(Sdk / extras / google / google_play_services / libproject / google-play-services_lib / libs)古いファイルで置き換えます

私は成功しました... !!!


-3

私はgoogle-play-services_libから私のプロジェクトのlibsディレクトリにplay libsファイルをコピーしました:

  • google-play-services.jar
  • google-play-services.jar.properties。

次に、それらを選択して右クリックし、[ライブラリとして追加]をクリックします。


1
あなたの回答に感謝しますが、それは私にはうまくいきませんでした-それは私が以前に試したものに似ています
androidtester 2013年

このアドバイスは、他の場所で読んだ他の情報に反します。最初の回答でリンクされている回答は、このメソッドを使用しているため、廃止されました。
RevNoah 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.