Ứng dụng này sẽ không chạy trừ khi bạn cập nhật Dịch vụ của Google Play (qua Bazaar)


100

Tôi đang thử nghiệm API Google Maps mới V2 cho Android và tôi nhận được thông báo này khi ứng dụng khởi chạy:

MainActivity hiển thị thông báo lỗi

Điều này đang chạy trên trình giả lập 4.1.

Đây là AndroidManifest.xmltệp của tôi :

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.maptest"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

    <permission
        android:name="com.example.maptest.permission.MAPS_RECEIVE"
        android:protectionLevel="signature"/>
    <uses-permission android:name="com.example.maptest.permission.MAPS_RECEIVE"/>
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

    <!-- Require OpenGL ES version 2 -->
    <uses-feature
          android:glEsVersion="0x00020000"
          android:required="true"/>

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="##myapikey##"/>

    </application>
</manifest>

Tệp MainActivity.java:

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

Tệp activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.MapFragment"/>
</RelativeLayout>

Việc nhấp vào "Cập nhật" sẽ làm ứng dụng bị lỗi với stacktrace sau:

E/Trace(1034): error opening trace file: No such file or directory (2)
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
W/GooglePlayServicesUtil(1034): Google Play services out of date.  Requires 2010100 but found 1
D/gralloc_goldfish(1034): Emulator without GPU emulation detected.
D/AndroidRuntime(1034): Shutting down VM
W/dalvikvm(1034): threadid=1: thread exiting with uncaught exception (group=0x40a13300)

E/AndroidRuntime(1034): FATAL EXCEPTION: main
E/AndroidRuntime(1034): android.content.ActivityNotFoundException: No Activity found to handle Intent
  { act=android.intent.action.VIEW dat=http://play.google.com/store/apps/details? \
  id=com.google.android.apps.bazaar flg=0x80000 pkg=com.android.vending }
E/AndroidRuntime(1034):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1545)
E/AndroidRuntime(1034):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1416)
E/AndroidRuntime(1034):     at android.app.Activity.startActivityForResult(Activity.java:3351)
E/AndroidRuntime(1034):     at android.app.Activity.startActivityForResult(Activity.java:3312)
E/AndroidRuntime(1034):     at android.app.Activity.startActivity(Activity.java:3522)
E/AndroidRuntime(1034):     at android.app.Activity.startActivity(Activity.java:3490)
E/AndroidRuntime(1034):     at com.google.android.gms.internal.c$2.onClick(Unknown Source)
E/AndroidRuntime(1034):     at android.view.View.performClick(View.java:4084)
E/AndroidRuntime(1034):     at android.view.View$PerformClick.run(View.java:16966)
E/AndroidRuntime(1034):     at android.os.Handler.handleCallback(Handler.java:615)
E/AndroidRuntime(1034):     at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime(1034):     at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(1034):     at android.app.ActivityThread.main(ActivityThread.java:4745)
E/AndroidRuntime(1034):     at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(1034):     at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(1034):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
E/AndroidRuntime(1034):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
E/AndroidRuntime(1034):     at dalvik.system.NativeStart.main(Native Method)

Tôi cũng đã tham khảo dự án Dịch vụ của Google Play. Tôi làm gì sai ở đây?

CẬP NHẬT

