Aplikasi ini tidak akan berjalan kecuali Anda memperbarui Layanan Google Play (melalui Bazaar)

100

Saya menguji Google Maps API V2 baru untuk Android, dan saya mendapatkan pesan ini ketika aplikasi diluncurkan:

MainActivity menampilkan pesan kesalahan

Ini berjalan pada emulator 4.1.

Ini AndroidManifest.xmlfile saya :

<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>

File 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;
    }
}

File 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>

Mengklik "Perbarui" akan membuat aplikasi mogok dengan stacktrace berikut:

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)

Saya juga mereferensikan proyek Layanan Google Play. Apa yang saya lakukan salah di sini?

MEMPERBARUI

Bug yang sesuai di pelacak masalah Google ( https://issuetracker.google.com/issues/35822258 ) telah diselesaikan beberapa waktu lalu.

Sekarang Anda dapat menggunakan Google Maps Android API di emulator dan membuat perangkat Virtual dengan layanan Play seperti yang dijelaskan dalam jawaban ini:

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

soren.qvist
sumber
Apakah Anda menggunakan avd dengan google api atau android biasa?
Selvin
Android biasa, meskipun saya baru saja mencoba beralih ke Google API untuk 4.1 dan itu sama.
soren.qvist
Anehnya, saya melihat masalah yang persis sama pada waktu yang sama. Saya berasumsi sejauh ini bahwa itu karena APK Layanan Google Play tidak diinstal di Emulator. Kesalahannya karena aplikasi mencoba meluncurkan Google Play (toko) untuk menginstal APK. Ini mungkin akan berfungsi dengan baik di perangkat.
gazreese

Jawaban:

42

Menurut diskusi dengan Pengembang Android di Google+, menjalankan API Peta baru di emulator saat ini tidak memungkinkan.

(Komentar dari Zhelyazko Atanasov kemarin jam 23:18, saya tidak tahu bagaimana menautkannya secara langsung)

Selain itu, Anda tidak melihat bagian " (via Bazaar) " saat menjalankan dari perangkat yang sebenarnya, dan tombol perbarui membuka Play Store. Saya berasumsi Bazaar dimaksudkan untuk menyediakan Layanan Google Play di emulator Android, tetapi itu belum siap ...

nicopico.dll
sumber
15
Nah, itu sangat disayangkan
soren.qvist
Saya mencoba menyalin GmsCore.apk terbaru langsung ke emulator tetapi itu juga tidak berfungsi. Ini mungkin akan berfungsi jika saya tahu persis APK mana yang akan disalin dari perangkat saya yang di-rooting.
James Wald
56

MEMPERBARUI

Google maps API v2 sekarang diinstal pada image sistem Google terbaru (api: 19 ARM atau x86).
Jadi aplikasi Anda seharusnya bekerja dengan gambar baru. Tidak perlu menginstal file-file ini.

Saya telah mencoba menjalankan aplikasi Android Google Maps V2 di bawah emulator dan setelah saya akhirnya menjalankan Layanan Google Play, saya memperbarui SDK saya ke Layanan Google Play revisi 4, dan emulator saya tidak akan menjalankan aplikasi saya lagi.

Sekarang saya telah mengetahui cara memperbarui emulator saya dari tablet transformator saya. (Anda tidak memerlukan tablet karena Anda dapat mengunduh file di bawah ini.)

Saya menggunakan Titanium Backup untuk membuat cadangan Asus Eee Pad Transformer (TF101) saya dan kemudian mengambil file APK com.android.vending dan com.google.android.gms dari cadangan.

Saya menginstal ini pada emulator yang dikonfigurasi dengan platform: 4.1.2, API Level: 16, CPU Intel / Atom x86) dan aplikasi Google Maps V2 saya berfungsi kembali.

Itu saja .. tidak ada langkah lain yang diperlukan terkait / system / app.

Aplikasi saya hanya menggunakan Google Maps API, tidak diragukan lagi, diperlukan lebih banyak langkah jika Anda menggunakan layanan Google Play lainnya.

