Что такое дамп системы андроид

Как снять дамп разделов system, kernel, data, zImage на Андроид

вкл. 30 Март 2015 . Опубликовано в Android — Общее

Как снять дамп разделов system, kernel, data, zImage на Андроид. Многие начинающие ромоделы Android или гики не знают как снять образ с Android. В данной статье подробно рассказано как узнать нужные вам /dev/block , как снять дампы с них, разобрать их или в последствие восстановиться.

Для тех кто не много не понял о чем речь. В данной статье будет подробно рассказано как снять текущее состояние с разделов Android — system, data, efs, preload, cache или выдрать ядро (zImage / boot.img). С какой целью расписываться здесь не будет , так как это уже другая история.

Необходимо для снятия образа

1. Скачайте и установите на ПК фирменную программу сайта ADB RUN (если в курсе, что такое adb или установлено Android SDK, то устанавливать не нужно)

2. Android смартфон или планшет должен быть c Root правами

Подробно о Root Android:

4. Установить драйвера если вдруг не установлены

5. MicroUSB кабель

Инструкция как снять образ с Андроид

1. Подключите устройство Android к ПК

2. Запустите программу ADB RUN и перейдите в меню (7) Manual Command > (1) Adb

Узнаем /dev/block разделов

Что такое /dev/block/? /dev/block/ — это «диски» на которых находятся разделы system, data, cache

Вариант 1

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

Для того чтобы узнать /dev/block/ вводим команду

Получаем список где видим список с нашими разделами и к каким /dev/block/ они примонтированы

Вариант 2

Данный способ более сложный, но за то вы точно будете знать абсолютно все ваши разделы!

Вначале лучше воспользоваться файловым менеджером Android с Root доступом например как:

После того как установили перейдите по пути

Далее вам нужно найти папку by-name, она находиться в одной из под папок в platform

Например для некоторых устройств Samsung это выглядит так:

Для устройств на Tegra 3:

Для устройств на Omap:

Для некоторых Mediatek:

Для некоторых устройств Sony:

После того как выяснили где находиться папка by-name в программу ADB RUN набираем команду

где xxxxxxxx — точный путь до папки by-name

[Обновление]

В новых версиях программы ADB RUN (с версии 3.4x.xx) узнать все разделы стало гораздо проще! Все что вам необходимо это:

  • запустить ADB RUN
  • Перейти в раздел Memory and Partitions -> Partitions /dev/block/
  • Попробовать один из методов узнать ваши блоки

Снятие образа Android с выбранного раздела

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

1. Для того чтобы снять образ необходимо в ADB RUN зайти в меню (7) Manual Command > (1) Adb

2. Залогиниться в терминале под Root -ом

3. Набрать команду для снятия дампа

где XXXXXXXXX — раздел с которого вы снимаете

где NAME_razdel.img — имя которое вы присвоите при снятие образа с выборного раздела (давать имена лучше также как они указаны, если data то data)

Процедура снятия может занять определенное время, от 1 минуты до 15, в это время лучше не дергать ваш Android!

[Обновление]

В новых версиях ADB RUN появилась возможность быстро снять образ каждый раз не набирая столь длинные команды. Все что вам нужно это знать имя блока.

Читайте также:  Смартфон 5 дюймов с мощным аккумулятором андроид

Когда вы уже знаете необходимый блок перейдите в ADB RUN:

  • С главного меню в раздел Backup -> Backup dev/block
  • Выбираем Backup
  • Указываем последние данные с блока (данные после block/)
  • Ждем пока снимется образ (не трогать Android)

Восстановление раздела из созданного образа Android (дампа раздела)

Когда вам будет необходимо выполнить восстановление из ранее созданного образа, нужно сделать вот, что:

Убедитесь что образ все еще находиться в разделе /sdcard — так как бекап создавался именно в этот раздел, либо переместите его обратно.

Прописать следующую команду:

где XXXXXXXXX — раздел на которой вы заливаете образ

где NAME_razdel.img — имя образа выборного раздела (давать имена лучше также как они указаны, если data то data)

