Cập nhật Thư viện Dịch vụ Google Play và biểu tượng bị thiếu @ số nguyên / google_play_service_version


186

Khi nâng cấp dự án của tôi lên phiên bản mới nhất của Google Play Services ( v4.0, phát hành vào Halloween 2013 ), giờ đây bạn có nghĩa vụ phải thêm một thẻ mới vào AndroidManifest.xmltệp.

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

Thật không may, khi tôi thử làm điều đó, sau đó tôi gặp lỗi biên dịch này:

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').

Sau đó tôi có thể điều hướng đến tệp tại google-play-services_lib/res/values/version.xmlvà xem số nguyên thô cho biểu tượng đó:

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

Và sau đó chèn nó trở lại vào AndroidManifest.xml:

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

Làm điều này hoạt động hoàn toàn tốt và sau đó tôi có thể biên dịch và chạy dự án và ứng dụng tốt. Nhưng nó chắc chắn là một sửa chữa không mong muốn với các vấn đề nâng cấp rõ ràng.

Có ý kiến ​​gì không?


có chính xác cùng một vấn đề ngay bây giờ - nhưng không thể tìm thấy số nguyên.
Bjorn Hallström

Câu trả lời:


256

Đối với mọi người sử dụng Eclipse, đây là cách bạn nên làm.

Nhật thực -> nhập -> mã android hiện có -> duyệt -> điều hướng đến google-play-services_lib FOLDER (android-sdk / extend / google / google_play_service / libproject).

Sau đó, vào dự án của bạn

kiểm soát nhấp -> thuộc tính -> android -> thư viện, thêm -> chọn dự án bạn vừa nhập -> ok


Tôi đã thử điều này (làm theo các hướng dẫn từ câu hỏi khác để xác định vị trí thư mục), nhưng Eclipse nói rằng nó không thể ghi .projecttệp trong google-play-services_libthư mục được chỉ định . Rõ ràng, lý do ngay lập tức là Eclipse không thể ghi vào thư mục Tệp chương trình, nơi đặt SDK, nhưng câu hỏi cụ thể hơn là tại sao sửa đổi .projecttệp (rõ ràng thuộc về SDK và do đó cần phải "chính xác") ở nơi đầu tiên
HOẶC Mapper

Tôi chưa thấy điều này trước đây vì vậy tôi không biết chính xác cách khắc phục. Điều đó trong tâm trí, trừ khi đã được sửa đổi rõ ràng, tôi không nghĩ rằng lỗi tồn tại trong thư mục. Có thể nó chỉ đơn giản là hết hạn và cần phải được tải xuống lại (không chắc là vấn đề nhưng bạn không bao giờ biết).
PSchuette

Bạn có gặp phải lỗi này khi cố gắng thêm thư viện hoặc khi cố gắng nhập dự án không?
PSchuette

Cảm ơn- đã làm việc cho tôi, trên Eclipse. Tôi nghĩ rằng tôi đã làm đúng, nhưng đã làm lại và nó đã khắc phục vấn đề trình biên dịch.
Anna Billstrom

4
FOLDER bạn cần nhập có tại đây: ngoại hạng \ google \ google_play_service \ libproject
Kamil Szot

78

Xin lưu ý rằng sửa chữa này chỉ có thể áp dụng cho người dùng IntelliJ !! (Thông tin thêm ở dưới cùng của bài đăng này nên áp dụng cho tất cả mọi người.)

Đã sửa lỗi này! Tôi sử dụng IntelliJ và hóa ra tôi vừa định cấu hình sai cách tôi đưa google-play-services_libmô-đun làm phụ thuộc.

Vì tôi đã sửa lỗi này hoàn toàn thông qua GUI và hoàn toàn không phải bằng cách chỉnh sửa bất kỳ tệp nào, đây là một vài ảnh chụp màn hình:

