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 / Restartinvalidate 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.