Процедура восстановления может занять определенное время, от 1 минуты до 15, в это время лучше не дергать ваш Android!

[Обновление]

Для устройств Sony, HTC, Xiaomi и других устройств на которых есть режим Fastboot

могут выполнить восстановление следующим образом после ранее обязательного снятия boot.img (zImage) и system.img (factoryfs.img) обязательно скопируйте данные файлы на ПК:

1. Переведите Android в режим fastboot (bootloader) и подключить к ПК

2. Файлы boot.img и system.img переместить в папку C:/adb/progbin

3. Запустить ADB RUN и перейти в пункт Manual -> ADB

4. Набрать следующие команды (подробно о Fastboot)

Система будет восстановлена в исходное состояние! Можете продолжать эксперименты!

Источник

Анализ памяти для Android приложений

В Dalvik есть сборщик мусора, но это не значит, что можно игнорировать управление памятью. Даже наоборот — нужно быть особенно внимательным при использовании памяти, которая, как известно, на мобильных устройствах ограничена. В этой статье будут рассмотрены инструменты, которые значительно помогают следить за тем, как приложение использует память.

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

Инструменты

Android SDK обеспечивает два основных устройства для профилирования использования памяти приложением: вкладка Allocation Tracker в DDMS и дампы кучи (heap dumps). Allocation Tracker может быть полезен в том случае, когда вы хотите узнать об использовании памяти в конкретный период времени, так как он не дает информации о полном состояния кучи, которая выделяется под приложение. За более подробной информацией об Allocation Tracker можно обратиться к статье Tracking Memory Allocations. Остальная часть этой статьи будет посвящена исследования дампов кучи, так как это более мощный инструмент.

Дамп кучи — это снимок состояния всей кучи приложения, который хранится в бинарном файле, формата HPROF. Dalvik использует формат, который похож на тот, который используется инструментом HPROF в Java, но не является точно таким же.

Есть несколько способов создать дамп кучи выполняющегося Android приложения. Первый — использовать кнопку Dump HPROF file в DDMS. Если вам нужно выбрать момент создания дампа более точно, то можно создать его программно, при помощи метода android.os.Debug.dumpHprofData().

Для анализа можно использовать стандартный инструмент jhat или Eclipse Memory Analyzer (MAT). Однако, сначала нужно конвертировать .hprof файл из Dalvik формата в J2SE HPROF формат. Для этого используется утилита hprof-conv, которая поставляется с Android SDK:

Пример: Отладка утечки памяти

В Dalvik программист не размещает что-либо явно в свободную память, поэтому могут возникать утечки, как в языках C и C++. Под «утечкой памяти» обычно понимают ситуацию, при которой вы продолжаете ссылаться на объект, который больше не нужен. Иногда, одна единственная ссылка может предотвратить вызов сборщика мусора для удаления большого набора объектов.

Давайте рассмотрим приложение Honeycomb Gallery sample app из Android SDK. Это простая фотогалерея, которая демонстрирует использование неких методов нового API в Honeycomb. Сейчас мы преднамеренно создадим утечку памяти, чтобы затем продемонстрировать метод отладки.

Представим себе, что мы хотим, чтобы приложение получало изображения по сети. Чтобы сделать его более отзывчивым к пользователю, возможно, стоит реализовать кэш для хранения недавно просмотренных изображений. Мы можем это сделать, внеся некоторые изменения в ContentFragment.java. В начале класса объявим и инициализируем новую переменную:

Читайте также:  Нид фор спид для андроид взломанная

В этом отображении мы будем кэшировать загруженные Bitmap’ы. Теперь можно изменить метод updateContentAndRecycleBitmap() для проверки кэша перед загрузкой и добавления Bitmap’ов в кэш после загрузки:

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

Исследование кучи с помощью DDMS

Dalvik Debug Monitor Server (DDMS) — это один из главных инструментов для отладки в Android. Он является частью плагина ADT к среде разработки Eclipse, его также можно найти в папке tools/ вашего Android SDK. Для более подробной информации можно прочесть Using DDMS.