Bước 1 - Cấu trúc dự án ban đầu Vì vậy, Cấu trúc dự án của tôi bắt đầu trông như thế này ...

Bước 2 - Đã xóa thư viện dịch vụ google-play-services Sau đó, tôi xóa google-play-servicesthư viện khỏi danh sách phụ thuộc của mình bằng cách chọn nó và sau đó nhấp vào nút trừ ở phía dưới. Lưu ý lỗi ở dưới cùng của hộp thoại, vì dự án của tôi hoàn toàn không yêu cầu thư viện này. Nhưng đừng lo lắng, chúng tôi sẽ sớm thêm lại!

Bước 3 - Đã thêm google-play-services dưới dạng phụ thuộc mô-đun Tiếp theo tôi đã thêm google-play-services_libnhư một phụ thuộc mô-đun thay vì phụ thuộc thư viện. Sau đó, tôi nhấn nút mũi tên lên ở phía dưới một vài lần để di chuyển sự phụ thuộc này lên đầu danh sách. Nhưng hãy chú ý lỗi ở phía dưới (chúng tôi vẫn chưa hoàn thành!)

Bước 4 - Nhấp vào bóng đèn để thêm thư viện google-play-services làm phụ thuộc Sau đó, tôi đã nhấp vào bóng đèn ở dưới cùng của hộp thoại trong vùng thông báo lỗi để hiển thị cửa sổ bật lên nhỏ này cung cấp hai lựa chọn ( Thêm vào phụ thuộc ... hoặc Xóa Thư viện ). Nhấp vào tùy chọn Thêm vào phụ thuộc ...

Bước 5 - Thêm thư viện vào mô-đun google-play-services_lib Một cửa sổ hộp thoại nhỏ mới sẽ xuất hiện. Nó đã cho tôi hai sự lựa chọn, một cho dự án chính của tôi (tên của nó bị mờ đi), và một lựa chọn khác cho google-play-services_libdự án. Bạn có thể có một bó nhiều hơn tùy thuộc vào dự án của bạn (như bạn có thể thấy actionbarsherlock, những thứ như vậy). Chọn google-play-services_libvà nhấp vào được!

Và cuối cùng, bạn đã hoàn thành! Tôi hy vọng điều này sẽ giúp người khác ngoài kia!

Thêm thông tin

Tôi tin rằng lý do mà vấn đề này đã xảy ra bắt đầu là vì tôi nghĩ rằng tôi đã đưa toàn bộ google-play-services_libdự án vào dự án tổng thể của mình một cách hợp lý ... nhưng tôi thực sự không có, và thay vào đó chỉ bao gồm đúng tệp jar của nó ( google-play-services_lib/libs/google-play-services.jar). Tệp jar đó chỉ bao gồm mã, không phải giá trị tài nguyên Android và do đó, @integer/google_play_services_versiongiá trị đó chưa bao giờ thực sự nằm trong dự án của tôi. Nhưng mã này đã có thể được sử dụng trong dự án của tôi, và do đó nó khiến mọi thứ dường như ổn.

Và như một lưu ý phụ, việc khắc phục sự cố này dường như cũng đã khắc phục sự GooglePlayServicesUtil.getErrorDialog(...).show()cố mà tôi từng gặp phải. Nhưng điều đó cũng có thể đã được sửa bởi bản cập nhật, không thực sự chắc chắn 100% ở đó.


2
Không làm việc cho tôi. Tôi không có "bóng đèn ở cuối hộp thoại trong vùng thông báo lỗi để hiển thị cửa sổ bật lên nhỏ này mang lại hai sự lựa chọn"
Vadorequest

2
Trong trường hợp của bạn, tôi có thể thử xóa hoàn toàn Dịch vụ Google Play khỏi dự án của mình và sau đó nhập lại. Vì sự cố thiếu số nguyên này chỉ xảy ra nếu Dịch vụ Google Play được nhập không đúng cách ngay từ đầu, nên có thể nên bắt đầu lại từ đầu.
Charles Madere