Lỗi tương ứng trong trình theo dõi vấn đề của Google ( https://issuetracker.google.com/issues/35822258 ) đã được giải quyết một thời gian trước.

Giờ đây, bạn có thể sử dụng API Android của Google Maps trong trình mô phỏng và tạo thiết bị ảo với các dịch vụ Play như được mô tả trong câu trả lời sau:

https://stackoverflow.com/a/46246782/5140781


Bạn đang sử dụng avd với google api hay android đơn giản?
Selvin

Android thuần túy, mặc dù tôi vừa thử chuyển sang API của Google cho 4.1 và nó vẫn như cũ.
soren.qvist 3/12/12

Thật kỳ lạ, tôi đang xem xét chính xác cùng một vấn đề cùng một lúc. Cho đến nay, tôi cho rằng đó là do APK dịch vụ của Google Play chưa được cài đặt trên Trình mô phỏng. Lỗi là do ứng dụng đang cố gắng khởi chạy Google Play (cửa hàng) để cài đặt APK. Nó có thể sẽ hoạt động tốt trên một thiết bị.
gazreese


Câu trả lời:


42

Theo một cuộc thảo luận với Nhà phát triển Android trên Google+, hiện không thể chạy API bản đồ mới trên trình mô phỏng.

(Bình luận là của Zhelyazko Atanasov hôm qua lúc 23:18, tôi không biết làm thế nào để liên kết trực tiếp với nó)

Ngoài ra, bạn không thấy phần " (qua Bazaar) " khi chạy từ một thiết bị thực và nút cập nhật mở Cửa hàng Play. Tôi cho rằng Bazaar nhằm cung cấp Dịch vụ của Google Play trên trình giả lập Android, nhưng nó vẫn chưa sẵn sàng ...


15
Chà, thật không may
soren.qvist 4/12/12

Tôi đã thử sao chép GmsCore.apk mới nhất trực tiếp vào trình giả lập nhưng điều đó cũng không hoạt động. Nó có thể sẽ hoạt động nếu tôi biết chính xác APK nào cần sao chép từ thiết bị đã root của mình.
James Wald

56

CẬP NHẬT

Google maps API v2 hiện đã được cài đặt trên các hình ảnh hệ thống mới nhất của Google (api: 19 ARM hoặc x86).
Vì vậy, ứng dụng của bạn sẽ chỉ hoạt động với các hình ảnh mới. Không cần phải cài đặt các tệp này.

Tôi đã cố gắng chạy ứng dụng Android Google Maps V2 trong một trình giả lập và khi cuối cùng tôi đã chạy Dịch vụ Google Play, tôi đã cập nhật SDK của mình lên Dịch vụ Google Play phiên bản 4 và trình mô phỏng sẽ không chạy ứng dụng của tôi nữa.

Bây giờ tôi đã tìm ra cách cập nhật trình mô phỏng từ máy tính bảng biến áp của mình. (Bạn sẽ không cần máy tính bảng vì bạn có thể tải xuống các tệp bên dưới.)

Tôi đã sử dụng Titanium Backup để sao lưu Asus Eee Pad Transformer (TF101) và sau đó lấy APK com.android.vending và com.google.android.gms từ bản sao lưu.

Tôi đã cài đặt các ứng dụng này trên trình mô phỏng được định cấu hình với nền tảng: 4.1.2, Cấp API: 16, CPU Intel / Atom x86) và ứng dụng Google Maps V2 của tôi hoạt động trở lại.

Đó là tất cả .. không có bước nào khác liên quan đến / system / app được yêu cầu.

Ứng dụng của tôi chỉ sử dụng API Google Maps, không nghi ngờ gì nữa, cần thực hiện thêm các bước nếu bạn sử dụng các dịch vụ khác của Google Play.

Các tệp mới cho các dịch vụ mới nhất của Google Play:

Hướng dẫn tương tự như trước: Tạo trình mô phỏng mới với bất kỳ CPU / ABI nào , mục tiêu API không phải của Google (phiên bản 10-19 hoạt động) và bật hoặc tắt mô phỏng GPU , sau đó cài đặt các tệp:

adb install com.android.vending-20140218.apk
adb install com.google.android.gms-20140218.apk

Nếu bạn đang nâng cấp trình giả lập hiện có thì bạn có thể cần gỡ cài đặt các phiên bản trước bằng cách:

adb uninstall com.android.vending
adb uninstall com.google.android.gms

Đó là tất cả.


Không thành vấn đề nếu trình giả lập của bạn là x86 hay ARM. Nền tảng: 4.2 cũng tốt.
Dan Brough

1
Theo developer.android.com/google/play-services/index.html . Deveices với Android 2.2 (đó là API cấp 8) sẽ là đủ miễn là các thiết bị cũng có phiên bản GL ES 2.
Jarl

1
Tôi đã thử cài đặt các tệp đó nhưng adb cho tôi thấy thông báo lỗi rằng các tệp đã được cài đặt. Tôi đã thử cài đặt lại, sau đó nó cho biết các chứng chỉ không nhất quán. Tôi nên làm cái gì sau đó?
huong