File baru untuk layanan Google Play terbaru:

Petunjuk yang sama seperti sebelumnya: Buat emulator baru dengan CPU / ABI apa pun , target API non-Google (versi 10-19 berfungsi) dan emulasi GPU aktif atau nonaktif, lalu instal file:

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

Jika Anda mengupgrade emulator yang sudah ada, Anda mungkin perlu meng-uninstal versi sebelumnya dengan:

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

Itu saja.

danbrough
sumber
Tidak masalah jika emulator Anda adalah x86 atau ARM. Platform: 4.2 juga bagus.
Dan Brough
1
Menurut developer.android.com/google/play-services/index.html . Perangkat dengan Android 2.2 (yaitu API level 8) harus cukup selama perangkat juga memiliki GL ES versi 2.
Jarl
1
Saya mencoba menginstal file-file itu tetapi adb menunjukkan kepada saya pesan kegagalan bahwa file tersebut sudah diinstal. Saya mencoba menginstal ulang, lalu dikatakan bahwa sertifikat tidak konsisten. Apa yang harus saya lakukan?
huong
Saya dapat menghapus paket pra-instal dengan adb uninstall com.android.vendingdan adb uninstall com.google.android.gms. Setelah menginstal paket yang disebutkan di atas, aplikasi saya berjalan tetapi saya melihat EGL_emulation: eglSurfaceAttrib not implementedpesan peringatan di log dan tidak ada peta yang terlihat di aplikasi. Ini, saya yakin, masalah emulator / GPU. GPU saya Radeon HD6870dan saya menjalankan Android 4.1.2 tanpa Google API di emulator.
dvim
Mengenai "EGL_emulation: eglSurfaceAttrib not implementation" mungkin coba "Gunakan Host GPU" di bawah opsi emulasi.
Dan Brough
39

Saya menghabiskan waktu sekitar satu hari untuk mengonfigurasi gmaps API baru (Google Maps Android API v2) di emulator Android. Tak satu pun dari metode yang saya temukan di Internet berfungsi dengan benar untuk saya. Tapi tetap saja saya melakukannya. Begini caranya:

  1. Buat emulator baru dengan konfigurasi berikut:

Masukkan deskripsi gambar di sini

Di versi lain saya tidak dapat mengkonfigurasi karena berbagai kesalahan ketika saya menginstal aplikasi yang diperlukan.

2) Mulai emulator dan instal aplikasi berikut:

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

Anda dapat melakukan ini dengan perintah berikut:

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/

Tautan untuk mengunduh file APK . Saya telah menyalinnya dari perangkat Android saya yang telah di-rooting.

3) Instal Layanan Google Play dan Google Maps di emulator. Saya mengalami kesalahan 491, jika saya menginstalnya dari Google Play Store. Saya mengunggah aplikasi ke emulator dan menjalankan instalasi secara lokal. (Anda dapat menggunakan adbuntuk menginstal ini). Tautan ke aplikasi:

4) Saya berhasil menjalankan sampel demo di emulator setelah langkah-langkah ini. Ini tangkapan layarnya:

Google Maps

Paha
sumber
Saya rasa metode ini memiliki beberapa langkah yang tidak perlu. Coba metode saya dari salah satu jawaban lain dengan hanya dua apks untuk dipasang ...
Nemanja Kovacevic
Saya mencoba metode Anda, tetapi saat memuat aplikasi ke system / app dir adb menghasilkan kesalahan yang mengatakan bahwa itu tidak cukup ruang kosong. Membuat emulator baru dengan banyak memori tidak membantu. Di versi lain emulator, metode Anda tidak berfungsi.
Paha
1
Pada langkah 3) perintah instal adalah adb install com.google.android.apps.maps-1.apkdan adb install com.google.android.gms-2.apk.
sulai
Dan pastikan Anda mendapatkan versi layanan google play yang sesuai dengan kebutuhan Anda. Anda dapat mengunduhnya dari papktop.com/tag/google-play-services-apk .
sulai
Pastikan Anda selalu menginstal versi APK Google Play terbaru, karena saat ini, Google Play v2, tidak mengizinkan Anda menginstal pembaruan (memberikan kesalahan 491 yang buruk) dan pembaruan ini diperlukan untuk menjalankan aplikasi Google Maps.
Serhiy
29

