Google Play 서비스 라이브러리 업데이트 및 누락 된 기호 @ integer / google_play_services_version


186

내 프로젝트를 최신 버전의 Google Play 서비스 ( v4.0, Halloween 2013에 출시)로 업그레이드 할 때 이제 AndroidManifest.xml파일에 새 태그를 추가해야 합니다.

<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />

불행히도, 그렇게하려고하면이 컴파일 오류가 발생합니다.

android-apt-compiler: /blahblah/AndroidManifest.xml:409: error: Error: No resource found that matches the given name (at 'value' with value '@integer/google_play_services_version').

그런 다음 파일을 탐색하여 google-play-services_lib/res/values/version.xml해당 기호의 원시 정수를 볼 수 있습니다.

<integer name="google_play_services_version">4030500</integer>

그런 다음 다시 내에 삽입하십시오 AndroidManifest.xml.

<meta-data
    android:name="com.google.android.gms.version"
    android:value="4030500" />

이 작업은 절대적으로 잘 작동하며 프로젝트와 앱을 컴파일하고 실행할 수 있습니다. 그러나 명백한 업그레이드 가능성 문제로 인해 바람직하지 않은 수정입니다.

어떤 아이디어?


정확히 똑같은 문제가 있지만 정수를 찾을 수 없습니다.
— Björn Hallström

답변:


256

이클립스를 사용하는 모든 사람들에게 이것이 그렇게해야합니다.

Eclipse-> 가져 오기-> 기존 Android 코드-> 찾아보기-> google-play-services_lib 폴더로 이동하십시오 (android-sdk / extras / google / google_play_services / libproject).

그런 다음 프로젝트에서

제어 클릭-> 속성-> 안드로이드-> 라이브러리, 추가-> 방금 가져온 프로젝트 선택-> 확인


폴더를 찾기 위해 다른 질문의 지시에 따라 이것을 시도 했지만 Eclipse는 .project표시된 google-play-services_lib디렉토리에 파일을 쓸 수 없다고 말합니다 . .project명백한 이유는 Eclipse가 SDK가있는 Program Files 디렉토리에 쓸 수 없기 때문에 파일을 수정 해야하는 이유 (더 이상 SDK에 속하고 "올바른"이어야 함)가 더 구체적인 질문 일 것입니다. 처음에.
— 또는 매퍼

나는 이것을 전에 보지 못했기 때문에 그것을 고치는 방법을 정확히 모른다. 이미 명시 적으로 수정하지 않는 한 폴더 내에 오류가 있다고 생각하지 않습니다. 단순히 오래된 것일 수 있으며 다시 다운로드해야 할 수도 있습니다 (문제 일 가능성은 없지만 알 수 없음).
— PSchuette

라이브러리를 추가하려고하거나 프로젝트를 가져 오려고 할 때이 오류가 발생 했습니까?
— PSchuette

Eclipse에서 감사했습니다. 나는 그것을 올바르게했다고 생각했지만 그것을 다시하고 컴파일러 문제를 해결했다.
— Anna Billstrom

4
가져올 폴더는 extras \ google \ google_play_services \ libproject입니다.
— Kamil

78

이 수정 사항은 IntelliJ 사용자에게만 적용될 수 있습니다 !! (이 게시물 하단에 모든 사람에게 적용되는 추가 정보가 있습니다.)

이 문제를 해결했습니다! 나는 IntelliJ를 사용 하고 있으며 내가 포함하는 방식을 잘못 구성 한 것으로 나타났습니다.google-play-services_lib 모듈을 종속성 .

파일을 편집하여 GUI를 통해 완전히 수정하고 전혀 수정하지 않았으므로 다음 스크린 샷이 있습니다.

1 단계-초기 프로젝트 구조 그래서 내 프로젝트 구조는 다음과 같이 시작되었습니다 ...

2 단계-Google Play 서비스 라이브러리 제거 그런 다음 google-play-services 라이브러리를 선택한 다음 하단의 빼기 버튼을 클릭하여 종속성 목록에서 라이브러리를 . 내 프로젝트에는이 라이브러리가 절대적으로 필요하므로 대화 상자의 맨 아래에 오류가 있습니다. 그러나 걱정하지 마십시오. 곧 다시 추가하겠습니다.