Давайте используем DDMS для анализа использования кучи нашим приложением. Вы можете запустить DDMS двумя способами:

  • Из Eclipse: Window -> Open Perspective -> Other… > DDMS
  • Из командной строки: запустите ddms (или ./ddms на Mac/Linux) в папке tools/

Выберите процесс com.example.android.hcgallery в левой панели и кликните на кнопку Show heap updates на панели инструментов. Затем переключитесь на вкладку VM Heap в DDMS. Вы увидите некоторую базовую информацию об использовании кучи, которая будет обновляться при каждом вызове сборщика мусора. Чтобы увидеть первое обновление, кликните на кнопку Cause GC.

Можно заметить, что «живые» объекты занимают в памяти чуть меньше 8Мб (см. на колонку Allocated ). Теперь пролистаем фотографии, и можно будет увидеть, как это число увеличивается. Так как в приложении всего 13 фотографий, то утечка памяти ограничена. В некотором смысле, это наихудший случай, который может получиться, поэтому здесь никогда не будет OutOfMemoryError.

Создание дампа кучи

Кликните по кнопке Dump HPROF file в панели инструментов DDMS, выберите место сохранения файла, и сконвертируйте его, используя утилиту hprof-conv. В этом примере, мы будем использовать отдельную версию MAT (1.0.1), её можно скачать здесь.

Если вы используете Eclipse, с установленным MAT, то после нажатия на кнопку «dump HPROF», файл автоматически конвертируется и откроется в окне Ecilpse.

Анализ дампа кучи при помощи MAT

Запустите MAT и загрузите HPROF-файл, который был только что создан. MAT — мощная утилита, и разъяснение всех её особенностей вне этого топика, поэтому я объясню только один из методов как можно определить утечку — при помощи вида «Гистограмма» (Histogram view). В этом виде можно увидеть список классов, отсортированных по числу экземпляров, shallow heap (общий размер памяти, занимаемый экземплярами), или retained heap (общая память, занимаемая экземплярами и объектами, на которые они ссылаются).

Если отсортировать по shallow heap, то можно увидеть, что вверху окажется число экземпляров byte[]. В Android 3.0 Bitmap’ы представляются в виде массивов из байтов, размер которых зависит от размера Bitmap’a. То есть понятно, что они представляют память, которая занимается нашими Bitmap’ами. Щелкните правой кнопкой на классе byte[] и выберите List Objects > with incoming references. Вы увидите список всех массивов из байтов, размещенных в куче.

Выберите один из больших объектов и раскройте его. В итоге вы увидите всю цепочку ссылок, которая образуется из-за этого объекта. Вот он — наш кэш для Bitmap’ов!

MAT не может дать точную информацию является ли это утечкой, так как он не знает, нужны ли эти объекты. Ответ знает только программист. В нашем случае, кэш очень большой, сравнительно со всем приложением, поэтому логично было бы ограничить его размер.

Сравнение дампов кучи с помощью MAT

При отладке утечек памяти, бывает полезно сравнить состояние кучи в разные моменты времени. Чтобы сделать это, создайте два HPROF файла (не забывайте их конвертировать утилитой hprof-conv).

Вот как вы можете сравнить эти два файла:

  1. Откройте первый файл (File > Open Heap Dump).
  2. Откройте гистограммный вид.
  3. В виде истории навигации (Window > Navigation History), щелкните правой кнопкой на histogram и выберите Add to Compare Basket.
  4. Откройте второй файл и повторите шаги 2 и 3.
  5. Переключитесь в вид Compare Basket, и кликните Compare the Results (красная иконка восклицательного знака в правом верхнем углу)

Источник

Снять образ с Android (снять дамп разделов system, kernel, data, zImage)

Многие начинающие ромоделы Android или гики не знают как снять образ с Android. В данной статье подробно рассказано как узнать нужные вам /dev/block, как снять дампы с них, разобрать их или в последствие восстановиться.

Читайте также:  Org zloy android downloader