Saya menjawab pertanyaan ini untuk kedua kalinya, karena solusi yang saya coba yang awalnya tidak berhasil sekarang berfungsi, dan saya dapat membuat ulang langkah-langkah untuk membuatnya berfungsi :)

Saya juga merasa kurangnya Google Play Store adalah penyebabnya di sini, jadi saya mencoba menginstal Google Play Store ke emulator dengan saran di tautan ini dan tautan ini digabungkan. Saya mengalami beberapa kesulitan, tetapi pada akhirnya saya berhasil menginstal Google Play Store dan mengujinya dengan mengunduh beberapa aplikasi acak. Namun aktivitas peta tetap menampilkan pesan dengan tombol "Perbarui". Tombol itu akan membawa saya ke toko, tetapi di sana saya akan mendapat pesan tentang "item tidak ditemukan" dan peta masih tidak berfungsi. Pada saat itu saya menyerah.

Kemarin, saya menjalankan aplikasi pengujian yang sama secara tidak sengaja dan berhasil! Saya sangat bingung, tetapi dengan cepat saya telah membuat perbedaan dari emulator tempat ia berfungsi dan yang baru bersih dan saya telah menentukan dua aplikasi pada yang berfungsi di / data / app / direktori: com.android.vending-1. apk dan com.google.android.gms-1.apk. Ini aneh karena, ketika saya menginstal Google Play Store dengan instruksi dari situs-situs tersebut, saya mendorong Phonesky.apk, GoogleServicesFramework.apk dan GoogleLoginService.apk dan ke folder / sistem / aplikasi yang berbeda.

Bagaimanapun, sekarang Android Google Maps API v2 berfungsi di emulator saya. Ini adalah langkah-langkah untuk melakukan ini:


Buat emulator baru

  • Untuk perangkat , pilih "5.1 '' WVGA (480 x 800: mdpi)"
  • Untuk target , pilih "Android 4.1.2 - API level 16"
  • Untuk "CPU / ABI", pilih "ARM"
  • Biarkan sisanya default

Ini adalah pengaturan yang berfungsi untuk saya. Saya tidak tahu untuk yang lain.


Mulai emulator


instal com.android.vending-1.apk dan com.google.android.gms-1.apk melalui perintah instal ADB


Google Maps seharusnya berfungsi sekarang di emulator Anda.

Nemanja Kovacevic
sumber
Berikut ini tautan ke blog saya dengan deskripsi tentang apa yang telah saya coba untuk membuat ini berhasil nemanjakovacevic.net/blog/2012/12/…
Nemanja Kovacevic
Sayangnya layanan google play revisi 4 memberikan kesalahan baru: layanan Google Play ketinggalan zaman. Membutuhkan 2012100 tetapi ditemukan 2010110
Ilja S.
3
Ok, jika Anda memiliki layanan play revisi ke-4, lihat jawaban @danbrough, dan unduh apk yang ditentukan di komentar: tautan
Ilja S.
1
perhatikan bahwa ini juga berfungsi dengan x86, membuat emulator jauh lebih cepat!
Kafein
3

Saya telah membuat deskripsi (Jerman) bagaimana membuatnya bekerja . Anda pada dasarnya membutuhkan emulator dengan setidaknya API level 9 dan tanpa Google API. Kemudian Anda harus mendapatkan APK dari perangkat yang di- rooting :

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

dan instal di emulator:

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

Anda bahkan dapat menjalankan Aplikasi Google Maps asli, jika Anda memiliki emulator dengan setidaknya API level 14 dan sebagai tambahan menginstal com.google.android.apps.maps-1.apk

Selamat bersenang-senang.

Kurt Huwig
sumber
2

