Google Play 서비스가 포함 된 Android 스튜디오


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

두 개의 BuildConfig 파일과 두 개의 R 클래스가있는 것 같습니다. 문제를 어떻게 해결할 수 있습니까?

편집하다:

컴파일러가 두 개의 R.java 파일을 컴파일하는 것을 확인했습니다. 하나는 내 프로젝트 폴더에 있고 다른 하나는 % USERPROFILE % .AndroidStudioPreview 폴더에 있습니다. 그래서 컴파일러 설정에서이 "Preview"폴더를 제외하려고했습니다. 이제 작동합니다. 이 문제는 프로젝트에서 Google Play 서비스 클래스를 사용하기 시작한 후에 만 ​​발생합니다. 누군가이 문제의 원인을 설명해 주시면 감사하겠습니다.


이 컴파일 'com.google.android.gms : play-services : 6.5.87'이 Android 스튜디오의 종속성 섹션에 추가되는 동안 누구든지 도울 수 있습니다. 우리는 단지를 추가 할 수 있지만 우리가 단지를 추가하지 않기 때문에 위의 줄이하는 일을합니다.
Android Killer

답변:


243

gradle 플러그인 v0.4.2의 출시 이후 Android 스튜디오에서 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 Maps 및 Analytics 만 필요한 경우 이전 예제를 다음 예제로 바꿀 수 있습니다.

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

여기 에서 전체 종속성 목록을 찾을 수 있습니다.

몇 가지 참고 사항 :

  • 최신 Play 서비스 라이브러리 버전을 사용하십시오. 이전 버전 인 경우 android studio에서 강조 표시합니다. 오늘 (2 월 5 일은 6.5.87) 현재 Gradle 에서 최신 버전을 확인할 수 있습니다.
  • Android Studio의 주요 업데이트 후 @ user123321의 의견에 제안 된대로 다음 지침에 따라 프로젝트를 다시 빌드합니다.

    프로젝트 폴더
    ./gradlew clean
    ./gradlew build로 cd하십시오.


안녕 Estornino. 이 업데이트도 보았지만 Android Studio (적어도 IDE 자체)가 종속성을 어떻게 선택하는지 궁금합니다. Gradle 설정으로 만 작동하도록 했습니까?
빅터 n.

네 그것은 나를 위해 일했습니다. IDE는 또한 새 이름을 확인할 수 있습니다. 감사.
빅터 n.

늦은 답변 죄송합니다. 동기화 버튼을 누르면 ide가 새 종속성을 자동으로 추가합니다. IDE 동작을 지배하는 것은 빌드 시스템이고 "오래된"아이디어 스타일로 프로젝트를 변경하는 것은 권장하지 않습니다 (모듈 및 프로젝트 구성 변경을 의미합니다). 당신을 위해 일하는 것이 기쁩니다.
Imanol 2013-07-13

5
android studio 2.x가 의존성을 선택하기 전에 ./gradlew를 깨끗하게 한 다음 ./gradlew를 빌드하십시오. 그렇지 않으면 NoClassDef 오류가 발생합니다
user123321 2013-08-27

2
오늘로서, 내가 가진 최신 빌드는 5.2.08이었다
chrisbjr

114
  1. 파일-> 프로젝트 구조로 이동하십시오.
  2. '프로젝트 설정'을 선택하십시오.
  3. '종속성'탭을 선택합니다.
  4. '+'를 클릭하고 '1. Library Dependencies'를 선택하십시오.
  5. 검색 : com.google.android.gms : play-services
  6. 최신 버전을 선택하고 '확인'을 클릭하십시오.

짜잔! Gradle과 싸울 필요가 없습니다. :)


5
이것은 나를 위해 일했으며 매우 쉽습니다. 이미 최신 플레이 서비스 버전 번호를 알고 있습니다. 목록에서 선택하기 만하면 gradle 파일이 자동으로 수정됩니다!
Nick Perkins

리더 보드 용 BaseGameUtils를 가져올 때 동일한 방법을 사용할 수 있습니까?
eng.ahmed

네, 아흐메드. 이러한 방식으로 모든 Android 라이브러리를 가져올 수 있습니다.
Ivo Stoyanov 2015

간단하고 우아한 솔루션. 감사합니다 @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 jul.

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에서 "Google play services for Froyo"를 추가 한 다음 첫 번째 단계를 반복하는 것이 었습니다.

이유를 제대로 이해하지 못했지만 작동했습니다.

추신 : 지금도 플레이 서비스를 검색 할 때 이것이 오지 않는다는 것을 방금 관찰했지만 직접 스크롤하여 목록을 살펴보면 바로 거기에 있습니다.


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 Analytics지도 가 추가 됩니다.

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> SDK Manager로 Google Play 서비스 업데이트

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

이 조언은 내가 다른 곳에서 읽은 다른 정보에 위배됩니다. 첫 번째 답변에 연결된 답변은이 방법을 사용하기 때문에 더 이상 사용되지 않습니다.
RevNoah jul.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.