Dalvik art cache что это

ART vs Dalvik — так в чем же разница?

Dalvik art cache что это
04 Янв 7 Просмотров 97963 Главное

В новой версии Android появилось одно важное, хотя и не очень заметное, на первый взгляд, нововведение — появилась новая виртуальная машина ART.

О том, что такое ART, виртуальная машина и почему она новая, рассказывается в англоязычном блоге Атиф Хана (Aatif Khan), запись из которого мы и решили перевести для вас.

 Отдельную благодарность за помощь выражаем Анжелу Божинову.

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

Разработчики редко радуют нас подробными описаниями нововведений и новых технологий, а найти какое-то понятное объяснение на официальном сайте удается крайне редко — в лучшем случае, пользователь обнаружит лишь краткое описание с еще большим количеством непонятных выражений.

Мы всегда стараемся помочь пользователям разобраться в новых устройствах и технологиях, поэтому было принято решение рассказать вам, нашим читателям, о технологии ART более подробно,а также провести ее небольшое сравнение с привычной виртуальной машиной Dalvik.

Что такое среда выполнения приложений (виртуальная машина)?

Обсуждение Dalvik и ART невозможно без понимания азов, поэтому сначала поговорим о виртуальной машине как таковой. Среда выполнения приложений — это набор инструкций, выполняемых для перевода кода приложения в код, понятный компьютеру.

Виртуальная машина задействуется, даже не являясь частью основной программы.

