development

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

big-blog 2020. 5. 15. 19:58
반응형

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


내 프로젝트를 최신 버전의 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" />

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

어떤 아이디어?


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

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

그런 다음 프로젝트에서

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


이 수정 사항은 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 % 확실하지 않은 업데이트로 해결되었을 수도 있습니다.


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


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

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

MyProjectName/res/values/version.xml

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

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

  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를 사용할 수있게됩니다.

커프스에서 프로젝트가 이전 버전의 Play Services 라이브러리 프로젝트에 연결된 것처럼 느껴집니다. Google의 권장 방법은 SDK에서 라이브러리 프로젝트를 찾아 로컬 사본을 만드는 것입니다. 그러나 이는 SDK 관리자를 통해 Play Services 라이브러리 프로젝트를 업데이트 할 때마다 복사본을 새로운 복사본으로 교체해야 함을 의미합니다.


google_play_services_froyo를 사용하는 동안이 문제를 해결했습니다.

이 버그를 신고했습니다 : https://code.google.com/p/google-plus-platform/issues/detail?id=734


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

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

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

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


이클립스 해결

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

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

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 서비스 개정판과 설치 버전을 어떻게 일치합니까?


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

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


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


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


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

dependencies {

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

} 

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

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

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

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


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

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

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

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

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

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

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


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


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

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

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

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

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


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


Windows 10에서 Android Studio 3.3.2

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

참고 URL : https://stackoverflow.com/questions/19843784/google-play-services-library-update-and-missing-symbol-integer-google-play-serv

반응형