Ця програма не працюватиме, якщо ви не оновите Служби Google Play (через Bazaar)


100

Я тестую новий API Google Maps API V2 для Android, і я отримую це повідомлення при запуску програми:

MainActivity показ повідомлення про помилку

Це працює на емуляторі 4.1.

Ось мій AndroidManifest.xmlфайл:

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

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

Файл 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>

Натиснувши "Оновити", програма завершує роботу із наступним стеком:

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. Що я тут роблю неправильно?

ОНОВЛЕННЯ

Відповідну помилку у програмі відстеження проблем Google ( https://issuetracker.google.com/isissue/35822258 ) було вирішено деякий час тому.

Тепер ви можете використовувати API Google Maps Android в емуляторі та створювати віртуальні пристрої за допомогою служб Play, як описано в цій відповіді:

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


Ви використовуєте avd з google api чи звичайним android?
Селвін

Простий Android, хоча я просто спробував перейти на API Google для 4.1, і це те саме.
soren.qvist

Як не дивно, я дивлюся на абсолютно таку ж проблему точно в той самий час. Я припускаю, що це тому, що APK служб Google Play не встановлений на емуляторі. Помилка полягає в тому, що програма намагається запустити Google Play (магазин), щоб встановити APK. На пристрої це, ймовірно, буде добре працювати.
gazreese


Відповіді:


42

Відповідно до дискусії з розробниками Android в Google+, наразі запустити новий API API на емуляторі неможливо.

(Коментар від Желязко Атанасов вчора о 23:18, я не знаю, як безпосередньо до нього зв’язатись)

Крім того, ви не бачите частину " (через Bazaar) " під час роботи з фактичного пристрою, а кнопка оновлення відкриває Play Store. Я припускаю, що базар призначений для надання служб Google Play на емуляторі Android, але він ще не готовий ...


15
Ну, це прикро
soren.qvist

Я спробував скопіювати останній GmsCore.apk безпосередньо в емулятор, але це також не працює. Можливо, це спрацювало б, якби я точно знав, які APK копіювати з мого вкоріненого пристрою.
Джеймс Уолд

56

ОНОВЛЕННЯ

API Maps Maps v2 тепер встановлений на останніх зображеннях системи Google (api: 19 ARM або x86).
Тому ваша програма повинна просто працювати з новими зображеннями. Не потрібно встановлювати ці файли.

Я намагався запустити додаток Android Google Maps V2 під емулятором, і як тільки я нарешті запустив Google Play Services, я оновив свій SDK до версії 4, і мій емулятор більше не запускав мою програму.

Зараз я розробив, як оновити емулятор із планшета-трансформатора. (Вам не знадобиться планшет, оскільки ви можете завантажити файли нижче.)

Я використовував титан резервного копіювання для резервного копіювання мого Asus Eee Pad Transformer (TF101) , а потім схопив com.android.vending і com.google.android.gms APK файлів з резервної копії.

Я встановив їх на емуляторі, налаштованому на платформі: 4.1.2, рівень API: 16, процесор Intel / Atom x86), і моя програма Google Maps V2 знову працює.

Це було все. Жоден з інших кроків щодо / системи / програми не вимагався.

У моїй програмі використовується лише API Карт Google, без сумніву, потрібні додаткові кроки, якщо ви користуєтесь іншими службами Google Play.

Нові файли для останніх служб Google Play:

Ті ж інструкції, що і раніше: Створіть новий емулятор з будь-яким процесором / ABI , ціллю API, яка не належить Google (версії 10-19) та емуляцією графічного процесора, увімкнено та вимкнено, а потім встановіть файли:

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

Якщо ви оновлюєте існуючий емулятор, можливо, вам буде потрібно видалити попередні версії:

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

Це все.


Не має значення, чи ваш емулятор x86 або ARM. Платформа: 4.2 також добре.
Ден Бро

1
За інформацією developer.android.com/google/play-services/index.html . Дані щодо Android 2.2 (тобто рівень 8 API) має бути достатнім, доки пристрої також мають GL ES версії 2.
Jarl

1
Я спробував встановити ці файли, але adb показало мені повідомлення про помилку, що файли вже встановлені. Я спробував перевстановити, тоді він сказав, що сертифікати несуперечливі. Що мені робити тоді?
хуон

