2013-07-19 6 views
1

Я новичок в Android, и я пытаюсь разработать приложение для Android, которое включает карты Google. Приложение отлично работало над эмулятором, пока я не решил обновить службы Google Play от версии 7 до 9.«Фатальное исключение: основное» и «Службы Google Play устарели» на эмуляторе

Теперь я получаю ту же самую ошибку, с которой я столкнулся раньше («Службы Google Play устарели ...») , плюс ошибка «фатальное исключение: основная». Вот то, что я получаю в LogCat:

http://imageshack.us/a/img11/8117/y1mq.png

Если я прочитал LogCat правильно, ошибка в MapTabActivity, но я не знаю, если ошибка вызвано Google Play услуги будучи из дату или, если это что-то еще ...

Перед обновлением Google Play услуги, приложение работает на эмуляторе с

  • Nexus 4 устройства
  • Android 4.2.2 (API лвл 17)
  • ARM CPU
  • Хост GPU выбран

Я также должен был установить com.android.vending.apk и com.google.android.gms.apk, который был рекомендовать в других сообщений об этом.

Я также добавил разрешение, необходимое манифесту, и применил его для ключа API, который также включен в манифест.

Может ли кто-нибудь мне помочь? Вот MapTabActivity и соответствующий XML.

MapTabActivity.java

package com.dissertation.closethedoordiss; 

import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.LatLng; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.view.View; 

public class MapTabActivity extends FragmentActivity { 

private GoogleMap mMap; 
private static final LatLng BRISTOL = new LatLng(51.455083,-2.586903); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_maptab); 


    mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapView)).getMap(); 
    mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 

    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(BRISTOL, 13)); 
} 

public void onClick_addretailer (View view) { 
    startActivity(new Intent("com.closethedoordiss.AddRetailerActivity")); 
} 
} 

activity_maptab.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:map="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <fragment 
     android:name="com.google.android.gms.maps.SupportMapFragment" 
     android:id="@+id/mapView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 



    <ImageButton 
     android:id="@+id/imageButton1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:src="@android:drawable/ic_menu_add" 
     android:onClick="onClick_addretailer" 
     android:contentDescription="@string/add_button" /> 

</RelativeLayout> 

Заранее спасибо за любую помощь при условии.

+0

Вы уверены, что установленные пакеты (вендинг, gms) являются последними? Это похоже на возможную возможную возможную ошибку при воспроизведении игровых сервисов, см. Http://developer.android.com/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#isGooglePlayServicesAvailable(android.content.Context) –

+0

Сначала я использовал упомянутые здесь пакеты [link] (http://stackoverflow.com/questions/14040185/running-google-maps-v2-on-android-emulator/17036337#17036337). Я также попытался установить, что, я считаю, были более свежими пакетами, но я не знаю, были ли они ... Проблема все еще сохранялась. – PierreM

+0

Узнайте, какая версия требуется (по какой версии ваши кодовые ссылки), и попробуйте найти в каталоге Android SDK (может быть где-то в дополнительных/игровых сервисах) –

ответ

0

У меня была эта проблема много раз, и я нашел пару способов ее решения. Скорее всего, Службы воспроизведения, на которые ссылается ваше приложение, не соответствуют тому, что у вас на устройстве, что в данном случае является эмулятором. Это может произойти, потому что Google Play (или Google Play Services) не установлен на эмуляторе. Проверьте this SO post для получения дополнительной информации. Если он установлен, вам может потребоваться его обновить. Вы можете обновить его, установив с нуля, если встроенное обновление не работает.

Если вы используете Google Play Services в качестве проекта библиотеки, возможно, вам потребуется обновить свою библиотеку Служб Google Play.Вот что я делаю:

  • Откройте менеджер SDK и проверить, есть ли обновление до Google Play Services
  • Если есть, то скачать его
  • В затмении, удалить старый проект Play Services и импортировать новый
  • Re-добавить новый проект в качестве ссылки

Если вы не используете Google Play Services как проект библиотеки, или если у вас есть alaready обновляется, то игнорировать все сказанное выше, я:)

Как только ваше устройство/эмулятор и проект Eclipse используют ту же самую обновленную версию библиотеки Служебных услуг, тогда вам должно быть хорошо идти!

+0

Я использую Google Play Services в качестве проекта библиотеки и уже выполнил описанные здесь шаги (импортируя его и ссылаясь на него). Ошибки начались, когда я фактически обновил Службы Google Play (до версии 9). Я проверил эмулятор, и службы Google Play установлены так, как они отображаются в меню «Настройки»> «Службы» ... Я не уверен, что это связано, но если я открою магазин Google Play, появится диалог прогресса, он просто закрывается ... – PierreM

+0

Попробуйте обновить Google Play на эмуляторе – crocboy

+0

Я попробовал обновить его, просто нажав кнопку «Обновить», которая появляется вместо карты, но ничего не происходит. – PierreM

1

Единственный способ, которым я нашел запустить Google Maps Android API v2, находится на физическом устройстве.

Я запускаю свое приложение на Samsung Galaxy S Duos с Android 4.0.4, и карта отображается правильно.

После нескольких решений, включая тестирование нескольких конфигураций эмулятора и установку разных apks, я считаю, что самый простой способ преодолеть проблему «Службы Google Play - устаревшая», когда дело доходит до использования API карт Google v2 на эмуляторе, для разработки/тестирования на физическом устройстве.

Надеюсь, это поможет.

Смежные вопросы