Tôi đã có thể gỡ cài đặt các gói được cài đặt sẵn với adb uninstall com.android.vendingadb uninstall com.google.android.gms. Sau khi cài đặt các gói được đề cập ở trên, ứng dụng của tôi chạy nhưng tôi thấy EGL_emulation: eglSurfaceAttrib not implementedthông báo cảnh báo trong nhật ký và không có bản đồ nào hiển thị trong ứng dụng. Tôi tin rằng đây là vấn đề giả lập / GPU. GPU của tôi là Radeon HD6870và tôi đang chạy Android 4.1.2 mà không có Google API trên trình mô phỏng.
dvim

Về vấn đề "EGL_emulation: eglSurfaceAttrib không được triển khai" có lẽ hãy thử "Sử dụng GPU máy chủ" trong các tùy chọn mô phỏng.
Dan Brough

39

Tôi đã dành khoảng một ngày để định cấu hình API gmaps mới (Google Maps Android API v2) trên trình giả lập Android. Không có phương pháp nào trong số những phương pháp tôi tìm thấy trên Internet hoạt động chính xác với tôi. Nhưng tôi vẫn làm được. Đây là cách:

  1. Tạo trình giả lập mới với cấu hình sau:

Nhập mô tả hình ảnh tại đây

Trên các phiên bản khác, tôi không thể cấu hình do nhiều lỗi khác nhau khi cài đặt các ứng dụng cần thiết.

2) Khởi động trình giả lập và cài đặt các ứng dụng sau:

  • GoogleLoginService.apk
  • GoogleServicesFramework.apk
  • Phonesky.apk

Bạn có thể thực hiện việc này bằng các lệnh sau:

2.1) adb shell mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system
2.2)adb shell chmod 777 /system/app
2.3-2.5)adb push Each_of_the_3_apk_files.apk /system/app/

Liên kết để tải xuống các tệp APK . Tôi đã sao chép chúng từ thiết bị Android đã root của mình.

3) Cài đặt Dịch vụ của Google PlayGoogle Maps trên trình giả lập. Tôi gặp lỗi 491 nếu tôi cài đặt chúng từ cửa hàng Google Play . Tôi đã tải các ứng dụng lên trình giả lập và chạy cài đặt cục bộ. (Bạn có thể sử dụng adbđể cài đặt này). Liên kết đến các ứng dụng:

4) Tôi chạy thành công một mẫu demo trên trình giả lập sau các bước này. Đây là ảnh chụp màn hình:

bản đồ Google


Tôi nghĩ rằng phương pháp này có một số bước không phù hợp. Hãy thử phương pháp của tôi từ một trong những câu trả lời khác với chỉ có hai gói ứng dụng được cài đặt ...
Nemanja Kovacevic

Tôi đã thử phương pháp của bạn, nhưng khi tải ứng dụng lên system / app dir adb đã tạo ra lỗi nói rằng nó không đủ dung lượng trống. Tạo một trình giả lập mới với dung lượng bộ nhớ lớn không giúp được gì. Trên các phiên bản khác của trình giả lập, phương pháp của bạn không hoạt động.
Paha

1
Trong bước 3) lệnh cài đặt là adb install com.google.android.apps.maps-1.apkadb install com.google.android.gms-2.apk.
sulai

Và đảm bảo rằng bạn nhận được phiên bản dịch vụ google play phù hợp với nhu cầu của mình. Bạn có thể tải chúng xuống từ papktop.com/tag/google-play-services-apk .
sulai

Chỉ cần đảm bảo rằng bạn luôn cài đặt phiên bản APK Google Play mới nhất vì tại thời điểm hiện tại, Google Play v2 sẽ không cho phép bạn cài đặt bản cập nhật (gây ra lỗi 491 khó chịu) và bản cập nhật này là bắt buộc để chạy các ứng dụng Google Maps.
Serhiy

29

Tôi đang trả lời câu hỏi này lần thứ hai, vì giải pháp mà tôi đã thử lúc đầu không hoạt động, giờ đã hoạt động và tôi có thể tạo lại các bước để làm cho nó hoạt động :)

