Страница 1 из 2

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

Добавлено: 24 дек 2013, 22:47
Mikhail_dev
(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. Уровень ядра

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

Добавлено: 24 дек 2013, 22:58
Foenix
Подтверждаю, вебинар будет очень интересный и содержательный. Запаситесь терпением, каким-нибудь напитком и вперед! :)

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

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

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

Добавлено: 25 дек 2013, 13:43
Foenix
Вот опять пришел и все испортил!
Андрей, где ты был, когда задавался вопрос о времени проведения вебинара? Почему мы не знаем, что у тебя корпоратив в пятницу, а? ;)

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

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

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

Добавлено: 25 дек 2013, 14:54
Foenix
Миша, ты был схожего мнения "вообще", а не насчет этой даты в частности. Решили так решили, хватит мучиться в сомнениях! Люди посмотрят запись.

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

Добавлено: 25 дек 2013, 15:19
anber
Foenix писал(а):Вот опять пришел и все испортил!
Традиции нужно поддерживать :)

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

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

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

Добавлено: 27 дек 2013, 13:50
Mikhail_dev
Добавлена ссылка для просмотра вебинара (в первый пост)

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

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

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

Добавлено: 27 дек 2013, 21:11
Mikhail_dev
Спасибо! Надеюсь уже в следующем вебинаре все настрою.

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

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

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

Добавлено: 09 янв 2014, 10:30
kllaud
Подскажите, пожалуйста, название плагина, который перебрасывает в код, при клике на ошибку.

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

Добавлено: 09 янв 2014, 11:24
adarash
LogCat ???

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

Добавлено: 09 янв 2014, 12:11
kllaud
adarash писал(а):LogCat ???
В LogCat, двойной клик по строке ошибки не перебрасывает в код.

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

Добавлено: 09 янв 2014, 12:44
adarash
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-е и она приведет тебя именно на эту строчку.

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

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

Добавлено: 09 янв 2014, 12:59
kllaud
Понял, спасибо)

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

Добавлено: 09 янв 2014, 13:27
Mikhail_dev
Стоит кликать на код с названием Вашего пакета. Можно также скачать исходники Андроида, тогда можете кликать по любой строке.

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

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

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

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