Вебинар 6. Аптечка хорошего разработчика. DDMS. Часть 1

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Вебинар 6. Аптечка хорошего разработчика. DDMS. Часть 1

Сообщение Mikhail_dev » 24 дек 2013, 22:47

(edit) Вебинар успешно закончился.
Ссылка на вебинар - http://www.youtube.com/watch?v=BZNPmf-2 ... ture=share
Статья на хабре для углубленного изучения DDMS - http://habrahabr.ru/post/222199/

1. Что такое DDMS?
Это специальный инструмент, который позволит вашему приложению быть более отзывчивым для пользователя.

2. Каким образом?
Вы сможете с помощью него:
- находить информацию об ошибках (Logcat);
- эмулировать звонки/смс/местоположение;
- находить проблемные участки кода, которые долго работают и требуют оптимизации (профайлинг методов);
- работа с файловой системой эмулятора или устройства;
- изучение информации потоков;
- находить утечки памяти;
- использовать инструмент Network traffic;
- анализировать heap (куча), на количество свободной и занятой памяти, анализировать какие объекты чаще создаются, их размер и многое другое.

3. Для кого вебинар?
Вебинар для всех, кто хочет писать хорошие, отзывчивые приложения для пользователей. Тем, кто придет на вебинар не только для того, чтобы послушать про Logcat или имитацию местоположений, тем желательно иметь представление о таких вещах как heap, понимать что такое потоки и их отличие от процессов, знать что такое GC и представлять методы его работы.
Данный вебинар поделен на две части, вторая из которых пройдет уже в новом году. В пятницу пройдет только первая его часть.
Итак, что же будет в пятницу:
- logcat;
- файловый менеджер;
- бегло затронем имитацию вызовов, смс и местоположения;
- анализ потоков;
- просмотр использования кучи(heap) процесса;
- мониторинг создания новых объектов, их размер, тип и связь с потомками приложения.

Данная часть будет показана в среде Eclipse на одном из примеров с использованием эмулятора. Те, кто не знает что такое logcat, тем категоричeски обязательно быть!
Хочешь знать ошибки ответ? Загляни в logcat! (с)
Изображение

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

Материалы, которые можно было бы почитать:
Использование DDMS - перевод оригинальной статьи с android.developer.com пользователем =bor=
Отладка производительности приложений для Android*
Тем, кому интересно почитать про файловую систему более подробно
Основы безопасности операционной системы Android. Уровень ядра
Вложения
DDMSExample_2.rar
(1.26 МБ) 542 скачивания
DDMSExample_1.rar
(1.37 МБ) 530 скачиваний
Последний раз редактировалось Mikhail_dev 07 авг 2014, 10:49, всего редактировалось 7 раз.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Вебинар 6. Аптечка хорошего разработчика. DDMS

Сообщение Foenix » 24 дек 2013, 22:58

Подтверждаю, вебинар будет очень интересный и содержательный. Запаситесь терпением, каким-нибудь напитком и вперед! :)
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
anber
Сообщения: 584
Зарегистрирован: 10 июн 2013, 15:05
Откуда: UA

Re: Вебинар 6. Аптечка хорошего разработчика. DDMS

Сообщение anber » 25 дек 2013, 12:45

m090050 писал(а):4. И наконец-то, когда?
Последняя пятница в этом году, 27 декабря в 20.00 по Мск.
Проводить вебинар вечером в последнюю пятницу года, когда у всех вменяемых людей новогодний корпоратив? Окай...
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Вебинар 6. Аптечка хорошего разработчика. DDMS

Сообщение Foenix » 25 дек 2013, 13:43

Вот опять пришел и все испортил!
Андрей, где ты был, когда задавался вопрос о времени проведения вебинара? Почему мы не знаем, что у тебя корпоратив в пятницу, а? ;)
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Вебинар 6. Аптечка хорошего разработчика. DDMS

Сообщение Mikhail_dev » 25 дек 2013, 14:47