Мені вдалося видалити попередньо встановлені пакети за допомогою adb uninstall com.android.vendingта adb uninstall com.google.android.gms. Після встановлення вищезазначених пакетів моя програма запускається, але я бачу EGL_emulation: eglSurfaceAttrib not implementedпопереджувальні повідомлення в журналі і карта не видно у програмі. Це, я вважаю, проблема емулятора / GPU. Мій GPU є, Radeon HD6870і я працював на Android 4.1.2 без API API на емуляторі.
dvim

Щодо "EGL_emulation: eglSurfaceAttrib не реалізований", можливо, спробуйте "Використовувати хост GPU" під параметрами емуляції.
Ден Бро

39

Я витратив приблизно один день, щоб налаштувати новий gmaps API (Google Maps Android API v2) на емуляторі Android. Жоден із методів тих, кого я знайшов в Інтернеті, для мене не працював правильно. Але все ж я це зробив. Ось як:

  1. Створіть новий емулятор із такою конфігурацією:

Введіть тут опис зображення

На інших версіях я не зміг налаштувати через різні помилки, коли встановлював необхідні програми.

2) Запустіть емулятор та встановіть такі програми:

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

Це можна зробити за допомогою наступних команд:

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 . Я скопіював їх із свого вкоріненого пристрою Android.

3) Встановіть служби Google Play та Карти Google на емулятор. У мене помилка 491, якщо я встановив їх у магазині Google Play . Я завантажив програми в емулятор і запускаю інсталяцію локально. (Ви можете використовувати adbдля встановлення цього). Посилання на програми:

4) Після цих кроків я успішно запускаю демо-зразок на емуляторі. Ось скріншот:

Гугл-мапи


Я думаю, що цей метод має деякі непотрібні кроки. Спробуйте мій метод з однієї іншої відповіді, встановивши лише два апк ...
Неманя Ковачевич

Я спробував ваш метод, але при завантаженні додатків до системи / dir adb генерується помилка, сказавши, що вільного місця недостатньо. Створення нового емулятора з великою кількістю пам'яті не допомогло. В інших версіях емулятора ваш метод не працював.
Паха

1
На кроці 3) командою встановлення є adb install com.google.android.apps.maps-1.apkі adb install com.google.android.gms-2.apk.
сулай

І переконайтеся, що ви отримали версію сервісу Google Play, яка відповідає вашим потребам. Ви можете завантажити їх з papktop.com/tag/google-play-services-apk .
сулай

Просто переконайтеся, що ви завжди встановлюєте найновішу версію APK Google Play, оскільки на даний момент Google Play v2 не дозволить вам встановлювати оновлення (даючи жахливу помилку 491), і це оновлення потрібно для запуску програм Google Maps.
Сергій

29

Я відповідаю на це запитання вдруге, тому що рішення, яке я спробував, спочатку не спрацювало, і я можу відтворити кроки, щоб він працював :)

У мене також було відчуття, що відсутність Google Play Store є винуватцем тут, тому я спробував встановити Google Play Store на емулятор, порадившись за цим посиланням та разом із цим посиланням . У мене виникли певні труднощі, але наприкінці мені вдалося встановити Google Play Store і протестував його, завантаживши якийсь випадковий додаток. Але активність карт продовжувала відображати повідомлення кнопкою "Оновити". Ця кнопка доставить мене до магазину, але там я отримав би повідомлення про "предмет не знайдено", і карти все ще не працюють. У той момент я здався.

Вчора я випадково запустив те саме додаток для тестування, і воно спрацювало! Я дуже розгубився, але швидко створив відмінність від емулятора, де він працює, і новий чистий, і я визначив два програми на робочому в / data / app / directory: com.android.vending-1. apk і com.google.android.gms-1.apk. Це дивно, оскільки, коли я встановлював Google Play Store інструкціями з цих сайтів, я натискав Phonesky.apk, GoogleServicesFramework.apk і GoogleLoginService.apk і до іншої папки / системи / програми.

Так чи інакше, тепер Android Maps Maps v2 працює над моїм емулятором. Це кроки для цього:


Створіть новий емулятор

  • Для пристрою виберіть "5.1" 'WVGA (480 x 800: mdpi) "
  • Для цілі виберіть "Android 4.1.2 - рівень 16 API"
  • Для "CPU / ABI" виберіть "ARM"
  • Решту залиште до значень за замовчуванням

Це налаштування, які працюють для мене. Я не знаю для різних.


Запустіть емулятор


встановити com.android.vending-1.apk та com.google.android.gms-1.apk за допомогою команди встановлення ADB


Карти Google мають працювати зараз у вашому емуляторі.


Ось посилання на мій блог із описом того, що я намагався зробити цю роботу nemanjakovacevic.net/blog/2012/12/…
Неманя Ковачевич

