Saya menguji Google Maps API V2 baru untuk Android, dan saya mendapatkan pesan ini ketika aplikasi diluncurkan:
Ini berjalan pada emulator 4.1.
Ini AndroidManifest.xml
file 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:
android
google-maps
android-mapview
google-maps-android-api-2
soren.qvist
sumber
sumber
Jawaban:
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 ...
sumber
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:
com.google.android.gms-20140218.apk
com.android.vending-20140218.apk
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:
Jika Anda mengupgrade emulator yang sudah ada, Anda mungkin perlu meng-uninstal versi sebelumnya dengan:
Itu saja.
sumber
adb uninstall com.android.vending
danadb uninstall com.google.android.gms
. Setelah menginstal paket yang disebutkan di atas, aplikasi saya berjalan tetapi saya melihatEGL_emulation: eglSurfaceAttrib not implemented
pesan peringatan di log dan tidak ada peta yang terlihat di aplikasi. Ini, saya yakin, masalah emulator / GPU. GPU sayaRadeon HD6870
dan saya menjalankan Android 4.1.2 tanpa Google API di emulator.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:
Di versi lain saya tidak dapat mengkonfigurasi karena berbagai kesalahan ketika saya menginstal aplikasi yang diperlukan.
2) Mulai emulator dan instal aplikasi berikut:
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
adb
untuk menginstal ini). Tautan ke aplikasi:4) Saya berhasil menjalankan sampel demo di emulator setelah langkah-langkah ini. Ini tangkapan layarnya:
sumber
adb install com.google.android.apps.maps-1.apk
danadb install com.google.android.gms-2.apk
.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
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.
sumber
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 :
dan instal di emulator:
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.
sumber
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 2010110
dan 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.
sumber
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.
Saya mendapatkan file APK ini dari tautan ini .
sumber
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.
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 :
sumber
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_lib
darihttps://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.
sumber
Saya telah menemukan solusi bagus yang memungkinkan Anda menguji aplikasi Anda di emulator dan juga tidak mengharuskan Anda untuk kembali ke versi perpustakaan yang lebih lama. Lihat jawaban untuk pertanyaan Stack Overflow Menjalankan Google Maps v2 di emulator Android .
sumber
Dari Android SDK Manager, instal: Extras: layanan Google Play
sumber
ini bekerja untuk saya versi saat ini adalah 10.0.1
sumber