anber писал(а):
m090050 писал(а):4. И наконец-то, когда?
Последняя пятница в этом году, 27 декабря в 20.00 по Мск.
Проводить вебинар вечером в последнюю пятницу года, когда у всех вменяемых людей новогодний корпоратив? Окай...
Я был схожего мнения, но меня сломали в моих убеждениях :|

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Вебинар 6. Аптечка хорошего разработчика. DDMS

Сообщение Foenix » 25 дек 2013, 14:54

Миша, ты был схожего мнения "вообще", а не насчет этой даты в частности. Решили так решили, хватит мучиться в сомнениях! Люди посмотрят запись.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
anber
Сообщения: 584
Зарегистрирован: 10 июн 2013, 15:05
Откуда: UA

Re: Вебинар 6. Аптечка хорошего разработчика. DDMS

Сообщение anber » 25 дек 2013, 15:19

Foenix писал(а):Вот опять пришел и все испортил!
Традиции нужно поддерживать :)
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Вебинар 6. Аптечка хорошего разработчика. DDMS. Часть 1

Сообщение Mikhail_dev » 25 дек 2013, 22:18

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

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Вебинар 6. Аптечка хорошего разработчика. DDMS. Часть 1

Сообщение Mikhail_dev » 27 дек 2013, 13:50

Добавлена ссылка для просмотра вебинара (в первый пост)

rockband1992
Сообщения: 7
Зарегистрирован: 11 дек 2013, 00:01

Re: Вебинар 6. Аптечка хорошего разработчика. DDMS. Часть 1

Сообщение rockband1992 » 27 дек 2013, 20:42

http://www.genymotion.com/ Михаил, вот ссылка на нормальную альтернативу стандартному емулятору.

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Вебинар 6. Аптечка хорошего разработчика. DDMS. Часть 1

Сообщение Mikhail_dev » 27 дек 2013, 21:11

Спасибо! Надеюсь уже в следующем вебинаре все настрою.

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Вебинар 6. Аптечка хорошего разработчика. DDMS. Часть 1

Сообщение Mikhail_dev » 28 дек 2013, 10:03

Приложил исходные коды того, что было показано в вебинаре. С утра, на свежую голову, нашел ошибку в коде, но все поправил. Хотелось бы услышать мнения по поводу прошедшего вебинара, пожелания, критику.
Добавил несколько ссылок для чтения. Рекомендую почитать первую и вторую ссылку, особенно вторую, для того чтобы материал немного уложился в голове. Это будет как повторение вчерашнего.

Аватара пользователя
kllaud
Сообщения: 7
Зарегистрирован: 01 дек 2013, 12:23

Re: Вебинар 6. Аптечка хорошего разработчика. DDMS. Часть 1

Сообщение kllaud » 09 янв 2014, 10:30

Подскажите, пожалуйста, название плагина, который перебрасывает в код, при клике на ошибку.


Аватара пользователя
kllaud
Сообщения: 7
Зарегистрирован: 01 дек 2013, 12:23

Re: Вебинар 6. Аптечка хорошего разработчика. DDMS. Часть 1

Сообщение kllaud » 09 янв 2014, 12:11

adarash писал(а):LogCat ???
В LogCat, двойной клик по строке ошибки не перебрасывает в код.

Аватара пользователя
adarash
Сообщения: 333
Зарегистрирован: 17 июл 2013, 09:59

Re: Вебинар 6. Аптечка хорошего разработчика. DDMS. Часть 1

Сообщение adarash » 09 янв 2014, 12:44

kllaud писал(а):
adarash писал(а):LogCat ???
В LogCat, двойной клик по строке ошибки не перебрасывает в код.
Смотря на какую строчку кликать. К примеру.
лог ошибки:

Код: Выделить всё

