Ця програма не працюватиме, якщо ви не оновите Служби 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.