1
@Vadorequest bạn cũng có thể chọn mô-đun google-play-services-lib và thêm tệp google-play-services.jar làm phụ thuộc mô-đun (vào mô-đun google-play-services-lib!)
Su-Au Hwang

2
Ngoài câu trả lời này (cụ thể là IntelliJ) nếu bạn dự định thực sự sử dụng các phương thức / lớp của thư viện, bạn sẽ phải truy cập Tệp> Cấu trúc dự án> chọn mô-đun google-play-services_lib> Phụ thuộc và kiểm tra "Đã xuất" google-play-services.jar
Su-Au Hwang

2
Tóm tắt: thêm thư mục libproject dưới dạng mô-đun và biến nó thành phụ thuộc vào dự án chính của bạn để lấy giá trị nguyên từ thư mục
libproject

31

Tôi đã đối mặt với cùng một vấn đề và dường như Eclipse bằng cách nào đó đã để version.xmltệp trong / res / giá trị từ google-play-services_libdự án ban đầu trong khi tạo một bản sao. Tôi lấy tập tin từ dự án ban đầu và dán nó vào bản sao dự án của tôi và vấn đề đã được khắc phục.


Đây là giải pháp cũng khắc phục tôi, đó là một sự giám sát đáng kinh ngạc của Google nếu bạn hỏi tôi.
Henrique de Sousa

Cảm ơn bạn, điều này đã khắc phục vấn đề của tôi
Fabii

1
Điều này đã khắc phục vấn đề của tôi. Tại sao nhập nhật thực bỏ qua tập tin này? Có manh mối nào không?
nizam.sp

24

Trên Eclipse, sau khi nhập thư viện google play vào không gian làm việc của dự án, tôi chỉ sao chép tệp version.xml từ

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

đến

MyProjectName/res/values/version.xml

3
Làm điều này sẽ hoạt động, nhưng vấn đề là nó làm cho việc nâng cấp lên phiên bản mới hơn của thư viện Google Play Services trở nên khó chịu hơn một chút. Có lẽ bạn sẽ phải thay thế version.xmltệp với mỗi lần nâng cấp.
Charles Madere

20

Đối với bất kỳ ai sử dụng gradle: không bao gồm nguồn dự án, mà thay vào đó hãy tải xuống bằng SDK Manager và thêm dòng này vào phần phụ thuộc:

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

Chỉ có điều nó không tìm thấy nó: Lỗi: Xảy ra sự cố khi định cấu hình dự án ': app'. > Không thể giải quyết tất cả các phụ thuộc cho cấu hình ': app: _debugCompile'. > Không thể tìm thấy bất kỳ phiên bản nào phù hợp với com.google.android.gms: play-services: 6.1. +. Đã tìm kiếm ở các vị trí sau: jcenter.bintray.com/com/google/android/gms/play-service/, jcenter.bintray.com/com/google/android/gms/play-service
matteo

tệp: / home / programmi / android-studio-mới / sdk / extras / android / m2repository / com / google / android / gms / play-dịch vụ / Bắt buộc theo: xxxxxxx: ứng dụng: không xác định
matteo

Đường dẫn nơi thư viện tìm kiếm dường như không khớp với vị trí mà trình quản lý sdk thực sự đã tải xuống, nhưng ngay cả sau khi tạo liên kết tượng trưng, ​​sự cố vẫn không được khắc phục. Tôi đoán tôi không thể tìm ra chính xác tập tin hoặc thư mục cần tìm. Bất kỳ ý tưởng?
matteo

1
Để xem bạn có phiên bản nào: "ls -1 $ ANDROID_HOME / ngoại tuyến / google / m2reposeective / com / google / android / gms / play-services". Để có phiên bản mới hơn, hãy chạy trình quản lý SDK và cập nhật các thành phần bạn muốn. Đừng lộn xộn với các liên kết tượng trưng.
Phần mềm Sofi LLC