01-09 11:36:55.234: E/AndroidRuntime(9768): FATAL EXCEPTION: main
01-09 11:36:55.234: E/AndroidRuntime(9768): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.example/com.example.example.MainActivity}: java.lang.ArrayIndexOutOfBoundsException: length=12; 
01-09 11:36:55.234: E/AndroidRuntime(9768): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2313)
01-09 11:36:55.234: E/AndroidRuntime(9768): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2365)
01-09 11:36:55.234: E/AndroidRuntime(9768): 	at android.app.ActivityThread.access$600(ActivityThread.java:156)
01-09 11:36:55.234: E/AndroidRuntime(9768): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
01-09 11:36:55.234: E/AndroidRuntime(9768): 	at android.os.Handler.dispatchMessage(Handler.java:99)
01-09 11:36:55.234: E/AndroidRuntime(9768): 	at android.os.Looper.loop(Looper.java:153)
01-09 11:36:55.234: E/AndroidRuntime(9768): 	at android.app.ActivityThread.main(ActivityThread.java:5336)
01-09 11:36:55.234: E/AndroidRuntime(9768): 	at java.lang.reflect.Method.invokeNative(Native Method)
01-09 11:36:55.234: E/AndroidRuntime(9768): 	at java.lang.reflect.Method.invoke(Method.java:511)
01-09 11:36:55.234: E/AndroidRuntime(9768): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
01-09 11:36:55.234: E/AndroidRuntime(9768): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
01-09 11:36:55.234: E/AndroidRuntime(9768): 	at dalvik.system.NativeStart.main(Native Method)
01-09 11:36:55.234: E/AndroidRuntime(9768): Caused by: java.lang.ArrayIndexOutOfBoundsException: length=12; index=14
01-09 11:36:55.234: E/AndroidRuntime(9768): 	at com.example.example.MainActivity.onCreate(MainActivity.java:15)
01-09 11:36:55.234: E/AndroidRuntime(9768): 	at android.app.Activity.performCreate(Activity.java:5122)
01-09 11:36:55.234: E/AndroidRuntime(9768): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)
01-09 11:36:55.234: E/AndroidRuntime(9768): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2277)
Ты на какую тыкать будешь ??? на первую???
Объясняю. Строка "at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2313)", если ты на нее нажмешь, куда она тебя приведет? у тебя же нет этого кода.
За то есть другой.
в почти самом конце строка "at com.example.example.MainActivity.onCreate(MainActivity.java:15)" это же прямая ссылка на код в проекте и все ясно, что у тебя в проекте в pakege "com.example.example" в классе "MainActivity" в методе "onCreate" случилась ошибка. В строке 15. Тыкни на эту строчку в LogCat-е и она приведет тебя именно на эту строчку.

Замечу, что есть такие ошибки, которые не указывают точную причинную строку, тогда надо искать логически и не один плагин за тебя не найдет эту строку.
Надеюсь, что суть донес.

Аватара пользователя
kllaud
Сообщения: 7
Зарегистрирован: 01 дек 2013, 12:23

Re: Вебинар 6. Аптечка хорошего разработчика. DDMS. Часть 1

Сообщение kllaud » 09 янв 2014, 12:59

Понял, спасибо)

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Вебинар 6. Аптечка хорошего разработчика. DDMS. Часть 1

Сообщение Mikhail_dev » 09 янв 2014, 13:27

Стоит кликать на код с названием Вашего пакета. Можно также скачать исходники Андроида, тогда можете кликать по любой строке.

vadim_k
Сообщения: 1
Зарегистрирован: 28 янв 2014, 20:19

Re: Вебинар 6. Аптечка хорошего разработчика. DDMS. Часть 1

Сообщение vadim_k » 28 янв 2014, 20:39

В Intellij IDEA, и, в частности, в Android Studio, действительно используется DDMS как внешнее приложение в отдельном окне. Но у них есть встроенный DDMS, там не все , только LogCat и еще кое-что, чего в большинстве случаев достаточно.
Изображение

EspanaMia
Сообщения: 24
Зарегистрирован: 10 янв 2014, 11:03

Re: Вебинар 6. Аптечка хорошего разработчика. DDMS. Часть 1

Сообщение EspanaMia » 09 фев 2014, 14:28

Спасибо за вебинар, как раз сейчас занимаюсь оптимизацией памяти, как Вы сказали Heap - это сколько выделено и используется динамической памяти, тут всё понятно, но если посмотреть на устройстве в запущенных процессах сколько приложение потребляет памяти, то там цифра совершенно другая, в моём приложении в разы больше, что её занимает ? и как это можно отследить?

Ответить