Google Maps V2 показывает пустой экран на Android 2.2

Я попытался следовать руководству по Краткое руководство по Android Maps V2. Я запускаю приложение, отображается пустой экран карты. Мой телефон использует Android 2.2.1.

введите здесь описание изображения

Вот что показывает в logcat:

12-07 18:07:52.479: W/dalvikvm(1654): VFY: unable to resolve instance field 24
12-07 18:07:53.129: W/dalvikvm(1654): Unable to resolve superclass of Lmaps/a/du; (411)
12-07 18:07:53.129: W/dalvikvm(1654): Link of class 'Lmaps/a/du;' failed
12-07 18:07:53.139: W/dalvikvm(1654): Unable to resolve superclass of Lmaps/a/ej; (2363)
12-07 18:07:53.139: W/dalvikvm(1654): Link of class 'Lmaps/a/ej;' failed
12-07 18:07:53.139: W/dalvikvm(1654): Unable to resolve superclass of Lmaps/j/k; (2379)
12-07 18:07:53.139: W/dalvikvm(1654): Link of class 'Lmaps/j/k;' failed
12-07 18:07:53.149: E/dalvikvm(1654): Could not find class 'maps.j.k', referenced from method maps.y.ae.a
12-07 18:07:53.149: W/dalvikvm(1654): VFY: unable to resolve new-instance 3571 (Lmaps/j/k;) in Lmaps/y/ae;
12-07 18:07:53.389: W/dalvikvm(1654): VFY: unable to resolve direct method 14965: Ljava/io/IOException;.<init> (Ljava/lang/String;Ljava/lang/Throwable;)V

Изменить: это файл manifest.xml:

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

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
    <uses-feature android:glEsVersion="0x00020000" android:required="true"/>
    <permission android:name="com.eunice.mapstry.permission.MAPS_RECEIVE"
                android:protectionLevel="signature"/>
    <uses-permission android:name="com.eunice.mapstry.permission.MAPS_RECEIVE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>


    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <uses-library android:name="com.google.android.maps" />

        <activity
            android:name="com.eunice.mapstry.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>

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIzaSyBt_JE6_XIVR8-t0HrbhskeLrAVxSJst6c"/>
    </application>

</manifest>

Изменить: я добавил изображение моей консоли API Google:

введите здесь описание изображения


person euniceadu    schedule 07.12.2012    source источник
comment
Вы добавили ключ API собственного создания?   -  person Graham Smith    schedule 09.12.2012
comment
Да. Сначала я создал его с хранилищем ключей отладки. Когда это не сработало, я создал другое хранилище ключей и создал ключ API с этим, но оно все равно не работает.   -  person euniceadu    schedule 09.12.2012
comment
Представление карты есть, поэтому единственные две вещи, которые я знаю, чтобы остановить отображение карты, - это неверный ключ или вы не добавили разрешение на доступ к Интернету в манифесте.   -  person Graham Smith    schedule 09.12.2012
comment
@GrahamSmith Я только что добавил файл manifest.xml. Я добавил все необходимые разрешения и действительный ключ API.   -  person euniceadu    schedule 10.12.2012
comment
у меня такая же проблема, но я не могу ее решить.. вы можете мне помочь?   -  person Akhil    schedule 21.12.2012
comment
@Akhil, мой был из-за того, что я использовал неправильное хранилище ключей. Вы проверили, чтобы убедиться, что используете правильное хранилище ключей.   -  person euniceadu    schedule 21.12.2012


Ответы (5)


Наконец-то я узнал, в чем проблема. Я выбирал неправильное хранилище ключей отладки. Я работаю с машиной Ubuntu. Поскольку я открыл eclipse как root, хранилище ключей по умолчанию в eclipse находилось в моей корневой папке (/root/.android/.android/debug.keystore), пока я создавал ключ API с хранилищем ключей отладки из моей пользовательской папки. Я создал новый ключ API с хранилищем ключей отладки в корневой папке, и теперь он работает.

person euniceadu    schedule 11.12.2012

убедитесь, что вы включили службу Google Maps Android API v2 в https://code.google.com/apis/console

  1. Перейдите на вкладку https://code.google.com/apis/console-> служб.
  2. Убедитесь, что Google Maps Android API v2 включен.
  3. Перейдите на вкладку «Доступ к API».
  4. Создайте снова новый ключ Android

Тогда можно идти :)

person CodeBlue    schedule 10.12.2012
comment
Я уже сделал это. Я только что отредактировал свой вопрос, включив в него изображение моей консоли Google API. - person euniceadu; 10.12.2012

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

person Mick Byrne    schedule 10.02.2013

У меня была такая же проблема, но решил ее так. Может быть полезно, если приведенный выше ответ не работает для вас. После того, как я изменил имя пакета своего приложения, карта перестала отображаться. (это произошло после того, как я изменил имя пакета)

  1. Удалите файл хранилища ключей, который вы использовали для предыдущего пакета.
  2. Создайте новый файл хранилища ключей
  3. Получить отпечаток SHA1
  4. Перейти в консоль API
  5. Создайте новое приложение для Android.
  6. Вставьте свой отпечаток пальца
  7. Используйте данный ключ API в файле манифеста.

Это сработало для меня

person Yunus Yurtturk    schedule 25.07.2013

У меня была такая же проблема, и решение состояло в том, чтобы удалить хранилище debug.keystore. Затем я сделал adb uninstall com.example.myapp Затем очистил и снова запустил приложение.

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

person HAL9000    schedule 19.07.2013