Приложение неожиданно остановилось: как выполнить отладку?
Обратите внимание, что в отличие от многих других вопросов, имеющих название "приложение неожиданно остановилось", я не прошу устранить проблему, связанную с конкретной проблемой.
Скорее, я прошу обрисовать в общих чертах лучшую стратегию для новичка Android/Eclipse/Java, чтобы решить эту огромную задачу по перевариванию огромных объемов информации для разработки (и отладки!) Простого приложения для Android.
В моем случае я взял пример скелетного приложения из SDK, немного изменил его, и что я получил, когда попробовал его запустить?
Приложение (process.com.example.android.skeletonapp) неожиданно остановилось. Пожалуйста, попробуйте еще раз.
ОК, так что я знаю, что я должен смотреть LogCat. Он полон линий времени, уставившихся на меня... Что мне теперь делать? Что мне нужно искать?
Есть ли способ пошаговой программы, чтобы найти утверждение, которое приводит к сбою приложения? (Я думал, что Java-программы никогда не сбоят, но, видимо, я ошибся)
Как мне установить точку останова?
Можете ли вы порекомендовать онлайн- учебник по отладке Android, кроме этого?
5 ответов
Я новичок в Eclipse/Android, но надеюсь, что мой простой процесс отладки поможет...
Вы устанавливаете точки останова в Eclipse, щелкая правой кнопкой мыши рядом с линией, которую вы хотите разорвать, и выбирая "Toggle Breakpoint". Оттуда вы захотите выбрать "Отладка", а не стандартный "Выполнить", что позволит вам проходить и так далее. Используйте фильтры, предоставляемые LogCat (на которые есть ссылки в вашем руководстве), чтобы вы могли нацеливаться на нужные сообщения, а не пробираться по всем выводам. Это (надеюсь) поможет вам разобраться в своих ошибках.
Что касается других хороших уроков, я сам искал несколько, но пока не нашел драгоценных камней.
Отфильтруйте ваш журнал как только Ошибка и ищите ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ
Если вы используете отображение Logcat внутри перспективы "отладки" в Eclipse, строки будут иметь цветовую кодировку. Довольно легко найти причину сбоя приложения, потому что оно обычно красного цвета.
Виртуальная машина Java (или Dalvik) никогда не должна аварийно завершать работу, но если ваша программа выдает исключение и не перехватывает его, виртуальная машина прервет вашу программу, что является "аварийным завершением", которое вы видите.
Проверьте, имеет ли ваше приложение необходимые разрешения. Я также получил ту же ошибку, и я проверил журнал отладки logcat, который показал это:
04-15 13:38:25.387: E/AndroidRuntime(694): java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:555-555-5555 cmp=com.android.phone/.OutgoingCallBroadcaster } from ProcessRecord{44068640 694:rahulserver.test/10055} (pid=694, uid=10055) requires android.permission.CALL_PHONE
Затем я дал необходимое разрешение в моем Android-манифесте, который работал на меня.
- На главном экране нажмите клавишу меню.
- Элемент списка
- Нажмите Настройки.
- Нажмите Приложения.
- Нажмите Управление приложениями.
- Коснитесь Все.
- Выберите приложение, которое имеет проблемы.
- Нажмите Очистить данные и Очистить кэш, если они доступны. Это сбрасывает приложение, как если бы оно было новым, и может удалять личные данные, хранящиеся в приложении.