В целом, все «управляемые» компьютерные языки (Java в Android, С# в Windows Phone, ECMAScript в браузерах) требуют такую среду для понимания языка, на котором написано приложение.

Android использует виртуальную машину для выполнения DEX-файлов (аналог EXE в Windows), которые содержатся в APK-архиве Android-приложения. Существует сразу два преимущества такого решения.

Во-первых, каждое приложение выполняется в системе, изолированной от ядра ОС, так что последнее чувствует себя более-менее в безопасности.

Во-вторых, использование виртуальной машины открывает дорогу кросс-платформенным приложениями, то есть приложение может работать на ARM-смартфоне, MIPS-планшете или x86-компьютере.

Как известно, все это время в Android использовалась виртуальная машина Dalvik, с которой наверняка встречался каждый, кто хоть немного вникал в особенности ОС.

Зачем вообще использовать среду выполнения приложений?

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

  • Виртуальная машина выполняет код стороннего приложения в изолированной среде. Следовательно, код, который может навредить ядру ОС, не сможет на прямую взаимодействовать с системными файлами, что защитит систему. Огромный плюс использования виртуальной машины — это более стабильная и надежная работа основной системы.
  • Через Google Play Store и другие источники разработчик распространяет APK-файл своей программы, который содержит нескомпилированные инструкции, которые перед выполнением «соберет» уже виртуальная машина. Такое решение обеспечивает большую совместимость; в противном случае, код, скомпилированный для устройств на базе Snapdragon, не сможет работать на Atom-аппаратах. Следовательно, виртуальная машина решает проблему с адресатом компиляции.

Что же такое Dalvik и в чем его проблема?

Вот и главный вопрос. Dalvik используется в Android с первой версии ОС, с 2007 года, а серьезное изменение за все это время было практически одно — появление в Froyo «компиляции на ходу», более известной как JIT.

ее особенность — приложение полностью компилируется при открытии или запуске пользователем соответствующих инструкций. Это очень полезное исправление, так как до 2.

2 все приложения компилировались шаг за шагом, что уменьшало скорость работы; единственный минус такого решения — при старте программы на процессор идет серьезная нагрузка.

Во избежание дополнительной работы при повторном запуске программы, система собирает вместе все скомпилированные за время использования приложения инструкции и отправляет их в кэш, который хранится в файловой системе с расширением *.ODEX (Optimized Dalvik EXecutable).

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

Если в этот момент система проводит стороннюю работу (например, прослушивание музыки или обновление приложений), то из-за перегрузки процессора и подсистем ввода/вывода у памяти можно пронаблюдать ощутимые рывки и тормоза. Вот тут и появляется ART.

Что такое ART и как он спасет мир?

ART, или Android RunTime (весьма кривое название) — это новая виртуальная машина, которую представила Google в Android 4.4, как один из инструментов разработчика (по умолчанию используется Dalvik).

Главное отличие новой среды выполнения приложений — использование технология Ahead-Of-Time (AOT, «впереди времени»). ART компилирует все инструкции приложения еще до его запуска, в процессе установки.

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

Впрочем, желательно иметь большее количество оперативной памяти, так как ART загрузит в неё даже те инструкции приложения, которыми вы можете никогда и не воспользоваться.

Dalvik vs. ART

Давайте кратко сравним две виртуальные машины

ART пока эксперимент

Безусловно, в данный момент ART лишь тестируется и доступен только для устройств на версии Android 4.4 и чипсетах от Qualcomm.

Однако вы можете уже сейчас переключиться с Dalvik на ART через скрытые инструменты разработчиков (меню открывается после нескольких тапов по номеру сборки в информации об устройстве).

Заметим, что не все приложения смогут работать в ART без дополнительных обновлений; кстати, первый запуск в режиме ART может занять до 30 минут.

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

Отзывы о новой технологии смешанные. Пользователи флагманов с четырехъядерными процессорами и 2 Гб оперативной памяти могут по-настоящему оценить прирост скорости при переключении на ART. Некоторые отмечают 50% прирост в скорости устройства и 30% — в автономности; другие утверждают, что это лишь эффект плацебо.

По правде сказать, нельзя точно оценить влияние ART до выхода виртуальной машины из стадии тестирования и попадания в массы, поэтому споры о пользе и вреде новой технологии пока лучше отложить. Сейчас ясно лишь одно: за ART будущее.

Google хочет использовать технологию AOT для борьбы с основным противником — iOS, и ART может серьезно улучшить Android. Неважно, насколько глупо называется виртуальная машина и как много приложений несовместимо с ней сегодня.

Важно, что будет с ART завтра.

Источник: http://redroid.ru/art-vs-dalvik-tak-v-chem-zhe-raznitsa/

Android изнутри: сравнение Dalvik и ART

Dalvik art cache что это

Привет, Хабр! Около полугода назад я публиковал подробный «гайд» по JVM. Пост, в целом, зашел, а в х спросили, не планируется ли “чего-то по андроиду”. Наконец, у меня дошли руки.

В этом посте поговорим о среде выполнения в Android.

В частности, я постараюсь кратко, но емко изложить, чем отличается ART и Dalvik, и как со временем улучшились средства разработки в Android. Тема явно не новая, но, надеюсь, придется кстати тем, кто только начинает вникать.

Кому интересно — добро пожаловать под кат.

Виртуальная машина

Сначала, давайте разберемся чем отличается JVM от DVM.

Java Virtual Machine — виртуальная машина, способная выполнять байт-код Java независимо от базовой платформы. Она опирается на принцип “Write once, run anywhere”. Байт-код Java может быть запущен на любой машине, способной поддерживать JVM.

Компилятор Java преобразует .java файлы в class-файлы (байт-код). Байт-код передается JVM, который компилирует его в машинный код для исполнения непосредственно на CPU. Особенности JVM:

  • Имеет стековую архитектуру: в качестве структуры данных, куда помещаются и хранятся методы, используется стек. Он работает по схеме LIFO или “Last in — First Out” или “Последним вошел, первым вышел”.
  • Может запускать только class-файлы.
  • Использует JIT-компилятор.

Dalvik Virtual Machine (DVM) — виртуальная Java машина, разработанная и написанная Дэном Борнштейном (англ. Dan Bornstein) и другими, как часть мобильной платформы Android. Можно сказать, что Dalvik — это среда для выполнения компонентов операционной системы Android и пользовательских приложений. Каждый процесс выполняется в своём, изолированном адресном пространстве. Когда пользователь запускает приложение (либо операционная система запускает один из своих компонентов), ядро виртуальной машины Dalvik (Zygote Dalvik VM) создает отдельный, защищенный процесс в общей памяти, в котором непосредственно разворачивается VM, как среда для запуска приложения. Другими словами, изнутри Android выглядит как набор виртуальных машин Dalvik, в каждой из которых исполняется приложение. Особенности DVM:

  • Использует архитектуру на основе регистров: структура данных, куда помещаются методы, основана на регистрах процессора. За счет отсутствия операций POP и PUSH, команды в регистровой виртуальной машине выполняются быстрее аналогичных команд стековой виртуальной машины.
  • Исполняет байт-код собственного формата: Android dexer (о нем поговорим ниже) преобразует class-файлы в формат .dex, оптимизированные для выполнения на Dalvik VM. В отличие от class-файла, dex-файл содержит сразу несколько классов.

Подробно об архитектуре DVM можно почитать тут.

Android Dexer

Разработчики Android знают, что процесс преобразования Java байткода в .dex байткод для Android Runtime является ключевым шагом в создании APK. Компилятор dex в основном работает “под капотом” в повседневной разработке приложений, но он напрямую влияет на время сборки приложения, на размер файла .

dex и производительность во время выполнения. Как уже упоминалось, сам dex-файл содержит сразу несколько классов. Повторяющиеся строки и другие константы, используемые в нескольких файлах классов, включаются только для экономии места. Байт-код Java также преобразуется в альтернативный набор команд, используемый DVM.

Несжатый dex-файл обычно на несколько процентов меньше по размеру, чем сжатый архив Java (JAR), полученный из тех же файлов .class.

Изначально, class-файлы преобразовывались в dex-файлы с помощью встроенного DX-компилятора. Но начиная с Android Studio 3.1 и далее, компилятором по умолчанию стал D8.

По сравнению с DX-компилятором, D8 компилирует быстрее и выводит dex-файлы меньшие по размеру, при этом обеспечивая более высокую производительность приложения во время исполнения. Полученный таким образом байт-код dex подвергается минификации с помощью open-source утилиты ProGuard. В итоге, мы получаем тот же dex-файл, но только меньше.

Далее этот dex-файл используется для сборки apk и, наконец, для развертывания на устройстве Android.

Но следом за D8 в 2018 году пришел R8, который, по сути, является тем же D8, только с дополнениями.

При работе с Android Studio 3.4 и Android Gradle 3.4.0 plugin или выше, Proguard больше не используется для оптимизации кода во время компиляции. Вместо этого плагин работает по умолчанию с R8, который сам выполняет Code shrinking, Optimisation и Obfuscation. Хотя R8 предлагает только подмножество функций, предоставляемых Proguard, он позволяет совершить процесс преобразования Java байт-кода в dex-байт-код единоразово, что еще больше сокращает время сборки.

R8 и сокращение кода

Как правило, приложения используют сторонние библиотеки, такие как Jetpack, Gson, Google Play Services. Когда мы используем одну из этих библиотек, часто в приложении используется только малая часть каждой отдельной библиотеки. Без Code shrinking, весь код библиотеки сохраняется в вашем приложении.

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

Но шаблоны, как правило, приводят к бОльшему объему кода, чем это необходимо. В этом случае R8 приходит на помощь. Он позволяет существенно уменьшить размер приложения, оптимизируя размер даже того кода, который действительно используется приложением.

В качестве примера, ниже преведены цифры из доклада Shrinking Your App with R8, который был представлен на Android Dev Summit '19:

А вот так выглядело сравнение эффективности R8 на этапе выпуска бета-версии (взято из источника Android Developers Blog):

Детальнее можно ознакомиться в оф документации и докладе.

ART vs DVM в Android

DVM была спроектирована именно для мобильных устройств и использовалась как виртуальная машина для запуска андроид приложений вплоть до Android 4.4 Kitkat.

Начиная с этой версии, ART был представлен как среда выполнения, а в Android 5.0 (Lollipop) ART полностью заменил Dalvik.

Основное явное отличие ART от DVM состоит в том, что ART использует AOT компиляцию, а DVM — JIT компиляцию. Не так давно ART начал использовать гибрид AOT и JIT. Далее разберем это чуть подробнее.

DVM

  • Использует JIT компиляцию: всякий раз при запуске приложения,
  • компилируется та часть кода, которая необходима для выполнения приложения. Остальная часть кода компилируется динамически. Это замедляет запуск и работу приложений, но уменьшает время установки.
  • Ускоряет загрузку устройства, поскольку кеш приложения создается во время выполнения.
  • Приложения, работающие на DVM, требуют меньше памяти, чем те, которые работают на ART.
  • Уменьшает резерв батареи, увеличивая нагрузку на CPU.
  • Dalvik является “устаревшим” и не используется на андроид версиях выше 4.4.

ART

  • Использует AOT компиляцию, то есть компилирует весь код во время установки приложения. Это ускоряет запуск и работу приложений, но требует большего времени установки.
  • Замедляет загрузку устройства, так как кеш создается во время первой загрузки.
  • Ввиду использования подхода AOT компиляции, требует больше памяти в сравнении с приложениями на DVM.
  • Увеличивает резерв батареи, сокращая работу процессора из-за отсутствия компиляции при выполнении приложений.
  • Улучшенная Garbage Collection или сборка мусора. Во времена использования Dalvik, сборщики мусора должны были осуществить 2 прохода по куче (heap), что и приводило к плохому UX. В случае с ART, такой ситуации нет: он чистит кучу один раз для консолидации памяти.

И небольшая схема Dalvik vs ART:

JIT + AOT в ART

Среда выполнения Android (ART), начиная с Android 7, включает компилятор JIT с профилированием кода. JIT-компилятор дополняет AOT компилятор и повышает производительность во время выполнения, экономит место на диске и ускоряет обновления приложений и системы.

Происходит это по следующей схеме: Вместо того, чтобы запускать AOT-компиляцию каждого приложения на этапе установки, он запускает приложение под управлением виртуальной машины, используя JIT-компилятор (почти так же, как в Android < 5.0), но следит за тем, какие участки кода приложения выполняются чаще всего. Затем эта информация используется для AOT-компиляции данных участков кода.

Последняя операция выполняется только во время бездействия смартфона, находящегося на зарядке.

Говоря простыми словами, теперь два совершенно разных подхода работают сообща, что дает свои плюсы:

  • более эффективная компиляция — при запуске приложения в реальном времени компилятор имеет возможность узнать о его работе гораздо больше, чем выполняя статический анализ, и, как следствие, применяются более подходящие методы оптимизации для каждой ситуации;
  • сохранение оперативной и постоянной памяти — байт-код компактнее машинного кода, а если выполнять AOT-компиляцию только отдельных участков приложения и не выполнять компиляцию приложений, которыми юзер не пользуется, можно существенно сэкономить пространство NAND-памяти;
  • резкое увеличение скорости установки и первой загрузки после обновления системы — нет AOT-компиляции, нет задержки.

О реализации JIT компилятора в ART подробнее тут.

Заключение

В этой статье я постарался разобрать основные отличия Dalvik от ART, и в целом взглянуть на то, как с течением времени Android улучшал инструменты для разработки. ART все еще находится в стадии разработки: добавляются новые фичи, чтобы улучшить опыт как для пользователей, так и для разработчиков.

Если было полезно — дайте знать в комментах.

  • android
  • dalvik
  • android runtime

Хабы:

  • Java
  • Разработка мобильных приложений
  • Разработка под Android

Источник: https://habr.com/ru/post/513928/

Как очистить кэш на Андроиде

Dalvik art cache что это

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

Часть данных хранится в специальной области памяти — кэше. Например, браузер сохраняет данные о посещенных сайтах, а при новом посещении этого сайта, браузер откроет копии страниц сайта, сохраненные в памяти смартфона, не загружая все данные из интернета. За счет этого уменьшается время загрузки веб-страниц, они открываются быстрее, происходит экономия трафика и времени.

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

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

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

На устройствах Андроид используется кэш память трех типов:

  • Dalvik cache — кэш виртуальной машины Dalvik, содержащий файлы приложений для более быстрого запуска. Данный вид кэша автоматически пересоздается на устройстве.
  • Системный кэш — находится во внутренней памяти устройства. Здесь находятся данные встроенных в операционную систему Android приложений.
  • Кэш приложений — данные сторонних приложений, загруженных из Google Play Market. По умолчанию, эти данные сохраняются во внутренней памяти устройства.

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

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

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

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

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

Для решения проблемы, используйте наиболее оптимальный вариант: очистку кэша на устройстве. Помимо освобождения места, удаление данных из кэша может помочь при возникновении ошибок в работе приложений. Часть файлов, хранящихся в кэше, больше не понадобится, потому что пользователь может редко использовать некоторые программы на своем мобильном устройстве.

Что значит очистить кэш на Андроиде? Это значит удалить все ранее сохраненные данные из кэша, используемые приложениями на телефоне. Данная операция не причинит никакого вреда ОС Android или установленным приложениям. Просто будет удалена дополнительная информация из памяти, сами программы останутся на месте.

Существует четыре способа для освобождения внутренней памяти от кешированных данных на мобильных устройствах:

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

В статье мы рассмотрим, как очистить кэш на Андроиде вручную: удалим весь кэш, или кешированные данные из отдельного приложения. Для удаления кэша, пользователь может воспользоваться сторонними программами из магазина Google Play, про одну из подобных программ есть инструкция в этой статье.

Как очистить весь кэш на Андроиде системным средством

Пользователь может удалить весь кэш с устройства с помощью встроенного средства операционной системы Android.

Выполните следующие шаги на устройстве Андроид:

  1. Войдите в «Настройки», выберите «Хранилище» или «Память», в зависимости от версии Android.
  1. В окне «Хранилище» нажмите на «Данные кеша».
  1. Во всплывающем окне с вопросом «Очистить кеш?», нажмите на «ОК». После этого, все кешированные данные приложений будут удалены с мобильного телефона.

Как очистить кэш приложений на Андроид

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

  1. Войдите в «Настройки», выберите «Приложения».
  1. В списке приложений выберите нужную программу.
  2. В окне программы нажмите на параметр «Хранилище». В старых версиях Android в этом окне находится раздел «Кэш», в котором нужно нажать на кнопку «Очистить кэш».
  3. В окне хранилища приложения в опции «Кеш» нажмите на кнопку «Очистить кеш».

При необходимости, повторите операцию с другим приложением, установленным на Android.

Очистка Dalvik cache в режиме Recovery

Для того, чтобы выполнить Wipe Dalvick Cache необходимо зайти в меню Recovery. Для входа в режим Recovery узнайте комбинацию клавиш подходящую для вашего устройства, потому что клавиши могут быть разными.

Обычно, используется одновременное нажатие на две клавиши: увеличение/уменьшение громкости и включения/выключения смартфона.

Я рассказываю, как это работает на моих телефонах.

  1. Выключите смартфон.
  2. Войдите в Recovery Mode, нажав на соответствующие клавиши мобильного устройства.
  3. С помощью клавиши уменьшения громкости дойдите до пункта «Wipe cache partition».
  4. Нажмите на клавишу выключения смартфона для подтверждения удаления Dalvik кеша. Другой вариант подтверждения удаления Dalvik кэша: нажмите на клавишу увеличения громкости.
  5. В нижней части экрана появится сообщение об очистке кэша.
  6. Затем выберите пункт «Reboot system now» для выхода из режима Recovery: нажмите на клавишу выключения смартфона или на клавишу увеличения громкости.
  7. Смартфон запустится в обычном режиме.

Удаление кэша при помощи стороннего приложения

Теперь посмотрим, как очистить кэш на телефоне с помощью стороннего софта, на примере самой популярной программы для очистки данных Clean Master. Программу можно скачать с Google Play Market, приложение Clean Master поддерживает русский язык интерфейса.

Откройте программу Clean Master на своем мобильном девайсе. Если программа в своем окне предупреждает о том, что найдены ненужные файлы, нажмите на кнопку «Очистить». Если никакого предупреждения нет, самостоятельно нажмите на кнопку «Мусор».

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

У пользователя есть два варианта действий: сразу удалить весь кэш, или сначала снять флажки напротив тех приложений, данные которых удалять не следует.

Нажмите на кнопку «Очистить мусор».

Если вам не подходит приложение Clean Master для освобождения памяти телефона, воспользуйтесь другой подобной программой.

Выводы статьи

Если встал вопрос, как очистить кэш на смартфоне Андроид, пользователь может воспользоваться встроенными функциями операционной системы, или положиться на помощь стороннего программного обеспечения.

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

https://vellisa.ru/kak-ochistit-kesh-androidКак очистить кэш на Андроидеhttps://vellisa.ru/wp-content/uploads/2018/10/0-1.pnghttps://vellisa.ru/wp-content/uploads/2018/10/0-1-300×169.png2020-03-15T14:35:25+03:00ВасилийAndroid/iOSДавайте разберемся, как очистить кэш на телефоне Андроид, и нужно ли это делать. В процессе использования смартфона, работающего под управлением операционной системы Android, на мобильной устройстве скапливается большое количество различных данных, сохраняемых для разных целей. Часть данных хранится в специальной области памяти — кэше. Например, браузер сохраняет данные о посещенных…ВасилийВасилий vas468@gmail.comAdministratorАвтор 700+ статей на сайте Vellisa.ru. Опытный пользователь ПК и ИнтернетИнтернет и программы для всех

Источник: https://vellisa.ru/kak-ochistit-kesh-android

Очистка

Dalvik art cache что это

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

Google тоже способствует этому, разрешая в новых версиях Android, хоть и не просто, но все же выполнять некоторые действия, которые без root были раньше невозможны. Речь сегодня пойдет о тонкой настройке через adb.

Преимущественно статья написана для людей не имеющих root права на телефоне, для тех у кого все же root права есть – статья предоставляется как есть. Автор статьи не несет ответственности за ваши действия.

Для начала запомним что ни одно действие описанное в этой статье не может окирпичить ваш телефон. Вы не имеете root прав, а значит невозможно испортить какой-либо компонент системы.

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

Без root мы просто не затрагиваем системные компоненты. Используем только то что разрешает нам сама система, как пользователю.

Разберем немного само устройство системы. В Android нет дисков как в Windows. Есть папки. Папки могут быть например картой памяти. Представьте что на вашем компьютере при вставке флешки, на рабочем столе появляется папка “флешка”. Вытаскиваете, исчезает.

Вот примерно так же и устроена система в вашем телефоне. И так попадая в shell вашего телефона вы оказываетесь в корневой, главной папке. В ней находится куча папок куда у вас нет доступа. Например System (папка прошивки) или Data (папка данных приложений).

То есть доступ в эти папки у вас как бы есть, но только на чтение. Вы не можете изменять, удалять или добавлять туда свои файлы. Нет root доступа для этого. Нас интересует внутренняя память телефона + карта памяти, куда запись нам вполне доступна.

И так, внутренняя память телефона всегда называется /sdcard. Карта памяти может находится в другом месте, но обычно она /storage/0123-4567

Для того чтобы попасть в shell вашего телефона (командную строку), нужно произвести на телефоне не сложные действия. Заходите в настройки телефона, ищете пункт “О Телефоне”. В нем ищите информацию о прошивке, версию и .т.д. Нас интересует пункт “Номер сборки”.

Нужно нажать на него быстро 10 раз. Должна появиться надпись “Включен режим разработчика”. Не бойтесь, ничего страшного не произойдет, просто в настройках телефона появится новое меню “Параметры разработчика”. Нужно зайти в это меню и включить “Отладка по USB”.

Далее на компьютер нужно установить adb. Для этого вам необходимо скачать “15 seconds adb installer”. К сожалению прямых ссылок дать не могу, но уверен поиском в гугле вы найдете нужный файл.

Запустить от администратора, несколько раз согласится нажав на клавиатуре “Y”, установить драйверы от Google Inc.

После того как вы установили adb + необходимые драйверы, вы можете работать с командной строкой телефона.

Для этого в пуске нажмите выполнить и вбейте руками CMD. Ну или на любом месте рабочего стола нажмите на клавиатуре “Win + R”, вбейте “cmd” (без кавычек) нажмите Enter.

Вы в командной строке компьютера. Чтобы подключиться к командной строке телефона вбейте adb shell. На телефоне может появится диалог – “доверять ли этому компьютеру?” Жмите доверять. Если все прошло гладко, вы увидите что-то вроде 1|greatlte:/ $

Основные команды:

pwd – показывает место (полный путь) к папке где вы находитесь

cd .. – перейти в папку уровнем выше

cd – change directory (сменить папку)

mkdir – make directory (создать папку)

rmdir – remove directory (удалить папку)

rm – remove file (удалить файл)

rm -rf – remove recursive force (удалить папку/файл вместе со всем содержимым) (Это опасная команда! Если запустить ее находясь скажем в корне памяти телефоне, вы сотрете все файлы (фотки например) находящиеся на карте памяти. Лучше не пользоваться этой командой без полного понимания того что она делает).

cp – copy (копировать)

mv – move (перемещать или переименовывать)

Примеры:

cd /sdcard/Downdload – сменить папку на /sdcard/Downdload

mkdir Papka – создает папку Papka в папке где вы находитесь

mkdir /sdcard/Downdload/Papka – создает папку Papka в /sdcard/Downdload

copy bxActions.apk bxActions1.apk – создает копию bxActions.apk с именем bxActions1.apk в папке где вы находитесь

mv bxActions.apk bxActions1.apk – переименовывает файл bxActions.apk в bxActions1.apk в папке где вы находитесь

mv /sdcard/Downdload/bxActions.apk /sdcard/bxActions.apk – переносит файл bxActions.apk из папки /sdcard/Downdload/ в корень внутренней памяти (/sdcard)

Почувствуйте себя хакером, начните использовать кнопку Tab на клавиатуре. Например пишите cd /sd[жмете кнопку TAB] получается – cd /sdcard

Продолжайте – cd /sdcard/Dow[жмете кнопку TAB] – получаете cd /sdcard/Downdload/ и вот уже можно жать Enter. Получается быстрее, если привыкните, жизнь станет сильно проще)

