Это приложение не запустится, если вы не обновите сервисы Google Play (через Bazaar).


100

Я тестирую новый 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 Services. Что я здесь делаю не так?

ОБНОВИТЬ

Соответствующая ошибка в системе отслеживания проблем Google ( https://issuetracker.google.com/issues/35822258 ) была исправлена некоторое время назад.

Теперь вы можете использовать Google Maps Android API в эмуляторе и создавать виртуальные устройства с сервисами Play, как описано в этом ответе:

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


Вы используете avd с google api или простым android?
Селвин,

Обычный Android, хотя я только что пробовал переключиться на API Google для 4.1, и это то же самое.
soren.qvist 03

Как ни странно, я смотрю на ту же проблему в одно и то же время. Я предполагаю, что это потому, что APK-файл Google Play Services не установлен на эмуляторе. Ошибка связана с тем, что приложение пытается запустить Google Play (магазин) для установки APK. Вероятно, он будет нормально работать на устройстве.
gazreese 03


Ответы:


42

Согласно обсуждению с разработчиками Android в Google+, запуск нового API карт в эмуляторе в настоящее время невозможен.

(Комментарий от Желязко Атанасова вчера в 23:18, не знаю, как на него ссылаться)

Кроме того, вы не видите часть « (через Bazaar) » при запуске с реального устройства, а кнопка обновления открывает Play Store. Я предполагаю, что Bazaar предназначен для предоставления сервисов Google Play на эмуляторе Android, но он еще не готов ...


15
Что ж, прискорбно
soren.qvist 04

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

56

ОБНОВИТЬ

API карт Google v2 теперь установлен в последних образах системы Google (api: 19 ARM или x86).
Так что ваше приложение должно просто работать с новыми изображениями. Эти файлы устанавливать не нужно.

Я пытался запустить приложение Android Google Maps V2 под эмулятором, и как только я наконец запустил службы Google Play, я обновил свой SDK до версии 4 служб Google Play, и мой эмулятор больше не запускал мое приложение.

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

Я использовал Titanium Backup для резервного копирования моего Asus Eee Pad Transformer (TF101), а затем взял файлы com.android.vending и com.google.android.gms APK из резервной копии.

Я установил их на эмулятор, настроенный на платформу: 4.1.2, уровень API: 16, процессор Intel / Atom x86), и мое приложение Google Maps V2 снова работает.

Это все .. никаких других шагов относительно / system / app не требовалось.

Мое приложение использует только Google Maps API, без сомнения, требуются дополнительные действия, если вы используете другие сервисы Google Play.

Новые файлы для последних сервисов Google Play:

Те же инструкции, что и раньше: создайте новый эмулятор с любым CPU / ABI , целью, не относящейся к Google API (работают версии 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 (то есть уровня API 8) должно быть достаточно, если устройства также имеют GL ES версии 2.
Ярл

1
Я попытался установить эти файлы, но adb показал мне сообщение об ошибке, что файлы уже установлены. Я попытался переустановить, потом он сказал, что сертификаты несовместимы. Что мне тогда делать?
huong 05

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

Что касается «EGL_emulation: eglSurfaceAttrib не реализовано», возможно, попробуйте «Использовать Host 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 Services и Google Maps . У меня ошибка 491, если их установить из магазина Google Play . Я загрузил приложения в эмулятор и запустил установку локально. (Вы можете использовать adbдля установки). Ссылки на приложения:

4) Я успешно запустил демонстрационный образец на эмуляторе после этих шагов. Вот скриншот:

Карты Гугл


Я думаю, что в этом методе есть несколько ненужных шагов. Попробуйте мой метод из одного из других ответов с двумя установками apks ...
Неманья Ковачевич

Я пробовал ваш метод, но при загрузке приложений в каталог system / app adb выдает ошибку о том, что недостаточно свободного места. Создание нового эмулятора с большим объемом памяти не помогло. На других версиях эмулятора ваш метод не работал.
Paha

1
На шаге 3) команда установки - adb install com.google.android.apps.maps-1.apkи adb install com.google.android.gms-2.apk.
sulai

И убедитесь, что у вас есть версия сервиса Google Play, которая соответствует вашим потребностям. Вы можете скачать их с papktop.com/tag/google-play-services-apk .
sulai

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

