Google Play Hizmetlerini güncellemediğiniz sürece bu uygulama çalışmayacak (Bazaar üzerinden)


100

Android için yeni Google Maps API V2'yi test ediyorum ve uygulama başladığında şu mesajı alıyorum:

MainActivity hata mesajı gösteriyor

Bu bir 4.1 öykünücüsü üzerinde çalışıyor.

İşte AndroidManifest.xmldosyam:

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

MainActivity.java dosyası:

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

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

"Güncelle" yi tıklamak, uygulamayı aşağıdaki yığın iziyle kilitler:

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)

Google Play Hizmetleri projesine de başvurdum. Burada neyi yanlış yapıyorum?

GÜNCELLEME

Google sorun izleyicisindeki ( https://issuetracker.google.com/issues/35822258 ) ilgili hata bir süre önce çözüldü.

Artık Google Maps Android API'yi emülatörde kullanabilir ve bu yanıtta açıklandığı gibi Play hizmetleriyle Sanal cihazlar oluşturabilirsiniz:

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


Avd'yi google api veya düz android ile mi kullanıyorsunuz?
Selvin

Düz Android, ancak 4.1 için Google API'larına geçmeye çalışsam da aynı.
soren.qvist

Garip bir şekilde aynı soruna tam olarak aynı anda bakıyorum. Şimdiye kadar bunun Google Play Hizmetleri APK'sinin Emülatörde kurulu olmadığından kaynaklandığını varsayıyorum. Hata, uygulamanın APK'yı yüklemek için Google Play'i (mağaza) başlatmaya çalışmasıdır. Muhtemelen bir cihazda iyi çalışacaktır.
gazreese


Yanıtlar:


42

Google + ' da Android Geliştiricileri ile yapılan bir tartışmaya göre , yeni Harita API'sini emülatörde çalıştırmak şu anda mümkün değil.

(Dün saat 23: 18'de Zhelyazko Atanasov'un yorumu, ona doğrudan nasıl bağlanacağımı bilmiyorum)

Ayrıca, gerçek bir cihazdan çalıştırıldığında " (Çarşı üzerinden) " bölümünü görmezsiniz ve güncelleme düğmesi Play Store'u açar. Bazaar'ın Android öykünücüsü üzerinde Google Play Hizmetlerini sağlamayı amaçladığını varsayıyorum, ancak henüz hazır değil ...


15
Bu talihsiz bir durum
soren.qvist

En son GmsCore.apk dosyasını doğrudan emülatöre kopyalamayı denedim ama bu da çalışmıyor. Köklü cihazımdan tam olarak hangi APK'leri kopyalayacağımı bilseydim muhtemelen işe yarardı.
James Wald

56

GÜNCELLEME

Google Maps API v2 artık en son Google sistem görüntülerine (api: 19 ARM veya x86) yüklenmiştir.
Yani uygulamanız sadece yeni resimlerle çalışmalıdır. Bu dosyaları kurmanıza gerek yoktur.

Bir emülatör altında bir Android Google Maps V2 uygulamasını çalıştırmaya çalışıyordum ve sonunda Google Play Hizmetlerini çalıştırdığımda, SDK'mı Google Play Hizmetleri revizyon 4'e güncelledim ve öykünücüm artık uygulamamı çalıştırmıyordu.

Şimdi emülatörümü transformatör tabletimden nasıl güncelleyeceğimi çözdüm. (Aşağıdaki dosyaları indirebileceğiniz için bir tablete ihtiyacınız olmayacak.)

Asus Eee Pad Transformer'ımı (TF101) yedeklemek için Titanium Backup kullandım ve ardından com.android.vending ve com.google.android.gms APK dosyalarını yedekten aldım.

Bunları platform: 4.1.2, API Düzeyi: 16, CPU Intel / Atom x86) ile yapılandırılmış bir emülatöre yükledim ve Google Haritalar V2 uygulamam tekrar çalışıyor.

Hepsi bu kadardı .. / sistem / uygulama ile ilgili diğer adımların hiçbiri gerekli değildi.

Uygulamam yalnızca Google Haritalar API'sini kullanıyor, şüphesiz, diğer Google Play hizmetlerini kullanıyorsanız daha fazla adım gerekir.