3 단계-google-play-services를 모듈 종속성으로 추가 다음에 나는 추가했다 google-play-services_lib 으로 라이브러리 종속성 대신 모듈 종속성으로 했습니다. 그런 다음 하단의 위쪽 화살표 버튼을 몇 번 눌러이 종속성을 목록의 맨 위로 이동합니다. 그러나 하단의 오류를 확인하십시오 (아직 아직 완료되지 않았습니다!)

4 단계-전구를 클릭하여 google-play-services 라이브러리를 종속성으로 추가 그런 다음 오류 메시지 영역의 대화 상자 맨 아래에있는 전구를 클릭하여 두 가지 선택 사항 ( 종속성에 추가 ... 또는 라이브러리 제거 ) 을 제공하는이 작은 작은 팝업을 표시합니다 . 클릭종속성에 추가 ... 옵션 을 !

5 단계-google-play-services_lib 모듈에 라이브러리 추가 새로운 작은 대화 창이 나타납니다. 그것은 두 가지 선택을주었습니다. 하나는 내 주요 프로젝트 (이름이 흐려짐)와 다른 하나는google-play-services_lib . 프로젝트에 따라 더 많은 actionbarsherlock것들이 있을 수 있습니다 (당신이 볼 수있는 것처럼, 그런 것들). 고르다google-play-services_lib 하고 확인을 클릭하십시오!

그리고 마지막으로, 당신은 끝났습니다! 나는 이것이 다른 누군가를 도울 수 있기를 바랍니다!

추가 정보

이 문제가 시작된 이유 는 전체 프로젝트에 전체 프로젝트를 올바르게 포함 했다고 생각 했기 때문입니다 google-play-services_lib...하지만 실제로 jar 파일 ( google-play-services_lib/libs/google-play-services.jar) 만 포함하지 않았으며 실제로 포함했습니다 . 이 jar 파일에는 Android 리소스 값이 아닌 코드 만 포함되므로 @integer/google_play_services_version값이 실제로 는 프로젝트에 . 그러나 코드는 내 프로젝트에서 사용할 수 있었으므로 모든 것이 괜찮은 것처럼 보입니다.

그리고 부수적으로,이 문제를 해결 GooglePlayServicesUtil.getErrorDialog(...).show()하면 내가 가진 충돌을 수정 한 것으로 보입니다 . 그러나이 업데이트는 실제로 100 % 확실하지 않은 업데이트로 해결되었을 수도 있습니다.


2
나를 위해 작동하지 않습니다. "오류 메시지 영역의 대화 상자 아래쪽에 두 가지 선택을 제공하는이 작은 작은 팝업을 표시하는 전구가 없습니다"
— Vadorequest

2
귀하의 경우 프로젝트에서 Google Play 서비스를 완전히 제거한 다음 다시 가져 오려고합니다. 이 누락 된 정수 문제는 처음에 Google Play 서비스를 제대로 가져 오지 않은 경우에만 발생하므로 처음부터 시작하는 것이 좋습니다.
— Charles Madere

1
@Vadorequest google-play-services-lib 모듈을 선택하고 google-play-services.jar 파일을 모듈 종속성으로 추가 할 수도 있습니다 (! google-play-services-lib 모듈에!)
— Su-Au Hwang

2
이 답변 (IntelliJ 전용) 외에도 실제로 라이브러리 메소드 / 클래스를 사용하려는 경우 파일> 프로젝트 구조> google-play-services_lib 모듈 선택> 종속성으로 이동하여 "내보내기"를 확인해야합니다 google-play-services.jar
— 황수 오

2
요약 : libproject 디렉토리를 모듈로 추가하고 libproject 디렉토리에서 정수 값을 얻기 위해 기본 프로젝트에 종속되도록하십시오
— John61590

31

나는 같은 문제에 직면했고 Eclipse는 어쨌든 version.xml원본 google-play-services_lib프로젝트 의 파일을 / res / values 에 복사하면서 복사했습니다. 원본 프로젝트에서 파일을 가져 와서 프로젝트 사본에 붙여 넣었고 문제가 해결되었습니다.


이것은 또한 나를 고친 해결책이었습니다. 나에게 묻는다면 Google의 놀라운 감독입니다.
— Henrique de Sousa

고마워 친구, 이것은 내 문제를 해결
— Fabii

1
이것은 내 문제를 해결했습니다. 이클립스 가져 오기에서이 파일을 건너 뛴 이유는 무엇입니까? 실마리?
— nizam.sp 2015 년

24