Кнопка Tab в командной строке пытается продолжить то что вы пишите подставляя имена файлов и папок которые есть в системе.

Что может adb? Начнем с азов. Перезагрузка в основные режимы.

reboot – (перезагрузка телефона)

reboot bootloader – перезагрузка в режим download или режим bootloader

reboot recovery – перезагрузка в режим восстановления

Работа с показом всяких системных характеристик:

getprop ro.bootloader – показ версии bootloader (только Samsung)

getprop ro.boot.carrierid – показ региона телефона (только Samsung)

getprop – выводит полный список команд сразу с результатами, можно посмотреть кучу инфы о телефоне

Страшный ужасный push и pull:

Эти две команды, push и pull скачивают и закачивают на телефон файлы с ПК и обратно.

Например. Открываете свой cmd на компьютере. Там вы тоже оказываетесь сразу в какой-то папке. Обычно это какой-нибудь C:\Windows\System32. Допустим вам нужно скачать файл с рабочего стола на телефон. В командной строке ПК пишите – cd C:\Users\Vasya\Desktop

Vasya – название пользователя, у вас оно само собой другое) Используйте кнопку TAB как писал выше, будет быстрее и проще. Задача чтобы вместо C:\Windows\System32 у вас было написано C:\Users\Vasya\Desktop