En son Google Play hizmetleri için yeni dosyalar:

Öncekiyle aynı talimatlar: Herhangi bir CPU / ABI , Google dışı bir API hedefi (10-19 sürümleri çalışır) ve GPU öykünmesini açıp kapatarak yeni bir emülatör oluşturun ve ardından dosyaları yükleyin:

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

Mevcut bir öykünücüyü yükseltiyorsanız, önceki sürümleri şu şekilde kaldırmanız gerekebilir:

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

Bu kadar.


Öykünücünüzün x86 veya ARM olması önemli değil. Platform: 4.2 de iyi.
Dan Brough

1
Developer.android.com/google/play-services/index.html'ye göre . Android 2.2'ye sahip cihazlar (API seviyesi 8), cihazlarda ayrıca GL ES sürüm 2 olduğu sürece yeterli olmalıdır.
Jarl

1
Bu dosyaları yüklemeyi denedim, ancak adb bana dosyaların zaten kurulu olduğuna dair hata mesajı gösterdi. Yeniden yüklemeyi denedim, ardından sertifikaların tutarsız olduğunu söyledi. O zaman ne yapmalıyım?
huong

Önceden yüklenmiş paketleri adb uninstall com.android.vendingve ile kaldırabildim adb uninstall com.google.android.gms. Yukarıda belirtilen paketleri yükledikten sonra uygulamam çalışıyor ancak EGL_emulation: eglSurfaceAttrib not implementedgünlükte uyarı mesajları görüyorum ve uygulamada hiçbir harita görünmüyor. Bunun emülatör / GPU sorunu olduğuna inanıyorum. Benim GPU olduğunu Radeon HD6870ve ben emülatörü Google API'leri olmadan Android 4.1.2 koşuyordu.
dvim

"EGL_emulation: eglSurfaceAttrib uygulanmadı" ile ilgili olarak, belki öykünme seçenekleri altındaki "Ana Bilgisayar GPU'sunu Kullan" seçeneğini deneyebilirsiniz.
Dan Brough

39

Android öykünücüsünde yeni gmaps API'sini (Google Maps Android API v2) yapılandırmak için yaklaşık bir gün harcadım . İnternette bulduğum yöntemlerin hiçbiri benim için doğru çalışmıyordu. Ama yine de yaptım. İşte nasıl:

  1. Aşağıdaki yapılandırmayla yeni bir emülatör oluşturun:

Buraya resim açıklamasını girin

Diğer sürümlerde, gerekli uygulamaları kurduğumda çeşitli hatalar nedeniyle yapılandıramadım.

2) Öykünücüyü başlatın ve aşağıdaki uygulamaları kurun:

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

Bunu aşağıdaki komutlarla yapabilirsiniz:

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/

APK dosyalarını indirmek için bağlantılar . Bunları köklü Android cihazımdan kopyaladım.

3) Google Play Hizmetlerini ve Google Haritalar'ı öykünücüye yükleyin . Google Play mağazasından yüklersem 491 hatası alıyorum . Uygulamaları emülatöre yükledim ve kurulumu yerel olarak çalıştırdım. (Bunu adbyüklemek için kullanabilirsiniz ). Uygulamalara bağlantılar:

4) Bu adımlardan sonra emülatörde bir demo örneğini başarıyla çalıştırdım. İşte bir ekran görüntüsü:

Google Maps


Sanırım bu yöntemin gereksiz bazı adımları var. Yüklenecek yalnızca iki apks ile diğer yanıtlardan birinden yöntemimi deneyin ...
Nemanja Kovacevic

Yönteminizi denedim, ancak uygulamaları sisteme / uygulamaya dir adb yüklerken yeterli boş alan olmadığını söyleyen bir hata oluşturdu. Büyük miktarda belleğe sahip yeni bir emülatör oluşturmak yardımcı olmadı. Öykünücünün diğer sürümlerinde yönteminiz işe yaramadı.
Paha

1
3. adımda, install komutu adb install com.google.android.apps.maps-1.apkve şeklindedir adb install com.google.android.gms-2.apk.
sulai