Для тех кто ничего не понял о чем речь. В данной статье будет подробно рассказано как снять текущее состояние с разделов Android — system, data, efs, preload, cache или выдрать ядро (zImage / boot.img). С какой целью расписываться здесь не будет, так как это уже другая история.

Необходимо для снятия образа

  1. Скачайте и установите на ПК фирменную программу сайта ADB RUN (если в курсе, что такое adb или установлено Android SDK, то устанавливать не нужно);
  2. Android смартфон или планшет должен быть c Root правами Подробно о Root Android:
    • Что такое Root?
    • Как получить Root?
  3. Активировать Отладка по USB;
  4. Установить драйвера если вдруг не установлены;
  5. USB кабель.

Инструкция как снять образ с Android

  1. Подключите устройство Android к ПК
  2. Запустите программу ADB RUN и перейдите в меню (a) Adb

Узнаем /dev/block разделов

Что такое /dev/block/? /dev/block/ — это «диски» на которых находятся разделы system, data, cache.

Вариант 1

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

Для того чтобы узнать /dev/block/ вводим команду:

adb shell mount

Получаем список, где видим список с нашими разделами и к каким /dev/block/ они примонтированы

Вариант 2

Подключаем Android к компьютеру в adb вводим:

Получаем весь список блоков.

Снятие образа Android с выбранного раздела

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

  1. Для того чтобы снять образ необходимо в ADB RUN зайти в меню (7) Manual Command > (1) Adb
  2. Залогиниться в терминале под Root -ом:

3. Набрать linux команду для снятия дампа:

dd if=/dev/block/XXXXX of=/sdcard/NAME_razdel.img

  • где XXXXXXXXX— раздел с которого вы снимаете
  • где NAME_razdel.img — имя которое вы присвоите при снятии образа с выборного раздела (давать имена лучше также как они указаны, если data то data)

Процедура снятия может занять определенное время, от 1 минуты до 15, в это время лучше не дергать ваш Android!

[Обновление]

В новых версиях ADB RUN появилась возможность быстро снять образ каждый раз не набирая столь длинные команды. Все что вам нужно это знать имя блока.

Когда вы уже знаете необходимый блок, перейдите в ADB RUN:

  • С главного меню в раздел Backup -> Backup dev/block
  • Выбираем Backup
  • Указываем последние данные с блока (данные после block/)
  • Ждем пока снимется образ (не трогать Android)

Восстановление раздела из созданного образа Android (дампа раздела)

Когда вам будет необходимо выполнить восстановление из ранее созданного образа, нужно сделать вот, что:

Убедитесь что образ все еще находиться в разделе /sdcard — так как бекап создавался именно в этот раздел, либо переместите его обратно.

Прописать следующую команду:

dd if=/sdcard/NAME_razdel.img of=/dev/block/XXXX

  • где XXXXXXXXX— раздел на которой вы заливаете образ
  • где NAME_razdel.img — имя образа выборного раздела (давать имена лучше также как они указаны, если data то data)

Процедура восстановления может занять определенное время, от 1 минуты до 30 в это время лучше не дергать ваш Android!

[Обновление]

Особенно актуально для тех кто не удачно выполнил S-OFF (или планирует выполнить) или неудачно прошил кастомную прошивку, либо после не удачных экспериментов!

Для устройств Sony, HTC, Xiaomi и других устройств на которых есть режим Fastboot могут выполнить восстановление следующим образом после ранее обязательного снятия boot.img (zImage) и system.img (factoryfs.img) скопируйте данные образы на ПК:

  1. Переведите Android в режим fastboot (bootloader) и подключить к ПК;
  2. Файлы boot.img и system.img переместить в папку C:/adb_run/bin;
  3. Запустить ADB RUN и перейти в пункт (a) ADB;
  4. Набрать следующие команды (подробно о Fastboot):

fastboot flash boot boot.img

fastboot flash system system.img

Система будет восстановлена в исходное состояние! Можете продолжать эксперименты!

На этом все! Подписывайтесь и Оставайтесь с сайтом Android +1! Удачи!

Источник

Оцените статью