Eclipse에서 Google Play 라이브러리를 프로젝트 작업 공간으로 가져온 후 version.xml 파일을 복사했습니다.

google-play-services_lib/res/values/version.xml

에

MyProjectName/res/values/version.xml

3
이렇게하면 효과가 있지만 문제는 최신 버전의 Google Play 서비스 라이브러리로 업그레이드하는 것이 조금 더 성가신다는 것입니다. version.xml파일을 업그레이드 할 때마다 파일 을 바꿔야 할 것입니다 .
— Charles Madere

20

gradle을 사용하는 사람에게는 프로젝트 소스를 포함시키지 말고 대신 SDK 관리자를 사용하여 다운로드하고 종속성에 다음 행을 추가하십시오.

compile 'com.google.android.gms:play-services:4.0.30'

찾을 수없는 경우에만 : 오류 : ': app'프로젝트를 구성하는 중에 문제가 발생했습니다. > ': app : _debugCompile'구성에 대한 모든 종속성을 해결할 수 없습니다. > com.google.android.gms : play-services : 6.1. +와 일치하는 버전을 찾을 수 없습니다. 다음 위치에서 검색 : jcenter.bintray.com/com/google/android/gms/play-services/... jcenter.bintray.com/com/google/android/gms/play-services
— 마테오를

파일 : /home/teo/Documents/programmi/android-studio-new/sdk/extras/android/m2repository/com/google/android/gms/play-services/maven-metadata.xml 파일 : / home / teo / Documents / programmi / android-studio-new / sdk / extras / android / m2repository / com / google / android / gms / play-services / 필수 : ​​xxxxxxx : app : unspecified
— matteo

라이브러리를 찾는 경로는 SDK 관리자가 실제로 다운로드 한 위치와 일치하지 않는 것처럼 보이지만 심볼릭 링크를 만든 후에도 문제가 해결되지 않습니다. 정확히 어떤 파일이나 폴더를 찾아야하는지 알 수 없습니다. 어떤 생각?
— matteo

1
가지고있는 버전을 확인하려면 : "ls -1 $ ANDROID_HOME / extras / google / m2repository / com / google / android / gms / play-services". 최신 버전을 얻으려면 SDK 관리자를 실행하고 원하는 구성 요소를 업데이트하십시오. 심볼릭 링크를 엉망으로 만들지 마십시오.
— Sofi Software LLC

12
  1. Android SDK Manager에서 "Google Play Services"및 "Google Repository"를 설치하십시오.
  2. compile 'com.google.android.gms:play-services:4.1.32@aar'당신 의 라인 을 추가build.gradle .
  3. 결과적으로 리소스 @integer/google_play_services_version를 사용할 수있게됩니다.

1
이 컴파일 'com.google.android.gms : play-services : 4.4.52'를 추가했습니다
— powder366

이것은 나를 위해 그것을했다. 아무도 build.gradle의 의존성 섹션의 최종 결과가 어떻게 생겼는지 공개하지 않았습니다. 도움이 될 것입니다
— snowking16

10

커프스를 벗어나면 프로젝트가 이전 버전의 Play Services 라이브러리 프로젝트에 연결된 것 같습니다. Google에서 권장하는 접근 방식은 SDK에서 라이브러리 프로젝트를 찾고 로컬 사본을 만드는 것입니다. 그러나 이는 SDK 관리자를 통해 Play Services 라이브러리 프로젝트를 업데이트 할 때마다 복사본을 새로운 복사본으로 교체해야 함을 의미합니다.


예, Android SDK Manager로 다운로드 한 파일의 사본을 작업 디렉토리에 저장하여 라이브러리를 프로젝트에 통합했습니다. 또한 동일한 작업을 수행하여 라이브러리를이 새 버전으로 업데이트했습니다 (Android SDK 디렉토리에서 파일을 복사하고 내 프로젝트의 기존 파일을 덮어 썼습니다).
— Charles Madere


7

마지막 버전으로 업데이트 한 후 모든 프로젝트 에서이 문제가 발생했지만 라이브러리 참조를 다시 추가하면 해결되었습니다.

Eclipse에서 작업 공간에 라이브러리가없는 경우 다음을 사용하여 라이브러리를 추가 할 수 있습니다 File.-> Import-> Existing Android Code Into Workspace-> google-play-services_lib프로젝트 lib 를 찾아서 탐색하십시오 ( android-sdk/extras/google/google_play_services/libproject).