Ve ihtiyaçlarınıza uyan bir google play hizmeti sürümü aldığınızdan emin olun. Bunları papktop.com/tag/google-play-services-apk adresinden indirebilirsiniz .
sulai

Her zaman en son Google Play APK sürümünü yüklediğinizden emin olun, çünkü şu anda Google Play v2 güncellemeyi yüklemenize izin vermiyor (kötü 491 hatası veriyor) ve bu güncelleme Google Haritalar uygulamalarını çalıştırmak için gerekiyor.
Serhiy

29

Bu soruyu ikinci kez yanıtlıyorum, çünkü ilk başta işe yaramayan denediğim çözüm şimdi çalışıyor ve işe yaraması için adımları yeniden oluşturabilirim :)

Ayrıca burada Google Play Store eksikliğinin bir suçlu olduğu hissine kapıldım, bu yüzden bu bağlantı ve bu bağlantı birleştirilerek Google Play Store'u emülatöre yüklemeye çalıştım . Bazı zorluklar yaşadım, ancak sonunda Google Play Store'u kurmayı başardım ve rastgele bir uygulama indirerek test ettim. Ancak harita etkinliği "Güncelle" düğmesiyle mesajı görüntülemeye devam etti. Bu düğme beni mağazaya götürürdü, ancak orada "öğe bulunamadı" ile ilgili bir mesaj alırdım ve haritalar hala çalışmıyordu. O noktada pes ettim.

Dün aynı test uygulamasını kazara çalıştırdım ve işe yaradı! Kafam çok karışmıştı, ancak hızlı bir şekilde çalıştığı ve yeni temiz olan emülatörden bir fark oluşturdum ve / data / app / dizininde çalışan iki uygulama belirledim: com.android.vending-1. apk ve com.google.android.gms-1.apk. Google Play Store'u bu sitelerden gelen talimatlarla yüklerken, Phonesky.apk, GoogleServicesFramework.apk ve GoogleLoginService.apk ve farklı bir klasöre / sisteme / uygulamaya gönderiyordum çünkü bu garip.

Her neyse, şimdi Android Google Maps API v2 emülatörüm üzerinde çalışıyor. Bunu yapmak için gereken adımlar şunlardır:


Yeni bir emülatör oluştur

  • İçin cihazın , "(: mdpi 480 x 800) 5.1 '' WVGA" seçim
  • For hedefin "- API düzeyi 16 Android 4.1.2", seçim
  • "CPU / ABI" için "ARM" ü seçin
  • Gerisini varsayılanlarda bırakın

Bunlar benim için çalışan ayarlar. Farklı olanları bilmiyorum.


Öykünücüyü başlatın


yüklemek com.android.vending-1.apk ve com.google.android.gms-1.apk komutunu yüklemek ADB yoluyla


Google Haritalar şimdi emülatörünüzde çalışmalıdır.


İşte bu işi yapmaya çalıştığım şeyin açıklamasını içeren blogumun bağlantısı nemanjakovacevic.net/blog/2012/12/…
Nemanja Kovacevic

Maalesef google play hizmetleri revizyon 4 yeni hata veriyor: Google Play hizmetleri güncel değil. 2012100 gerektirir, ancak 2010110
Ilja S.

3
Tamam, oyun hizmetlerinin 4. revizyonuna sahipseniz, @danbrough cevabına bakın ve yorumda belirtilen apk'leri indirin: link
Ilja S.

1
bunun x86 ile de çalıştığını ve öykünücüyü çok daha hızlı hale getirdiğini unutmayın!
Kafein

3

Nasıl çalıştırılacağına dair (Almanca) bir açıklama oluşturdum . Temel olarak, en az API seviyesi 9 olan ve Google API'sı olmayan bir emülatöre ihtiyacınız var. Ardından, köklü bir cihazdan APK'ları almanız gerekir :

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

ve bunları öykünücüye yükleyin:

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

En az API seviyesi 14 olan bir emülatörünüz varsa ve ek olarak yüklediyseniz, yerel Google Haritalar Uygulamasını bile çalıştırabilirsiniz. com.google.android.apps.maps-1.apk

İyi eğlenceler.


2