На жаль, версія 4 для служб Google Play надає нову помилку: служби Google Play застаріли. Потрібно 2012100, але знайдено 2010110
Ілья С.

3
Гаразд, якщо у вас є ігрові послуги 4-ї ревізії, подивіться на відповідь @danbrough та завантажте apks, визначений у коментарі: посилання
Ілья С.

1
зауважте, що це працює і з x86, що робить емулятор набагато спритнішим!
Кофеїн

3

Я створив (німецьку) опис, як змусити його працювати . В основному вам потрібен емулятор, принаймні рівень 9 API та відсутні API Google. Тоді вам доведеться отримати APK з укоріненого пристрою:

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

та встановіть їх в емулятор:

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

Ви навіть можете запустити нативну програму Google Maps, якщо у вас є емулятор з принаймні рівнем API 14 та додатково встановити com.google.android.apps.maps-1.apk

Весело.


2

Я намагався запустити Android Maps Maps v2 під емулятором, і знайшов багато способів зробити це, але жоден з них не працював на мене. У мене завжди є таке попередження в Logcat, Google Play services out of date. Requires 3025100 but found 2010110і коли я хочу оновити служби Google Play на емуляторі, нічого не сталося. Проблема полягала в тому, що файл APK com.google.android.gms не сумісний із версією бібліотеки в моєму SDK для Android.

Я встановив ці файли "com.google.android.gms.apk", "com.android.vending.apk" на своєму емуляторі та в моєму додатку Google Maps v2 працював чудово. Жоден з інших кроків щодо / системи / програми не вимагався.


1
це файли для встановлення: vending.apk та gms.apk
Аділ

2

Ця програма не працюватиме, якщо ви не оновите Служби Google Play. Я пробував це так довго, але все-таки я не отримав карту ... З'являється лише порожній екран, навіть якщо я змінив службу Google Play, надану коментарем нижче ..


Перевірте файл маніфесту служб Google Play і перевірте код версії файлу APK com.google.android.gms. Внизу, це "3136110". Завантажте ці файли APK та встановіть із підказки DOS, але перед встановленням запустіть цільовий емулятор.

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

Я отримав ці файли APK за цим посиланням .


2

Я вирішив цю проблему, виконавши наступні кроки:

  • У емуляторі:

    Ви повинні використовувати найновіший API Google APIs(Google Inc.)-API Level 19.

    Решту речей розмістіть на самому скріншоті.

    введіть тут опис зображення

  • Ключ API:

    Створіть новий ключ API і уважно перевірте ключ API Google Map та ключ SHA.

  • Служби Google Play:

    Вам потрібно завантажити найновіший сервіс Google Play com.android.vending-4.8.20.apk . На цьому веб-сайті, якщо служби Google Play не працювали, ви можете знайти безліч сайтів в Інтернеті com.android.vending 4.8.20.apk.

    Ви можете запустити Служби Google Play за допомогою командного рядка adb install com.android.vending 4.8.20.apk.

    Примітка. Вам потрібно завантажити найновіші сервіси Google Play, оскільки з року в рік остання версія буде оновлюватися в Інтернеті.

    вихід :

    введіть тут опис зображення


1
@JJD Я відредагований перевірити це. Він буде працювати. Дякую за вказав.
Стів

0

Після оновлення до ADT 22.0.1 через приватні бібліотеки Android служба Google Maps помилилася, і програма вийшла з ладу. Тож я знайшов рішення нарешті, і воно спрацювало на мене.

Просто встановіть бібліотеку Play служби Google , а потім перейти до google-play-service/libproject/google-play-services_libз https://www.dropbox.com/sh/2ok76ep7lmav0qf/9XVlv61D2b. Імпортуйте це у робочу область. Очистіть проект там, де ви хочете скористатися gogole-play-services-lib, а потім зберіть його знову та перейдіть до проекту -> Властивості -> Java BuildPath -> виберіть "Приватні бібліотеки Android, Android-залежності, google-play-service"

У самій Властивості перейдіть на Android, а потім виберіть будь-яку з версій, а потім виберіть додавання та виберіть google-play-service-lib, а потім натисніть кнопку застосувати та, нарешті, добре.

Нарешті, перейдіть до Проекту -> Інструменти Android -> Бібліотеки підтримки Android. Прийміть ліцензію та після встановлення запустіть проект.

Це буде добре працювати.



0

В Android SDK Manager встановіть: Додаткові елементи: Служби 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'

це працює для мене поточна версія 10.0.1

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.