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

Я тестирую новый API Google Maps V2 для Android, и я получаю это сообщение, когда приложение запускает:

MainActivity showing error message

Это работает на эмуляторе 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>

Нажатие "Обновить" приводит к сбою приложения со следующей командой stacktrace:

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. Что я здесь делаю неправильно?

Ответ 1

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

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

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

Ответ 2

UPDATE

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

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

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

Я использовал 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 не требовалось.

В моем приложении используется API Карт Google. Несомненно, требуется больше шагов, если вы используете другие сервисы Google Play.

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

Те же инструкции, что и раньше: Создайте новый эмулятор с любым CPU/ABI, вкл. Или выкл., Не совместимая с Google API (версии 10-19) и

Ответ 3

Я потратил около одного дня на настройку нового gmaps API (API Android Google Maps v2) на эмуляторе Android. Ни один из методов тех, кого я нашел в Интернете, не работал у меня правильно. Но все же я сделал это. Вот как:

  • Создайте новый эмулятор со следующей конфигурацией:

Enter image description here

В других версиях я не смог настроить из-за различных ошибок при установке необходимых приложений.

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 на эмулятор. У меня ошибка 491, если я устанавливаю их из магазина Google Play. Я загрузил приложения в эмулятор и запустил локальную установку. (Вы можете использовать adb, чтобы установить это). Ссылки на приложения:

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

Google Maps

Ответ 4

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

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

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

В любом случае, теперь API 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 должны теперь работать в вашем эмуляторе.

Ответ 5

Я создал описание (немецкий), как заставить его работать. Вам в основном нужен эмулятор, имеющий как минимум 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

Удачи.

Ответ 6

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

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

Ответ 7

Это приложение не будет работать, если вы не обновите сервисы 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 из эту ссылку.

Ответ 8

Я решил эту проблему, выполнив следующие шаги:

  • В эмуляторе:

    Вы должны использовать новейший API Google APIs(Google Inc.)-API Level 19.

    Сделайте остальную часть вещей, помещенных в скриншот.

    enter image description here

  • Ключ 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, потому что из года в год последняя версия будет обновляться в Интернете.

    Выход:

    enter image description here

Ответ 9

После обновления до 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, Android Dependencies, google-play-service"

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

Наконец, перейдите в Project → Android Tools → Android Support Libraries. Примите лицензию и после ее установки запустите проект.

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

Ответ 11

Из Android SDK Manager установите: Дополнительно: службы Google Play

Ответ 12

 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