Tôi cũng có cảm giác rằng việc thiếu Cửa hàng Google Play là một thủ phạm ở đây, vì vậy tôi đã cố gắng cài đặt Cửa hàng Google Play vào trình giả lập theo lời khuyên trên liên kết nàyliên kết này hợp. Tôi đã gặp một số khó khăn, nhưng cuối cùng tôi đã thành công trong việc cài đặt Cửa hàng Google Play và thử nghiệm nó bằng cách tải xuống một số ứng dụng ngẫu nhiên. Nhưng hoạt động bản đồ tiếp tục hiển thị thông báo với nút "Cập nhật". Nút đó sẽ đưa tôi đến cửa hàng, nhưng ở đó tôi sẽ nhận được thông báo về "mục không tìm thấy" và bản đồ vẫn không hoạt động. Tại thời điểm đó tôi đã bỏ cuộc.

Hôm qua, tôi đã vô tình kích hoạt cùng một ứng dụng thử nghiệm và nó đã hoạt động! Tôi đã rất bối rối, nhưng nhanh chóng tôi đã tạo ra một sự khác biệt với trình giả lập nơi nó hoạt động và một ứng dụng sạch mới và tôi đã xác định được hai ứng dụng trên ứng dụng đang hoạt động trong / data / app / directory: com.android.vending-1. apk và com.google.android.gms-1.apk. Điều này thật kỳ lạ vì khi tôi cài đặt Cửa hàng Google Play theo hướng dẫn từ các trang web đó, tôi đã đẩy Phonesky.apk, GoogleServicesFramework.apk và GoogleLoginService.apk và đến một thư mục / hệ thống / ứng dụng khác.

Dù sao, bây giờ Android Google Maps API v2 đang hoạt động trên trình mô phỏng của tôi. Đây là các bước để thực hiện việc này:


Tạo một trình giả lập mới

  • Đối với thiết bị , hãy chọn "5.1 '' WVGA (480 x 800: mdpi)"
  • Đối với mục tiêu , hãy chọn "Android 4.1.2 - API cấp 16"
  • Đối với "CPU / ABI", hãy chọn "ARM"
  • Để phần còn lại ở chế độ mặc định

Đây là những cài đặt đang hoạt động cho tôi. Tôi không biết cho những cái khác nhau.


Khởi động trình giả lập


cài đặt com.android.vending-1.apkcom.google.android.gms-1.apk thông qua lệnh cài đặt ADB


Google Maps hiện sẽ hoạt động trong trình mô phỏng của bạn.


Dưới đây là các liên kết đến blog của tôi với mô tả về những gì tôi đã cố gắng để làm cho công việc này nemanjakovacevic.net/blog/2012/12/...
Nemanja Kovacevic

Rất tiếc, bản sửa đổi 4 của dịch vụ Google Play đưa ra lỗi mới: Các dịch vụ của Google Play lỗi thời. Yêu cầu 2012100 nhưng đã tìm thấy 2010110
Ilja S.

3
Được rồi, nếu bạn có bản sửa đổi lần thứ 4 của dịch vụ chơi, hãy xem câu trả lời @danbrough và tải xuống các ứng dụng được chỉ định trong nhận xét: liên kết
Ilja S.

1
lưu ý rằng điều này cũng hoạt động với x86, làm cho trình giả lập linh hoạt hơn nhiều!
Caffeine

3

Tôi đã tạo một mô tả (tiếng Đức) để làm thế nào để nó hoạt động . Về cơ bản, bạn cần một trình giả lập có ít nhất API cấp 9 và không có API Google. Sau đó, bạn sẽ phải tải APK từ thiết bị đã root :

adb -d pull /data/app/com.android.vending-2.apk
adb -d pull /data/app/com.google.android.gms-2.apk

và cài đặt chúng trong trình giả lập:

adb -e install com.android.vending-2.apk
adb -e install com.google.android.gms-2.apk

Bạn thậm chí có thể chạy Ứng dụng Google Maps gốc, nếu bạn có trình giả lập có ít nhất API cấp 14 và cài đặt thêm com.google.android.apps.maps-1.apk

Chúc vui vẻ.


2

Tôi đã cố gắng chạy Android Google Maps v2 trong một trình giả lập và tôi đã tìm thấy nhiều cách để làm điều đó, nhưng không có cách nào trong số đó phù hợp với tôi. Tôi luôn có cảnh báo này trong Logcat Google Play services out of date. Requires 3025100 but found 2010110và khi tôi muốn cập nhật các dịch vụ của Google Play trên trình giả lập thì không có gì xảy ra. Vấn đề là APK com.google.android.gms không tương thích với phiên bản của thư viện trong Android SDK của tôi.