여기에 이미지 설명을 입력하십시오

그런 다음 프로젝트의 폴더 를 삭제 /bin하고 /gen(clean 옵션과 비슷한 것) 프로젝트를 다시 빌드하십시오.


그러나 이것은 apk를 5MB 무겁게 만듭니다
— Siddharth

6

이클립스 해결

다음 단계를 수행하십시오.

  1. 가져 오기-> 기존 Android 코드를 작업 공간으로 사용하여 google-play-services_lib 폴더를 프로젝트로 가져옵니다.
  2. 프로젝트 속성에서 Android 섹션을 선택하고 하단의 라이브러리 섹션에서 추가를 클릭하고 google-play-services_lib를 선택한 후 적용 링크를 클릭하여 http://i.stack.imgur.com/opSeJ.png 링크를 클릭 하십시오.

내가 google-play-services_lib있었다F:\Android\sdk\extras\google\google_play_services\libproject\google-play-services_lib
— 다니엘 BONETTI

5

Google의 Android 개발자 사이트에는 "프로젝트에 Google Play 서비스 추가"방법에 대한 지침이 있으며 Play 서비스 버전을 업그레이드하는 방법과도 관련이 있습니다. Eclipse, Android Studio 또는 "다른 방법"에 대한 지시 사항을 볼 수있는 드롭 다운 메뉴도 있습니다. 지침이 변경 될 경우이를 볼 수있는 가장 좋은 장소입니다. 페이지는 다음과 같습니다.

http://developer.android.com/google/play-services/setup.html

그러나 여기에 대한 대부분의 답변은 Eclipse에 대한 것이므로 Android Studio로 Play 서비스를 업그레이드하기위한 간략한 요약입니다.

  1. 애플리케이션 모듈 디렉토리에서 build.gradle 파일을여십시오. 참고 : Android Studio 프로젝트에는 각 모듈에 대한 최상위 build.gradle 파일과 build.gradle 파일이 포함되어 있습니다. 응용 프로그램 모듈의 파일을 편집하십시오.
  2. "종속성"에서 빌드 규칙을 업데이트하여 개발 머신에서 다운로드 한 플레이 서비스 버전을 참조하십시오.

여기에 설명 된대로 \ sdk \ extras \ google \ m2repository \ com \ google \ android \ gms \ play-services 폴더에서 개발 시스템에 다운로드 한 플레이 서비스 버전의 버전 번호를 찾을 수 있습니다. : Google Play 서비스 개정판과 설치 버전을 어떻게 일치합니까?


마지막으로 Android 초보자에게 좋은 대답입니다. 이 답변은 더 높아야합니다.
— Jelle

4

Eclipse의 경우 google-play-services_lib에 프로젝트 참조를 추가했습니다.

속성 -Android 라이브러리 창 (하단 창)에서 google-play-services_lib가 나열되어 있는지 확인하십시오. 그렇지 않은 경우 추가 ... 버튼을 클릭하고 google-play-services_lib를 선택하십시오.


3

같은 문제가 있었는데 version.xml 파일이 google-play-services_lib에 없었습니다. SDK 관리자를 시작하고 특히 "extras"와 관련된 업데이트를 수락하십시오.


2

google-play-services_lib를 가져 오는 동안 AndroidManifest.xml 및 version.xml에 정의 된 버전 코드를 확인하십시오. 버전 코드의 차이점을 발견하여 4242000으로 변경했습니다 . 변경 후 @ integer / google_play_services_version 에 더 이상 컴파일 오류가 없습니다 .여기에 이미지 설명을 입력하십시오


2
이것은 좋은 방법이 아닙니다. Google Play 서비스를 업데이트 할 때마다 수동으로 업데이트해야합니다.
— PSchuette

2

내 모듈 : 앱 gradle 빌드 파일에 Google Play 서비스를 추가하여 수정했습니다. 또한 GMS를 업데이트 할 때 버전을 업데이트하라는 문서도 있습니다.

dependencies {

compile 'com.google.android.gms:play-services:9.6.1'

} 

1

다음은 Google Play 서비스 Lib을 사용할 때 많은 오류를 피하는 주요 작업입니다.

  1. lib 프로젝트를 Eclipse 프로젝트 작업 공간에 복사하십시오.
  2. Google Play 서비스 라이브러리 프로젝트의 대상 SDK는 "Google
  3. API "3- 메타 데이터가 매니페스트 파일에 추가되어야합니다.
  4. 일부 경우 19가 제대로 작동하지 않으므로 19로 완전히 업데이트하지 않으면 프로젝트 대상 SDK는 17이어야합니다.

