Это приложение не запустится, если вы не обновите Сервисы Google Play (через Базар)
Я тестирую новый Google Maps API V2 для Android и получаю следующее сообщение при запуске приложения:
Это работает на эмуляторе 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, как описано в этом ответе:
/questions/31327508/kak-skachat-google-play-services-v-emulyatore-android/31327512#31327512
12 ответов
Согласно обсуждению с разработчиками Android в Google+, запуск нового API карты на эмуляторе в настоящее время невозможен.
(Комментарий от Желязко Атанасова вчера в 23:18, я не знаю, как с ним напрямую связаться)
Кроме того, вы не видите часть "(via Bazaar)" при запуске с реального устройства, а кнопка обновления открывает Play Store. Я предполагаю, что Bazaar предназначен для предоставления Google Play Services на эмуляторе Android, но он еще не готов...
ОБНОВИТЬ
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 Level: 16, ЦП Intel/Atom x86), и мое приложение Google Maps V2 снова работает.
Это было все.. никаких других шагов, касающихся / system / app, не требовалось.
Мое приложение использует только API Карт Google, без сомнения, если вы используете другие сервисы Google Play, вам понадобятся дополнительные шаги.
Новые файлы для последних сервисов Google Play:
Те же инструкции, что и раньше: Создайте новый эмулятор с любым ЦП / ABI, целью API не из Google (работают версии 10-19) и эмуляцией GPU, а затем установите файлы:
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
Это все.
Я потратил около одного дня на настройку нового API gmaps (Google Maps Android API v2) в эмуляторе Android. Ни один из методов, которые я нашел в Интернете, не работал для меня правильно. Но все же я сделал это. Вот как:
- Создайте новый эмулятор со следующей конфигурацией:
На других версиях я не смог настроить из-за различных ошибок при установке необходимых приложений.
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) После этих шагов я успешно запустил демонстрационный образец на эмуляторе. Вот скриншот:
Я отвечаю на этот вопрос во второй раз, потому что решение, которое я пробовал, которое сначала не работало, теперь работает, и я могу воссоздать шаги, чтобы заставить его работать:)
У меня также было ощущение, что причиной этого является отсутствие 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 в другую папку /system/app.
Так или иначе, теперь Android Google Maps API v2 работает на моем эмуляторе. Вот шаги, чтобы сделать это:
Создать новый эмулятор
- Для устройства выберите "5.1-дюймовое WVGA (480 x 800: мдд)"
- Для цели выберите "Android 4.1.2 - Уровень API 16"
- Для "CPU/ABI" выберите "ARM"
- Оставьте остальные значения по умолчанию
Это настройки, которые работают для меня. Я не знаю для разных.
Запустите эмулятор
установите com.android.vending-1.apk и com.google.android.gms-1.apk с помощью команды установки ADB
Карты Google теперь должны работать в вашем эмуляторе.
Я создал (немецкое) описание, как заставить его работать. В основном вам нужен эмулятор с уровнем 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
Повеселись.
Я решил эти проблемы, выполнив следующие шаги:
В эмуляторе:
Вы должны использовать последний 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, потому что год от года последняя версия будет обновляться в Интернете.
вывод:
Я пытался запустить 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 Maps v2 работало нормально. Никаких других шагов, касающихся /system/app, не требовалось.
Это приложение не запустится, если вы не обновите Сервисы 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 файлы по этой ссылке.
Я нашел хорошее решение, которое позволяет вам тестировать ваше приложение в эмуляторе, а также не требует от вас возврата к более старой версии библиотеки. См. Ответ на вопрос о переполнении стека. Запуск Google Maps v2 на эмуляторе Android.
Из Android SDK Manager установите: Дополнения: Сервисы Google Play
После обновления до ADT 22.0.1, из-за частных библиотек Android, служба Карт Google выдавала ошибку, и приложение зависало. Так что я наконец нашел решение, и оно сработало для меня.
Просто установите сервисную библиотеку Google Play и перейдите к 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. Примите лицензию и после установки запустите ваш проект.
Это будет работать нормально.
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