12
  1. Cài đặt "Dịch vụ Google Play" và "Kho lưu trữ của Google" từ Trình quản lý SDK Android.
  2. Thêm dòng compile 'com.google.android.gms:play-services:4.1.32@aar'vào của bạnbuild.gradle .
  3. Kết quả là tài nguyên @integer/google_play_services_versionsẽ có sẵn.

1
Tôi đã thêm phần biên dịch này 'com.google.android.gms: play-services: 4.4.52'
Powder366

điều này đã làm điều đó cho tôi. Không ai công bố kết quả cuối cùng của phần phụ thuộc trong build.gradle trông giống như ... điều đó sẽ hữu ích
snowking16

10

Tắt còng, có cảm giác như dự án của bạn được kết nối với phiên bản cũ hơn của dự án thư viện Play Services. Cách tiếp cận được đề xuất, bởi Google, là để bạn tìm dự án thư viện trong SDK và tạo một bản sao cục bộ. Tuy nhiên, điều này có nghĩa là bất cứ khi nào bạn cập nhật dự án thư viện Dịch vụ Play thông qua Trình quản lý SDK, bạn cũng cần thay thế bản sao của mình bằng một bản sao mới.


Có, tôi đã tích hợp thư viện vào dự án của mình bằng cách đặt một bản sao của các tệp được tải xuống với Trình quản lý SDK Android vào thư mục làm việc của tôi. Ngoài ra, tôi đã cập nhật thư viện lên phiên bản mới này bằng cách thực hiện điều tương tự (sao chép các tệp từ thư mục SDK Android và ghi đè lên các tệp hiện có trong dự án của tôi).
Charles Madere


7

Sau khi cập nhật phiên bản cuối cùng, tôi gặp vấn đề này với tất cả các dự án của mình, nhưng nó đã được giải quyết chỉ bằng cách thêm lại tài liệu tham khảo thư viện:

nếu bạn không có thư viện vào không gian làm việc của bạn trong Eclipse, bạn có thể thêm nó bằng: File-> Import-> Existing Android Code Into Workspace-> duyệt và điều hướng đến google-play-services_libdự án lib, ( android-sdk/extras/google/google_play_services/libproject).

nhập mô tả hình ảnh ở đây

sau đó xóa /bin/gencác thư mục của dự án của tôi (một cái gì đó tương tự như tùy chọn sạch) và xây dựng lại dự án của tôi.


nhưng điều này làm cho apk nặng hơn 5mb
Siddharth

6

Đã giải quyết cho Eclipse

Thực hiện theo các bước tiếp theo:

  1. Nhập thư mục google-play-services_lib làm dự án, sử dụng nhập-> Mã Android hiện có vào Vùng làm việc
  2. Từ thuộc tính dự án, chọn phần Android, ở phía dưới Trong phần Thư viện, nhấp vào Thêm và chọn google-play-services_lib và Áp dụng Theo liên kết http://i.stack.imgur.com/opSeJ.png để xem ảnh chụp màn hình

Tôi google-play-services_libđã ởF:\Android\sdk\extras\google\google_play_services\libproject\google-play-services_lib
Daniel Bonetti

5

Trang web Nhà phát triển Android của Google có hướng dẫn về cách "Thêm dịch vụ Google Play vào dự án của bạn" và chúng cũng có liên quan đến cách nâng cấp phiên bản Dịch vụ Play. Thậm chí còn có một menu thả xuống để xem hướng dẫn cho Eclipse, Android Studio hoặc "Cái gì khác". Đó sẽ là nơi tốt nhất để xem hướng dẫn trong trường hợp họ thay đổi. Trang này ở đây:

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