Как только вы оказались командной строкой на своем рабочем столе, можно например отправить файл контактов на телефон:

Пишите:

adb push контакты.csv /sdcard/Download/

И файл контактов скопируется с вашего рабочего стола в телефон, в папку /sdcard/Download/

С помощью команды pull можно наоборот, скачать с телефона на ПК:

adb pull /sdcard/Download/контакты.csv контакты.csv

Файл должен оказаться в той папке где вы находитесь командной строкой на ПК (но мы же на вашем рабочем столе, верно?)

Даем какой-либо программе специальные разрешения на примере bxAction:

Для работы bxActions нужно два специальных разрешения, WRITE_SECURE_SETTINGS и READ_LOGS. Эти разрешения могут быть даны только через компьютер, через adb. Сам разработчик рекомендует ввести в командной строке следующее:

adb shell pm grant com.jamworks.bxactions android.permission.WRITE_SECURE_SETTINGS

adb shell pm grant com.jamworks.bxactions android.permission.READ_LOGS

Это правильные команды, однако они не дают вам понимания сработали ли они при вводе. Я рекомендую вводить так:

adb shell – тут мы заходим в shell телефона

pm grant com.jamworks.bxactions android.permission.WRITE_SECURE_SETTINGS

pm grant com.jamworks.bxactions android.permission.READ_LOGS

