2013-04-14 34 views
14

Khi tích hợp nút đăng nhập Google Plus trong ứng dụng Android, tôi quan sát một số khác biệt về cách nút xuất hiện trên thiết bị thực và trong trình mô phỏng. Tôi nhận thức được thực tế là các gói dịch vụ của Google Plus không được cài đặt trong trình mô phỏng, nhưng điều này có thể được thực hiện bằng cách kéo APK từ thiết bị và cài đặt chúng vào trình giả lập bằng APK.Dịch vụ Google Play trong trình mô phỏng, triển khai nút đăng nhập Google Plus, v.v.

hiện "thực hiện" My chỉ đơn giản bao gồm các nút đăng nhập trong một bố cục, bằng cách tham khảo các nút với mã XML sau:

<com.google.android.gms.common.SignInButton 
    android:id="@+id/sign_in_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

Khi tôi thử nghiệm ứng dụng của tôi trên thiết bị, nút xuất hiện tất cả các màu đỏ và sáng bóng, theo các hướng dẫn được đề cập ở đây https://developers.google.com/+/mobile/android/sign-in. Nhưng khi chạy trên trình giả lập, đó chỉ là một nút bình thường (nền màu xám có văn bản màu đen) có nội dung "Đăng nhập bằng Google".

Bất kỳ ý tưởng nào về lý do kết quả khác nhau? Tôi đã đảm bảo rằng tôi đang chạy cùng một cấp API và tài nguyên dường như được lấy chính xác cũng trên trình mô phỏng vì nó hiển thị nút đăng nhập thực tế (nhưng có giao diện khác).

Cập nhật: Tìm thấy manh mối trong logcat; thông báo "Không tìm thấy nút đăng nhập, thay vào đó, sử dụng trình giữ chỗ". khá nhiều lý giải tại sao tôi nhìn thấy nút ngu si đần độn xám trên trình mô phỏng. Vẫn cần phải tìm ra lý do tại sao; có thể là "bản sao google plus apk từ thiết bị" hack không hoạt động đúng cách.

+0

là mức API Android cùng trên thiết bị và trình mô phỏng? – WarrenFaith

+0

Vâng, như tôi đã viết trong câu hỏi của tôi. –

Trả lời

52

Dịch vụ của Google Play hoạt động trên phiên bản 4.2.2 của Trình giả lập Android và được hỗ trợ chính thức như được mô tả trong Android documentation: Setup Google Play Services.

Cập nhật

Bây giờ bạn có thể sử dụng những hình ảnh Intel/x86 (HAXM tương thích) cho API 19 và mới hơn và cho ARM, Dịch vụ Google Play có sẵn trên hầu hết các hình ảnh.

Thiết lập hình ảnh

Để có được hình ảnh phù hợp với quản lý thiết bị ảo của bạn:

  • Mở Android SDK Manager
  • Mở nhóm Android 4.2.2 (API 17)
  • Kiểm tra API của Google
  • Kiểm tra ARM EABI v7a Hình ảnh hệ thống

enter image description here

Để tạo thiết bị ảo:

  • Mở Android ảo Device Manager
  • Tạo một thiết bị mới
  • Nhập tên AVD
  • Đặt mục tiêu để Google API (Google Inc.) - Cấp API 17
  • Lưu thiết bị ảo của bạn và bắt đầu nó ...

NoteCPU/ABI sẽ được cố định như ARM

enter image description here

Bây giờ bạn sẽ có thể sử dụng dịch vụ Google Play trong trình giả lập. Xin lưu ý, bạn cần đặt mục tiêu của mình một cách thích hợp trong dự án Android của mình thành API Google để Dịch vụ của Google Play hoạt động.

+3

Có bất kỳ kế hoạch nào để làm việc này với Intel giả x86 hình ảnh giả lập ARM là khá nhiều không thể sử dụng – jophde

+0

Tôi đồng ý với @ jophde giả lập ARM là con chó chậm, mất 4 đến 5 lần miễn là để khởi động và làm công cụ –

+0

im không thể chạy bản đồ trong giả lập, bạn có thể plz giúp tôi cho rằng – Richa

0

Kiểm tra thư mục ldpi, mdpi, hdpi, v.v. để có hình ảnh nút khác. Trình mô phỏng của bạn gần như chắc chắn là một DPI khác với thiết bị của bạn.

+0

Tôi nghĩ giả lập và điện thoại có cùng cài đặt; Tôi đang sử dụng cài đặt trình mô phỏng Galaxy Nexus và thử nghiệm với điện thoại Galaxy Nexus. Bất kể, không có đồ họa ở tất cả, chỉ là một nút cũ đồng bằng, trên giả lập, trong khi trên điện thoại có biểu tượng "g +" và văn bản địa phương hóa. –

+0

Có nhiều kiểu khác nhau được áp dụng dựa trên cấp API, độ phân giải màn hình và DPI. Bạn đã xem qua những điều đó chưa? –

3

Tôi đã thử hầu hết các kết hợp chạy trình mô phỏng, nhưng có và không có API Google, có nghĩa là tôi đã thử nghiệm với cả chế độ x86 và cánh tay. Tôi thấy không có cách nào để làm cho các gói ứng dụng được kéo từ điện thoại Galaxy Nexus của tôi để chạy đúng trên trình mô phỏng.