Nhưng vì hầu hết các câu trả lời ở đây là dành cho Eclipse, đây là một bản tóm tắt ngắn gọn để nâng cấp Dịch vụ Play với Android Studio

  1. Mở tệp build.gradle bên trong thư mục mô-đun ứng dụng của bạn. Lưu ý: Các dự án Android Studio chứa tệp build.gradle cấp cao nhất và tệp build.gradle cho mỗi mô-đun. Hãy chắc chắn để chỉnh sửa các tập tin cho mô-đun ứng dụng của bạn.
  2. Cập nhật quy tắc xây dựng trong "phụ thuộc" để tham khảo phiên bản dịch vụ chơi mà bạn đã tải xuống trên máy phát triển của mình.

Bạn có thể tìm số phiên bản cho phiên bản dịch vụ phát mà bạn đã tải xuống trên máy phát triển của mình bằng cách tìm trong thư mục \ sdk \ ngoại hạng \ google \ m2reposeective \ com \ google \ android \ gms \ play-services, như được giải thích tại đây : Làm cách nào để khớp bản sửa đổi Dịch vụ Google Play với phiên bản cài đặt?


Cuối cùng, một câu trả lời tốt, rõ ràng cho người mới bắt đầu Android. Câu trả lời này nên được đặt cao hơn.
Jelle

4

Đối với Eclipse, tôi vừa thêm tham chiếu dự án vào google-play-services_lib trong:

Thuộc tính-Android Trong ngăn Thư viện (khung dưới cùng), đảm bảo rằng google-play-services_lib được liệt kê. Nếu không, hãy nhấp vào nút Thêm .. và chọn google-play-services_lib.


3

Tôi gặp vấn đề tương tự, tệp version.xml không có trong google-play-services_lib. Chỉ cần bắt đầu bạn quản lý sdk và chấp nhận cập nhật, đặc biệt là những thứ liên quan đến "tính năng bổ sung".


2

Trong khi nhập google-play-services_lib, hãy kiểm tra mã phiên bản được xác định trong AndroidManifest.xml và version.xml. Tôi đã tìm thấy sự khác biệt trong mã phiên bản và thay đổi nó thành 4242000 . Sau khi thực hiện thay đổi, không còn lỗi biên dịch trong @ số nguyên / google_play_service_version .nhập mô tả hình ảnh ở đây


2
Đây không phải là một cách tốt để làm điều đó. Bạn sẽ cần cập nhật thủ công mỗi khi cập nhật Dịch vụ Google Play.
PSchuette

2

Đã sửa lỗi bằng cách thêm Dịch vụ Google Play vào Mô-đun của tôi: tệp xây dựng lớp ứng dụng. Tài liệu cũng cho biết để cập nhật phiên bản khi bạn cập nhật GMS.

dependencies {

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

} 

1

Dưới đây là các hành động chính sẽ tránh được nhiều lỗi khi sử dụng dịch vụ Google play Lib:

  1. Hãy chắc chắn sao chép dự án lib vào không gian làm việc của các dự án Eclipse.
  2. SDK mục tiêu cho dự án lib dịch vụ chơi của Google phải là "Google
  3. API "3- Dữ liệu meta nên được thêm vào tệp kê khai.
  4. SDK mục tiêu dự án của bạn phải là 17 trừ khi bạn hoàn toàn cập nhật lên 19, vì trong một số trường hợp 19 không hoạt động tốt.

1

Tôi gặp vấn đề tương tự với một dự án sử dụng Maven và IntelliJ. Các dịch vụ Google Play được thêm vào dưới dạng phụ thuộc maven. Bản dựng maven hoạt động tốt từ dòng lệnh, nhưng IntelliJ phàn nàn về biểu tượng bị thiếu này@integer/google_play_services_version

Trong trường hợp của tôi, tôi buộc phải cập nhật các tệp POM maven và nó đã giải quyết được vấn đề.


1