Если при вводе возникнут какие-либо ошибки, вы это увидите. Если все хорошо, вывод будет пустой.

Таким вот не очень хитрым образом вы можете выдавать приложениям права которые раньше могли быть доступны только с получением root! К сожалению Google разрешает таким образом выдавать не все права, тот же Titanuim Backup не заработает, однако многие другие приложения сейчас умееют работать довольствуюсь только доступными в adb правами.

Я перечислю несколько приложений который попросили специальные права, я выдал их через adb и приложения прекрасно работают. Это – Wakelock Detector, Tasker, Adhell, Andromeda, AutoNotification, bxAction, Substratum, SystemUI Tuner.

Страшный ужасный менеджер пакетов.

Бывает ситуация когда вы поставили какое-то приложение, например тему. Вы хотите ее удалить, но не можете ее найти в списке установленных приложений. Так же бывает что приложение в списке есть, но оно не удаляется. Тут нам поможет встроенный менеджер пакетов.

У каждого приложения есть уникальное имя пакета. Это скажем так внутреннее название приложения, такое как его видит система. Вы же видите только название из так называемых строк перевода.

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

Таким образом вы видите у себя в меню приложений bxActions вместо com.jamworks.bxactions

Бывают конечно пакеты которые являются скажем какими то системными дополнениями, которые не переводят даже в файле default перевода и оставляют прям называнием пакета. Кстати по этой же логике создаются приложения клоны.