29

Я отвечаю на этот вопрос во второй раз, потому что решение, которое я пробовал, которое сначала не работало, теперь работает, и я могу воссоздать шаги, чтобы заставить его работать :)

У меня также было ощущение, что здесь виновато отсутствие Google Play Store, поэтому я попытался установить Google Play Store в эмулятор по совету по этой ссылке и этой ссылке вместе. У меня были некоторые трудности, но в конце концов мне удалось установить Google Play Store и протестировать его, загрузив какое-то случайное приложение. Но активность карт продолжала отображать сообщение с кнопкой «Обновить». Эта кнопка переводила меня в магазин, но там я получал сообщение о том, что «элемент не найден», а карты по-прежнему не работают. На этом я сдался.

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

Так или иначе, сейчас Android Google Maps API v2 работает на моем эмуляторе. Вот шаги, чтобы сделать это:


Создать новый эмулятор

  • В качестве устройства выберите "5.1" WVGA (480 x 800: mdpi) ".
  • В качестве цели выберите «Android 4.1.2 - уровень API 16».
  • Для «CPU / ABI» выберите «ARM».
  • Остальное оставьте по умолчанию

Это те настройки, которые у меня работают. Не знаю по другим.


Запускаем эмулятор


установить com.android.vending-1.apk и com.google.android.gms-1.apk через команду установки ADB


Карты Google теперь должны работать в вашем эмуляторе.


Вот ссылка на мой блог с описанием того, что я пытался сделать в этой работе nemanjakovacevic.net/blog/2012/12/…
Nemanja Kovacevic

К сожалению, версия 4 служб Google Play выдает новую ошибку: службы Google Play устарели. Требуется 2012100, но найдено 2010110
Илья С.

3
Хорошо, если у вас есть 4-я ревизия игровых сервисов, посмотрите ответ @danbrough и загрузите apks, указанные в комментарии: ссылка
Илья С.

1
обратите внимание, что это работает и с x86, что делает эмулятор более быстрым!
Кофеин

3

Я создал (на немецком) описание того, как заставить его работать . Вам в основном нужен эмулятор с уровнем API не ниже 9 и без 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 Google Maps v2 под эмулятором, и нашел много способов сделать это, но ни один из них у меня не работал. У меня всегда есть это предупреждение в Logcat, Google Play services out of date. Requires 3025100 but found 2010110и когда я хочу обновить сервисы Google Play на эмуляторе, ничего не произошло. Проблема заключалась в том, что APK com.google.android.gms не был совместим с версией библиотеки в моем Android SDK.

Я установил эти файлы "com.google.android.gms.apk", "com.android.vending.apk" на свой эмулятор, и мое приложение Google Maps v2 работало нормально. Никаких других шагов относительно / system / app не требуется.


1
это файлы для установки: vending.apk и gms.apk
Адиль

2

Это приложение не запустится, пока вы не обновите сервисы 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 и ключ 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 давала некоторую ошибку, и приложение зависало. Итак, я наконец нашел решение, и оно сработало для меня.

Просто установите сервисную библиотеку Google Play и перейдите на google-play-service/libproject/google-play-services_libот https://www.dropbox.com/sh/2ok76ep7lmav0qf/9XVlv61D2b. Импортируйте это в свою рабочую область. Очистите свой проект, в котором вы хотите использовать gogole-play-services-lib, а затем создайте его снова и перейдите в Project -> Properties -> Java BuildPath -> выберите «Android Private Libraries, Android Dependencies, google-play-service»

В самих свойствах перейдите в Android, затем выберите любую из версий, затем выберите добавить и выберите google-play-service-lib, затем нажмите «Применить» и, наконец, ОК.

Наконец, перейдите в Проект -> Инструменты Android -> Библиотеки поддержки Android. Примите лицензию и после установки запустите свой проект.

Будет работать нормально.


0

Я нашел хорошее решение, которое позволяет вам протестировать ваше приложение в эмуляторе, а также не требует, чтобы вы возвращались к более старой версии библиотеки. См. Ответ на вопрос о переполнении стека. Запуск Google Maps v2 на эмуляторе Android .



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.