Это приложение не будет работать, если вы не обновите сервисы Google Play.

Я постоянно пытаюсь заставить работать карты Google для Android V2. Я пробую это на устройстве: Samsung Galaxy S [2.3.3] и на эмуляторах.

Мой манифест: (я пробовал использовать как ключ отладки, так и ключ выпуска)

        <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.klottr"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="18" />

    <permission 
        android:name="com.example.klottr.permission.MAPS_RECEIVE" 
        android:protectionLevel="signature"></permission>
    <uses-permission 
        android:name="com.example.klottr.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"/>

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIzaSyDqmCXjO-h-Yy_qGsyVrUz_icB9mCTUzLM"/>
        <activity
            android:name="com.example.klottr.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

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"
          tools:context=".MainActivity" >

         <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/hello_world" />
    <fragment
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.SupportMapFragment"/>

</RelativeLayout>

Java-файл основной активности:

package com.example.klottr;

import com.example.klottr.R;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

public class MainActivity extends FragmentActivity {
    GoogleMap googleMap;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_main);
 }

}

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


person user2792924    schedule 18.09.2013    source источник
comment
как у вас есть библиотека сервисов Google Play, связанная с проектом?   -  person wkhatch    schedule 19.09.2013
comment
Импортируйте существующий код Android в рабочую область (/extras/google/google_play_services/libproject/google-play-services_lib). Щелкните проект правой кнопкой мыши -> Свойства -> Android -> Добавить -> Выберите библиотеку сервисов Google Play.   -  person user2792924    schedule 19.09.2013
comment
Вы также видите банку Google Play как в частных библиотеках Android, так и в зависимостях Android? Я спрашиваю, потому что у меня в основном такая же проблема, и я это вижу. Не уверен, что это правильно или нет, но, похоже, нет никакого способа его не иметь. Кроме того, вы копируете проект в рабочую область при импорте?   -  person wkhatch    schedule 19.09.2013
comment
Скопируйте проект в рабочую область: Да На самом деле в частных библиотеках Android: google-play-services.jar (находится в ../google-play-services_lib/libs В зависимостях Android: google-play-services_lib.jar (находится в ../google-play -services_lib/bin   -  person user2792924    schedule 19.09.2013
comment
как насчет заказа и экспорта? И, чтобы было ясно, вы не видите банку в зависимостях Adnroid, только частные библиотеки Android, верно? Подожди, неважно, просто перечитай свой комментарий, да. Прости   -  person wkhatch    schedule 19.09.2013
comment
На вкладке «Заказ и экспорт» проверяются как зависимости Android, так и частные библиотеки Android. Это может быть проблемой, так как кажется, что это 2 разные банки?   -  person user2792924    schedule 19.09.2013
comment
Я не уверен, честно. Я не могу запустить свой из eclipse, хотя кажется, что он работает нормально. Но когда я пытаюсь запустить его, я получаю ужасную ошибку Out of Memory... can convert to Dalvyk..., и я думаю, что это наиболее вероятный кандидат, поскольку я не вижу никаких других проблем с путями сборки. Чтобы обойти затмение, я создал ant, а затем столкнулся с той же проблемой, что и вы. Надеюсь, мы сможем это понять   -  person wkhatch    schedule 19.09.2013


Ответы (3)


Google обновил библиотеку google_play_service, но не приложение Play Services в google play. Поэтому я предлагаю вам загрузить "сервисы Google Play для Froyo" в Android SDK Manager и подключить его к проекту вместо текущего.

person Alex    schedule 03.11.2013

Возможная проблема 1: READ_GSERVICES отсутствует в манифесте

<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />

Ссылка: http://t1685.codeinpro.us/q/51502052e8432c04261af736

Возможная проблема 2: это может быть просто пространство имен моего приложения, но по сравнению с ним может быть что-то, что следует учитывать

<permission android:name="com.fooapp.**androidmapsv2**.permission.MAPS_RECEIVE" android:protectionLevel="signature"></permission>
<uses-permission android:name="com.fooapp.**androidmapsv2**.permission.MAPS_RECEIVE" />
person ClintL    schedule 18.09.2013
comment
Имейте оба в моем. Я должен отметить, что мой проект работал отлично до недавнего обновления до 22.2 в диспетчере SDK. С тех пор все пошло на двойные хоккейные клюшки ;-) - person wkhatch; 19.09.2013
comment
Хм. Я не видел разрешения GS Service. Моя ошибка. - person ClintL; 19.09.2013
comment
О, не беспокойтесь вообще; Большое спасибо за ответ. Любые попытки решения приветствуются. - person wkhatch; 19.09.2013
comment
Я только что заработал, но с моего ноутбука. На моем ноутбуке раньше показывалась пустая карта с кнопками, не мог получить доступ к службам Google, похоже, eclipse не обновлял правильный путь для apikey/fingerprint, пока я не построил проект вручную. Я до сих пор не знаю, почему это не сработало с моим кодом выше. - person user2792924; 19.09.2013
comment
Извините, я не могу добавить комментарий к вашему фактическому решению (отсутствие репутации), но если эмулятор не имеет API Google - API # установлен в качестве цели, а не только API #, это может вызвать эту проблему. - person ClintL; 19.09.2013

Я только что заработал на своем ноутбуке. Однако проблема на моем ноутбуке заключалась только в сбое авторизации. Похоже, что мое затмение на другом компьютере прослушивалось или что-то в этом роде. Код в рабочем проекте практически такой же, за исключением следующих моментов:

В манифесте в рабочем проекте есть такие строки:

<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="17" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

В MainActivity.java:

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

    /*Test*/
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

И единственное, что есть в моем макете xml:

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/map"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:name="com.google.android.gms.maps.SupportMapFragment"/>

До сих пор не знаю, почему это не сработало из моего предыдущего кода. Примечание. Карта по-прежнему пуста в эмуляторе, но отлично работает на устройстве Samsung Galaxy S 2.3.3.

person user2792924    schedule 19.09.2013