Достаточно пересобрать (именно пересобрать через специальный софт) пакет com.jamworks.bxactions с именем com.jamworks.bxactions1 и при установке вы получите второе приложения bxActions) Такой клон не всегда будет работать, но это один из способов создать клон.

Система видит приложения с разными названиями пакетов как отдельные приложения.

И так что может pm?

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

adb shell

cmd package list packages

Удалить пакет (например bxactions)

pm uninstall com.jamworks.bxactions

Пакетным менеджером так же можно устанавливать приложения. Например вы скинули bxActions.apk в папку Download

adb shell

cd /sdcard/Download

pm install bxActions.apk

Поздравляю вы установили приложение не дотрагиваясь до телефона)

Пакетный менеджер так же умеет отключать приложения. Например встроенный браузер вам не нравится, вы используете Chrome самостоятельно установленный с маркета.

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

Конечно, вы скажете, что можно поставить какой-нибудь Disabler с маркета, но это не всегда бывает удобно, поэтому просто знайте что есть способ сделать это через adb.

pm disable com.jamworks.bxactions – чтобы отключить

pm enable com.jamworks.bxactions – чтобы включить обратно если вы передумали

Есть одна загвоздка, вы можете не знать какое название пакета приложения Браузер. Обычно в если зайти в свойства приложения через настройки (Настройки – Приложения – bxActions), то в какой нибудь строке указывается название пакета, однако на Samsung'ах например невсегда.