Saya telah mencoba menjalankan Android Google Maps v2 di bawah emulator, dan saya menemukan banyak cara untuk melakukannya, tetapi tidak ada yang berhasil untuk saya. Saya selalu memiliki peringatan ini di Logcat Google Play services out of date. Requires 3025100 but found 2010110dan ketika saya ingin memperbarui layanan Google Play di emulator tidak ada yang terjadi. Masalahnya adalah APK com.google.android.gms tidak kompatibel dengan versi pustaka di SDK Android saya.

Saya menginstal file ini "com.google.android.gms.apk", "com.android.vending.apk" di emulator saya dan aplikasi saya Google Maps v2 berfungsi dengan baik. Tidak ada langkah lain terkait / system / app yang diperlukan.

Adil
sumber
1
Itu adalah file yang akan diinstal: vending.apk dan gms.apk
Adil
2

Aplikasi ini tidak akan berjalan kecuali Anda memperbarui Layanan Google Play. Saya sudah mencobanya cukup lama, tapi tetap saja saya tidak mendapatkan petanya ... Hanya layar kosong yang muncul, bahkan jika saya memodifikasi Layanan Google Play saya yang diberikan oleh komentar di bawah ini ..


Periksa file manifes layanan play Anda dan periksa kode versi untuk file APK com.google.android.gms. Di bawah ini, itu adalah "3136110". Download file APK ini dan instal dari perintah DOS, tetapi sebelum penginstalan, jalankan emulator target Anda.

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

Saya mendapatkan file APK ini dari tautan ini .

pengguna
sumber
2

Saya memecahkan masalah ini dengan melakukan langkah-langkah berikut:

  • Di Emulator:

    Anda harus menggunakan API terbaru Google APIs(Google Inc.)-API Level 19.

    Lakukan hal-hal lain yang ditempatkan di tangkapan layar itu sendiri.

    masukkan deskripsi gambar di sini

  • Kunci API:

    Buat Kunci API Baru dan Periksa dengan cermat tentang kunci API Peta Google dan Kunci SHA.

  • Layanan Google Play:

    Anda harus mengunduh Layanan Google Play terbaru com.android.vending-4.8.20.apk . Di situs itu jika layanan google play tidak berfungsi berarti Anda dapat menemukan banyak situs di internet bernama com.android.vending 4.8.20.apk.

    Anda dapat menjalankan Layanan Google play dengan menggunakan Command Prompt adb install com.android.vending 4.8.20.apk.

    Catatan: Anda harus mengunduh layanan Google play terbaru karena tahun demi tahun versi terbaru akan diperbarui di internet.

    keluaran :

    masukkan deskripsi gambar di sini

Steve
sumber
1
@JJD Saya diedit, periksa. Ini akan berhasil. Terima kasih sudah menunjuknya.
Steve
0

Setelah memperbarui ke ADT 22.0.1, karena perpustakaan pribadi Android, layanan Google Maps memberikan beberapa kesalahan dan aplikasi macet. Jadi saya akhirnya menemukan solusinya dan itu berhasil untuk saya.

Cukup instal pustaka layanan Google Play lalu buka google-play-service/libproject/google-play-services_libdari https://www.dropbox.com/sh/2ok76ep7lmav0qf/9XVlv61D2b. Impor itu ke ruang kerja Anda. Bersihkan proyek Anda di mana Anda ingin menggunakan gogole-play-services-lib dan kemudian bangun lagi dan buka Project -> Properties -> Java BuildPath -> pilih "Android Private Libraries, Android Dependencies, google-play-service"

Di Properti itu sendiri, buka Android lalu pilih salah satu versi lalu pilih tambahkan dan pilih google-play-service-lib lalu tekan terapkan dan terakhir OK.

Terakhir, buka Proyek -> Alat Android -> Perpustakaan Dukungan Android. Terima lisensi dan setelah menginstal kemudian jalankan proyek Anda.

Ini akan bekerja dengan baik.

Sayang Shah
sumber
0

Dari Android SDK Manager, instal: Extras: layanan Google Play

Franck
sumber
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'

ini bekerja untuk saya versi saat ini adalah 10.0.1

jagapathi
sumber