Đoán điều này có phần liên quan đến việc thiết lập và chạy Cửa hàng Play, tôi quyết định thử điều đó để xem liệu tôi có may mắn hơn không. Tôi không; không thể làm việc đó. Biểu tượng Cửa hàng Play xuất hiện và có thể được khởi chạy nhưng ngay lập tức nó tự đóng.

việc gì đã làm tuy nhiên đã để tải về và cài đặt các gói ứng dụng được ở dưới cùng của trang ở đây:

http://umut.tekguc.info/en/content/google-android-map-v2-step-step

Sau khi cài đặt bán hàng tự động và GMS gói, nút đăng nhập xuất hiện trong đó là vẻ đẹp đầy đủ dưới giả lập. Vì tôi chưa thực sự thực hiện chức năng đăng nhập thực tế, tôi không thể chắc chắn rằng nó sẽ thực sự hoạt động, nhưng ít nhất nút bây giờ trông giống hệt trong ứng dụng của tôi trên thiết bị của tôi và trong trình mô phỏng.

Bạn cũng cần tải xuống phần mềm Dịch vụ của Google Play (xem trong phần "Extras" trong trình quản lý SDK Android) và cài đặt thư viện google-play-services_lib trong dự án của bạn (Mã Android-Nhập-Android hiện tại vào Không gian làm việc và sau đó duyệt đến ví dụ/opt/adt-bundle-linux/sdk/extras/google/google_play_services/libproject và chọn google-play-services_lib).

Một mẩu tin thú vị khác là điều này sẽ chỉ hoạt động trên các thiết lập giả lập Android "thuần túy", không phải với các thiết lập "Google API". Có vẻ như phần sau có một số phần của các ứng dụng được cài đặt trong trình mô phỏng (không hiển thị và không hoạt động) và tôi chưa quản lý để xóa các phiên bản hiện tại để cài đặt các tệp apk tùy chỉnh hoạt động như được mô tả ở trên. Tôi đã thử nghiệm loại bỏ adb, adb install, adb install -r và thậm chí xóa các thư mục khỏi/data cũng không thành công.Nó trông rất giống Google đang cố gắng làm cho điều này trở nên khó khăn.

Tôi thất vọng vì Google đang làm điều này quá khó; Google có thể có một số lý do cấp phép kỳ lạ để giữ nội dung này ra khỏi trình giả lập, nhưng nếu họ thực sự muốn mọi người sử dụng dịch vụ của họ trong ứng dụng Android, họ cần phải cung cấp các dịch vụ này trong trình giả lập. Buộc mọi người luôn phát triển trên thiết bị (với các trình giả lập tuyệt vời khác) hoặc khiến mọi người nhảy qua các vòng (rất nhiều googling, cài đặt phiên bản không chính thức/tấn công của các apks, v.v) chỉ là điều xấu.

Cập nhật cuối cùng trước khi chấp nhận câu trả lời của tôi; mặc dù nút đúng với kiểu dáng chính xác hiện đang hiển thị trong trình mô phỏng, tôi vẫn không thể nhận được hộp thoại "chọn tài khoản" xuất hiện trong trình mô phỏng. Khi/nếu tôi làm tôi sẽ chia sẻ các giải pháp thích hợp ở đây.

+0

Và tôi nghĩ phương châm của họ là "đừng xấu"! :) – GilliMonsta

+0

Tôi nhận được thông báo: "Lỗi [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE]" khi tôi cố cài đặt APK. – GilliMonsta

+0

Như bạn đã nói, bạn chỉ có thể cài đặt Dịch vụ của Google Play bằng adb với hình ảnh hệ thống mô phỏng Android "thuần túy". Nhưng với hình ảnh hệ thống như vậy, bạn không thể thêm tài khoản Google vào điện thoại! Và nếu bạn kiểm tra tính tương thích của Dịch vụ của Google Play với 'GoogleApiAvailability.getInstance() .GooglePlayServicesAvailable (activity)' nó sẽ cho bạn biết rằng "Dịch vụ của Google Play không được thiết bị của bạn hỗ trợ" :( – FlorianT

0

Android image with google API implemented tôi đã nhận thấy rằng từ API 21 có ARM và x86 hình ảnh với các API Google đã triển khai lẽ nếu bạn không có vấn đề bắt chước sử dụng android 5 nó sẽ hoạt động mà không cần giải nén các gói ứng dụng

+0

tôi đã sử dụng Android 6.0 với google Api. nhưng nó không hiển thị cửa hàng chơi .. – curiousMind

+0

Dịch vụ Google Play có hoạt động không? Tôi đã không thử sử dụng các cửa hàng chơi trong giả lập nhưng chọn hình ảnh với API thực hiện cho phép tôi sử dụng các dịch vụ chơi có lẽ bạn có thể thử cài đặt các cửa hàng chơi bằng cách sử dụng tập tin apk trong khi sử dụng hình ảnh api Google? – Fuseteam

Các vấn đề liên quan