Trong trường hợp của tôi, tôi cần sao chép google-play-services_lib FOLDER trong cùng DRIVE mã nguồn của ứng dụng của mình

  • F: \ Products \ Android \ APP * .java <- Ứng dụng của tôi ở đây vì vậy tôi đã sao chép vào thư mục bên dưới
  • F: \ Sản phẩm \ Android \ libs \ google-play-services_lib

1

Khi không sử dụng IDE, nhưng sử dụng các dòng lệnh xây dựng (sử dụng ant và ndk-build), đây là cách giải quyết nó:

Cài đặt tất cả các phần req'd bằng lệnh 'android'. Sau đó, có một bản sao của google-play-service_lib / trong thư mục gốc của dự án của bạn. Chỉnh sửa dự án.properies để bao gồm dòng này:

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

Nhưng bạn cần android update project -p . -t android-22trên google-play-services_libđầu tiên. Tương đương, thêm <property name="android.library.reference.1" value="./google-play-services_lib"/>vào của bạn build.xml(Tôi giảm thiểu của tôi build.xmlvà bỏ qua .properties).
Ciro Santilli郝海东冠状病六四事件法轮功

0

Tôi gặp vấn đề tương tự. Vấn đề là "google-play-services.jar" không được nhập chính xác vào dự án của tôi mặc dù đó là một phần của dự án google_play_service_lib. Nếu bạn đang sử dụng Eclipse, vui lòng kiểm tra và xem liệu bạn có thể xem tệp jar dịch vụ phát trong phần Thư viện riêng của Android không và liệu thư viện này có được thư viện xuất ra không.

Tôi đang sử dụng các công cụ nền tảng SDK Android phiên bản 17 (không phải 19) và các công cụ SDK Android phiên bản 22.0.1


0

Tôi vừa cập nhật dịch vụ Google Play trong thư mục Extras trong Trình quản lý SDK Android


0

Vấn đề đối với tôi là dự án thư viện và dự án sử dụng dịch vụ chơi nằm trong các thư mục khác nhau. Vì vậy chỉ cần:

  • 1.Thêm các tệp vào cùng một không gian làm việc, sau đó xóa thư viện.
  • 2.Restart nhật thực
  • 3.Thêm dự án thư viện một lần nữa
  • 4. Rõ ràng

0

Google đề nghị bạn không tạo dự án trực tiếp từ thư mục SDK. Tốt hơn là sao chép dự án lib ra vị trí ứng dụng của bạn, sau đó nhập nó từ đó. Nếu không, lần tới khi bạn nhập dự án cho một ứng dụng khác, nó sẽ được sử dụng.

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

Lưu ý: Bạn nên tham khảo một bản sao của thư viện mà bạn đã sao chép vào không gian làm việc phát triển của mình, bạn không nên tham khảo thư viện trực tiếp từ thư mục SDK của Android.


0

Bất cứ ai tìm kiếm trong năm 2017, phiên bản 10.0.1 của dịch vụ chơi đều yêu cầu nhập play-services-basement(sử dụng để được play-services-base).


Bạn có thể vui lòng giải thích thêm một chút? Làm thế nào để tôi thấy các phụ thuộc hiện tại và làm thế nào để thêm nhiều hơn?
Hassan Gulzar

Tôi đã làm tất cả bằng tay và bằng thử nghiệm và lỗi khi tôi viết câu trả lời này. Sử dụng gradle làm cho mọi thứ dễ dàng hơn nhiều.
goobliata

0

Android Studio 3.3.2 trong Windows 10

Tệp -> Không hợp lệ Caches / Khởi động lại và chọn invalidate and Restartnút trong hộp thoại xuất hiện.


0

Tôi đã có cùng một vấn đề, thêm 2 dòng này vào bản dựng của bạn. Có thể vấn đề sẽ được giải quyết. ;)

dependencies {  
  implementation 'com.google.android.gms:play-services:12.0.1'  
  implementation 'com.google.android.gms:play-services-vision:10.0.0'    
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.