В случае если посмотреть название пакета негде, а искать в выводе cmd package list packages не хочется, можно воспользоваться сторонним софтом. Например проводник которым я постоянно пользуюсь это умеет.

В Solid Explorer открываем боковое меню, приложения, выбираем системное или пользовательское приложение, видим список приложений и под каждым написано название пакета.

Источник: https://pikabu.ru/story/ochistka_khvostov_i_vremennyikh_faylov_s_pomoshchyu_kastomnogo_recovery_bez_ego_ustanovki_7208037

ART и Dalvik: Как оно работает

Dalvik art cache что это

Внутри последней итерации операционной системы Android нашлось место для многих изменений и усовершенствований. Большинство из них сразу же бросается в глаза даже рядовому пользователю данной системы. Это, конечно же, установка в качестве стандартного месседжера приложения Hangouts, переделанное меню набора номеров и добавление клавиатуры Emoji.

Бывалые же приверженцы Android наверняка ощутят прилив производительности в сравнении с более старыми ее релизами. Однако не обошлось и без скрытых сторон, которые, согласно логике, должны представлять интерес лишь для разработчиков. Впрочем, значимость одного из подобных нововведений особенно велика.

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

Наверное, многие из вас хотя бы краем уха слышали о том, что в Android KitKat появился особый режим. Суть его заключается в более быстром запуске приложений и в более стабильном и плавном их выполнении.