Bir emülatör altında bir Android Google Haritalar v2 çalıştırmaya çalışıyorum ve bunu yapmanın birçok yolunu buldum, ancak hiçbiri benim için işe yaramadı. Logcat'te her zaman bu uyarıyı aldım Google Play services out of date. Requires 3025100 but found 2010110ve emülatörde Google Play hizmetlerini güncellemek istediğimde hiçbir şey olmadı. Sorun, com.google.android.gms APK'sinin Android SDK'mdaki kitaplık sürümüyle uyumlu olmamasıydı.

Bu dosyaları "com.google.android.gms.apk", "com.android.vending.apk" emülatörüme yükledim ve Google Haritalar v2 uygulamam sorunsuz çalıştı. / System / app ile ilgili diğer adımların hiçbiri gerekli değildi.


1
Bunlar yüklenecek dosyalar: vending.apk ve gms.apk
Adil

2

Google Play Hizmetlerini güncellemediğiniz sürece bu uygulama çalışmayacak. Çok uzun zamandır denedim ama yine de haritayı alamadım ... Aşağıdaki yorumda verilen Google Play Hizmetimi değiştirsem bile sadece boş bir ekran görünüyor ..


Oynatma hizmetleri bildirim dosyanızı kontrol edin ve com.google.android.gms APK dosyası için sürüm kodunu kontrol edin. Aşağıda "3136110" dur. Bu APK dosyalarını indirin ve bir DOS komut isteminden yükleyin, ancak kurulumdan önce hedef emülatörünüzü çalıştırın.

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

Bu APK dosyalarını bu bağlantıdan aldım .


2

Aşağıdaki adımları uygulayarak bu sorunu çözdüm:

  • Emülatörde:

    En son API'yi kullanmalısınız Google APIs(Google Inc.)-API Level 19.

    Ekran görüntüsünün kendisine yerleştirilen geri kalan şeyleri yapın.

    görüntü açıklamasını buraya girin

  • API Anahtarı:

    Yeni API Anahtarı Oluşturun ve Google Harita API anahtarı ve SHA Anahtarını dikkatlice kontrol edin.

  • Google Play Hizmetleri:

    En son Google Play Hizmetleri com.android.vending-4.8.20.apk'yi indirmelisiniz . Bu sitede google oyun hizmetleri çalışmıyorsa, internette adlı bir çok site bulabileceğiniz anlamına gelir com.android.vending 4.8.20.apk.

    Komut İstemi'ni kullanarak Google Play Hizmetlerini çalıştırabilirsiniz adb install com.android.vending 4.8.20.apk.

    Not: En son Google oyun hizmetlerini indirmeniz gerekir çünkü her yıl en son sürüm internette güncellenecektir.

    çıktı :

    görüntü açıklamasını buraya girin


1
@JJD Ben düzenledim, kontrol et, işe yarayacak, işaret ettiğin için teşekkürler.
Steve

0

ADT 22.0.1'e güncelledikten sonra, Android özel kitaplıkları nedeniyle Google Haritalar hizmeti bazı hatalar veriyordu ve uygulama çöktü. Sonunda çözümü buldum ve benim için çalıştı.

Sadece Google Play hizmet kütüphane yükleyip sonra gidin google-play-service/libproject/google-play-services_libdan https://www.dropbox.com/sh/2ok76ep7lmav0qf/9XVlv61D2b. Bunu çalışma alanınıza aktarın. Projenizi gogole-play-services-lib kullanmak istediğiniz yerde temizleyin ve ardından tekrar oluşturun ve Proje -> Özellikler -> Java BuildPath -> "Android Özel Kitaplıkları, Android Bağımlılıkları, google-play-hizmeti" seçeneğine gidin

Özellikler'in kendisinde, Android'e gidin ve ardından sürümlerden herhangi birini seçin ve ardından google-play-service-lib ekle'yi seçin ve ardından uygula ve son olarak Tamam'a basın.

Sonunda, Proje -> Android Araçları -> Android Destek Kitaplıkları'na gidin. Lisansı kabul edin ve yükledikten sonra projenizi çalıştırın.

İyi çalışacak.



0

Android SDK Yöneticisinden şunu yükleyin: Ekstralar: Google Play hizmetleri


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'

bu benim için çalışıyor güncel sürüm 10.0.1

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.