Android HelloGoogleMaps учебное исключение - PullRequest
2 голосов
/ 27 сентября 2010

Я работаю с учебным пособием HelloGoogleMaps на странице ресурсов для разработчиков Android (http://developer.android.com/resources/tutorials/views/hello-mapview.html)), и когда я запускаю часть 1 приложения ("Создание действия на карте") в моем эмуляторе, я получаю сообщение«Приложение HelloGoogleMaps (процесс com.example) неожиданно остановилось. Пожалуйста, повторите попытку. Я уверен, что правильно выполнил все инструкции, однако я не уверен, что правильно настроил среду эмулятора. Может кто-нибудьПожалуйста, помогите мне разобраться, что происходит? Спасибо.

Вот вывод из logcat:

I/ActivityManager(   63): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example/.HelloGoogleMaps }
I/ActivityManager(   63): Start proc com.example for activity com.example/.HelloGoogleMaps: pid=344 uid=10026 gids={3003, 1015}
D/ddm-heap(  344): Got feature list request
W/dalvikvm(  344): Class resolved by unexpected DEX: Lcom/example/HelloGoogleMaps;(0x43d02e18):0x11fbb0 ref [Lcom/google/android/maps/MapActivity;] Lcom/google/android/maps/MapActivity;(0x43d02e18):0x11f510
W/dalvikvm(  344): (Lcom/example/HelloGoogleMaps; had used a different Lcom/google/android/maps/MapActivity; during pre-verification)
W/dalvikvm(  344): Unable to resolve superclass of Lcom/example/HelloGoogleMaps; (41)
W/dalvikvm(  344): Link of class 'Lcom/example/HelloGoogleMaps;' failed
D/AndroidRuntime(  344): Shutting down VM
W/dalvikvm(  344): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
E/AndroidRuntime(  344): Uncaught handler: thread main exiting due to uncaught exception
E/AndroidRuntime(  344): java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
E/AndroidRuntime(  344):     at dalvik.system.DexFile.defineClass(Native Method)
E/AndroidRuntime(  344):     at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:209)
E/AndroidRuntime(  344):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:203)
E/AndroidRuntime(  344):     at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
E/AndroidRuntime(  344):     at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
E/AndroidRuntime(  344):     at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
E/AndroidRuntime(  344):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2409)
E/AndroidRuntime(  344):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
E/AndroidRuntime(  344):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)
E/AndroidRuntime(  344):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
E/AndroidRuntime(  344):     at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(  344):     at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(  344):     at android.app.ActivityThread.main(ActivityThread.java:4363)
E/AndroidRuntime(  344):     at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(  344):     at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(  344):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
E/AndroidRuntime(  344):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
E/AndroidRuntime(  344):     at dalvik.system.NativeStart.main(Native Method)
I/Process (   63): Sending signal. PID: 344 SIG: 3
I/dalvikvm(  344): threadid=7: reacting to signal 3
E/dalvikvm(  344): Unable to open stack trace file '/data/anr/traces.txt': Permission denied
W/ActivityManager(   63): Launch timeout has expired, giving up wake lock!
W/ActivityManager(   63): Activity idle timeout for HistoryRecord{43dc9818 com.example/.HelloGoogleMaps}
D/dalvikvm(  143): GC freed 2317 objects / 132032 bytes in 107ms

Ответы [ 4 ]

2 голосов
/ 28 сентября 2010

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

  </activity>
    <uses-library android:name="com.google.android.maps" />
   <uses-permission android:name="android.permission.INTERNET" />

<activity android:name=".champ" android:label="@string/app_name"

Android: тема = "@ андроид: стиль / Theme.NoTitleBar">

1 голос
/ 14 мая 2012

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

1 голос
/ 22 июня 2011

Работает следующее (показывает карту, а не только сетку):

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="ru.studiomobile.example"
  android:versionCode="1"
  android:versionName="1.0">
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET" />
<application android:label="@string/app_name" android:icon="@drawable/icon">
    <activity android:name="HelloMapsActivity"
              android:label="@string/app_name"
              android:theme="@android:style/Theme.NoTitleBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <uses-library android:name="com.google.android.maps" />
</application>
</manifest>

Важно , где вы положили этииспользует разрешение-х.Также я подозреваю, что он начал работать после добавления ACCESS_COARSE_LOCATION.

main.xml

<?xml version="1.0" encoding="utf-8"?>
<com.google.android.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:apiKey="9AaAaaaA7AAA_9AaAAARottenAAAAkMJD8h084Q"
/>

Ключ был получен с помощью следующей двухэтапной процедуры:

step1:

$keytool -list -alias androiddebugkey -keystore ~/.android/debug.keystore -storepass android -keypass android
androiddebugkey, May 5, 2011, PrivateKeyEntry, 
Certificate fingerprint (MD5): 99:99:99:99:99:99:99:99:99:99:99:99:99:99:99:99

step2: этот 99:99 ... был передан Google на http://code.google.com/android/maps-api-signup.html, и ключ был получен.

Без этого ключа MapView показывает толькоgrid и не работает.

import android.os.Bundle;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;

public class HelloMapsActivity extends MapActivity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        MapView mapView = (MapView) findViewById(R.id.mapview);
        mapView.setBuiltInZoomControls(true);
    }

    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }
}

Но ... Мне пришлось попробовать ключ разблокировки, а затем снова ключ отладки, прежде чем он заработал.Понятия не имею, что я изменил.Возможно, хитрость заключалась в том, чтобы установить его с другим сертификатом.

Я должен добавить, что

E/MapActivity Couldn't get connection factory client

на самом деле не означает, что произошла ошибка.Карта работает и все еще печатает ее в журнале.

Журнал рабочего приложения выглядит так:

I/ActivityManager(  110): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=xx.yy.example/.HelloMapsActivity } from pid 211
I/ActivityManager(  110): Start proc xx.yy.example for activity xx.yy.example/.HelloMapsActivity: pid=21102 uid=10064 gids={3003, 1015}
V/RenderScript_jni(  211): surfaceDestroyed
D/dalvikvm(21102): GC_CONCURRENT freed 1163K, 54% free 3149K/6727K, external 1625K/2137K, paused 3ms+2ms
D/dalvikvm(21102): GC_CONCURRENT freed 532K, 51% free 3308K/6727K, external 1625K/2137K, paused 1ms+3ms
I/MapActivity(21102): Handling network change notification:CONNECTED
E/MapActivity(21102): Couldn't get connection factory client
D/dalvikvm(21102): GC_EXTERNAL_ALLOC freed 880K, 55% free 3034K/6727K, external 1993K/2137K, paused 23ms
I/ActivityManager(  110): Displayed xx.yy.example/.HelloMapsActivity: +584ms
0 голосов
/ 28 сентября 2010
Вам также потребуется настроить новый AVD, использующий ту же цель развертывания API Google

Ты это сделал?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...