Tôi đã cài đặt các tệp này "com.google.android.gms.apk", "com.android.vending.apk" trên trình mô phỏng của mình và ứng dụng Google Maps v2 của tôi hoạt động tốt. Không có bước nào khác liên quan đến / system / app được yêu cầu.


1
đó là những tệp cần cài đặt: vending.apkgms.apk
Adil

2

Ứng dụng này sẽ không chạy trừ khi bạn cập nhật Dịch vụ của Google Play. Tôi đã thử nó trong một thời gian dài, nhưng tôi vẫn không nhận được bản đồ ... Chỉ có một màn hình trống xuất hiện, ngay cả khi tôi đã sửa đổi Dịch vụ Google Play của mình bằng nhận xét bên dưới ..


Kiểm tra tệp kê khai dịch vụ chơi của bạn và kiểm tra mã phiên bản cho tệp APK com.google.android.gms. Ở bên dưới, nó là "3136110". Tải xuống các tệp APK này và cài đặt từ lời nhắc DOS, nhưng trước khi cài đặt, hãy chạy trình mô phỏng đích của bạn.

package="com.google.android.gms"
android:versionCode="3136110"
android:versionName="3.1.36 (673201-10)

Tôi nhận các tệp APK này từ liên kết này .


2

Tôi đã giải quyết vấn đề này bằng cách thực hiện các bước sau:

  • Trong giả lập:

    Bạn phải sử dụng API mới nhất Google APIs(Google Inc.)-API Level 19.

    Thực hiện phần còn lại của những thứ được đặt trong ảnh chụp màn hình.

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

  • Mã API:

    Tạo Khóa API mới và Kiểm tra cẩn thận về khóa API Google Map và Khóa SHA.

  • Dịch vụ của Google Play:

    Bạn phải tải xuống Dịch vụ Google Play mới nhất com.android.vending-4.8.20.apk . Trong trang web đó nếu các dịch vụ của Google Play không hoạt động có nghĩa là bạn có thể tìm thấy rất nhiều trang web có tên trên internet com.android.vending 4.8.20.apk.

    bạn có thể chạy các Dịch vụ của Google Play bằng cách sử dụng Command Prompt adb install com.android.vending 4.8.20.apk.

    Lưu ý: Bạn phải tải xuống các dịch vụ Google Play mới nhất vì từng năm phiên bản mới nhất sẽ được cập nhật trên Internet.

    đầu ra :

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


1
@JJD Tôi đã chỉnh sửa, kiểm tra xem nó sẽ hoạt động. Cảm ơn bạn đã chỉ nó.
Steve

0

Sau khi cập nhật lên ADT 22.0.1, do thư viện riêng của Android, dịch vụ Google Maps đã gặp một số lỗi và ứng dụng bị lỗi. Vì vậy, tôi đã tìm ra giải pháp cuối cùng và nó đã hiệu quả với tôi.

Chỉ cần cài đặt thư viện dịch vụ Google Play và sau đó truy cập google-play-service/libproject/google-play-services_libtừ https://www.dropbox.com/sh/2ok76ep7lmav0qf/9XVlv61D2b. Nhập nó vào không gian làm việc của bạn. Làm sạch dự án của bạn nơi bạn muốn sử dụng gogole-play-services-lib, sau đó xây dựng lại và đi tới Dự án -> Thuộc tính -> Java BuildPath -> chọn "Thư viện riêng của Android, Phụ thuộc Android, google-play-service"

Trong Properties của chính nó, vào Android và sau đó chọn bất kỳ phiên bản nào sau đó chọn thêm và chọn google-play-service-lib rồi nhấn áp dụng và cuối cùng là OK.

Cuối cùng, đi tới Dự án -> Công cụ Android -> Thư viện hỗ trợ Android. Chấp nhận giấy phép và sau khi cài đặt, hãy chạy dự án của bạn.

Nó sẽ hoạt động tốt.



0

Từ Trình quản lý SDK Android, hãy cài đặt: Phần bổ sung: Các dịch vụ của Google Play


0
 just change it to 

compile 'com.google.android.gms:play-services-maps:9.6.0'
compile 'com.google.android.gms:play-services-location:9.6.0'

cái này phù hợp với tôi phiên bản hiện tại là 10.0.1

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.