Возможно, попытки разобраться в данном вопросе самостоятельно не были увенчаны успехом. Оно и неудивительно: слова «виртуальная машина» и «компиляция» способны испугать кого-угодно, особенно, если информация потребляется из англоязычного источника.

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

Немного базовых понятий

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

Говоря простым языком, пресловутое понятие является сборником инструкций, которые выполняются во время работы того или иного приложения. Инструкции, в свою очередь, осуществляют перевод программного кода в код, который в состоянии запустить система.

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

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

Почему именно виртуальные машины?

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

Второй плюс — кросплатформенность. Виртуальная машина сможет запустить приложение, даже если оно создано на PC.

Преимущества и недостатки Dalvik

Dalvik, как и все в этом мире, неидеальна. Причиной периодических подергиваний интерфейса является тип преобразования кода приложения в аппаратный.

Данная машина проделывает это в прямом эфире, а называется такой тип компиляции Just-In-Time. Соответственно, предугадать появление багов практически невозможно, поскольку подобное может произойти в любой момент.

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

Проблема медлительности первого запуска, кстати, вовсе не случайна.

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

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

Компиляция «на ходу» значительно нагружает процессор, однако одновременно с этим позволяет разработчикам не заниматься оптимизацией кода для каждого отдельного процессора и прочих составляющих устройства.

Исправить вышесказанное призвана новая виртуальная машина, которая успела отметиться далеко не самым замысловатым названием — Android Runtime. Или же сокращенно — ART.

Новая виртуальная машина обрела жизнь вместе с Android 4.4 KitKat, однако на презентации ей не уделили должного внимания. Причиной этого является то, что ART все еще находится на экспериментальной стадии.

Впрочем, хотя и Dalvik используется в качестве машины по умолчанию, переключиться на Android Runtime можно уже сейчас.
Однако не спешите это делать.

Сначала необходимо ознакомиться с особенностям новой версии.

Наиболее заметным преимуществом ART является новый тип компиляции, который получил название Ahead-Of-Time. Читатели, знающие английский язык, наверняка сразу же догадались, в чем дело. А дело в том, что процесс преобразования кода в новой версии осуществляется до запуска приложения — еще во время установки.

Соответственно, сразу же вырисовываются несколько минусов, о которых, справедливости ради, стоит упомянуть. Это, во-первых, более длительный процесс установки, а во-вторых, больший объем конечного размера приложения.

Еще один недостаток является следствием незрелости ART: виртуальная машина на данный момент работает далеко не со всеми приложениями.

Впрочем, список заслуг куда более значимый. Это, к примеру, более плавная работа интерфейса и более быстрая загрузка приложений. Кроме того, поскольку процесс компиляции осуществляется лишь единожды, он не будет в дальнейшем нагружать процессор, что станет причиной улучшенной автономности устройства.

Переключиться на виртуальную машину ART в меню разработчика могут владельцы устройств под управлением Android 4.4 с процессором Snapdragon.

Итог

Развитие данной технологии имеет огромный потенциал. На карте стоит развенчание мифа о медлительности и нестабильности Android, что не только порадует владельцев устройств под ее управлением, но и ликвидирует наиболее серьезный аргумент в спорах со стороны приверженцев iOS.

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

Источник: https://AndroidInsider.ru/os/art-i-dalvik-kak-ono-rabotaet.html

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.