1

Maven과 IntelliJ를 사용하는 프로젝트와 동일한 문제가있었습니다. Google Play 서비스는 Maven 종속성으로 추가되었습니다. maven 빌드는 명령 줄에서 잘 작동했지만 IntelliJ는이 누락 된 기호에 대해 불평했습니다.@integer/google_play_services_version

필자의 경우 maven POM 파일을 강제로 업데이트 하여 문제를 해결했습니다.


1

내 경우에는 앱의 소스 코드와 동일한 드라이브에 google-play-services_lib 폴더를 복사해야했습니다.

  • F : \ Products \ Android \ APP * .java <-내 앱이 여기 있으므로 아래 폴더에 복사했습니다.
  • F : \ Products \ Android \ libs \ google-play-services_lib

1

IDE를 사용하지 않고 명령 줄 빌드 (ant 및 ndk-build 사용)를 사용하는 경우이를 해결하는 방법입니다.

'android'명령으로 모든 필수 부품을 설치하십시오. 그런 다음 프로젝트 루트에 google-play-service_lib /의 사본을 만드십시오. 이 줄을 포함하도록 project.properties를 편집하십시오.

android.library.reference.1=./google-play-services_lib

하지만 먼저해야 android update project -p . -t android-22합니다 google-play-services_lib. 동등하게, <property name="android.library.reference.1" value="./google-play-services_lib"/>당신에게 추가 하십시오 build.xml(나는 최소화 build.xml하고 도랑을 버렸습니다 .properties).
— Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

0

나는 같은 문제가 있었다. 문제는 "google-play-services.jar"을 제대로 가져 오지 못한 것입니다. google_play_service_lib 프로젝트의 일부 임에도 불구하고 내 프로젝트로 입니다. Eclipse를 사용하는 경우 Android Private Libraries 섹션에서 play services jar 파일이 있는지, 라이브러리에서 파일을 내보내는 지 확인하십시오.

Android SDK 플랫폼 도구 버전 17 (19 아님) 및 Android SDK 도구 버전 22.0.1을 사용하고 있습니다.


0

방금 Android SDK Manager의 Extras 폴더에서 Google Play 서비스를 업데이트했습니다.


0

문제는 라이브러리 프로젝트와 재생 서비스를 사용하는 프로젝트가 다른 디렉토리에 있다는 것입니다. 그래서 그냥:

  • 1. 파일을 동일한 작업 공간에 추가 한 다음 라이브러리를 제거하십시오.
  • 2. 일식 다시 시작
  • 3. 도서관 프로젝트를 다시 추가하십시오
  • 4. 클리어

0

SDK 디렉토리에서 직접 프로젝트를 만들지 않는 것이 좋습니다. lib 프로젝트를 앱이있는 위치로 복사 한 다음 여기에서 가져 오는 것이 좋습니다. 그렇지 않으면 다음에 다른 앱의 프로젝트를 가져올 때 이미 사용 중입니다.

https://developer.android.com/google/play-services/setup.html

참고 : 개발 작업 공간에 복사 한 라이브러리의 사본을 참조해야합니다. Android SDK 디렉토리에서 직접 라이브러리를 참조하면 안됩니다.


0

2017 년에 10.0.1 버전의 플레이 서비스를 사용하려면 가져 오기가 필요합니다 play-services-basement(에 있어야 함 play-services-base).


좀 더 설명해 주시겠습니까? 현재 종속성을 확인하고 추가하는 방법은 무엇입니까?
— Hassan Gulzar

나는이 답변을 썼을 때 모든 것을 수동으로 시행 착오했습니다. gradle을 사용하면 작업이 훨씬 쉬워졌습니다.
— goobliata

0

Windows 10에서 Android Studio 3.3.2

File-> Invalidate Caches / Restart 및 invalidate and Restart대화 상자에서 버튼을 선택하십시오 .


0

나는 같은 문제가 있었다.이 2 줄을 build.gradle에 추가하면 문제가 해결 될 것이다. ;)

dependencies {  
  implementation 'com.google.android.gms:play-services:12.0.1'  
  implementation 'com.google.android.gms:play-services-vision:10.0.0'    
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.