Твики build.prop для android, которые действительно работают

Как включить режим разработчика?

Режим настроек для разработчиков есть на всех современных версиях Android:

  • Android 4.0 Kitkat.
  • Android 5.0 Lollipop.
  • Android 6.0 Marshmallow.
  • Android 7.0 Nougat.
  • Android 8.0 Oreo.
  • Android 9.0 Pie.
  • Android 10 Q.

Чтобы получить доступ к этому разделу настроек, нужно следовать инструкции:

  1. Зайдите в «Настройки» — «О телефоне».
  2. Найдите пункт «Версия ядра» (или «Номер сборки») и кликните по нему несколько раз подряд (5-10).

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

BUCK

  • поддерживает разные языки программирования и умеет собирать как Andriod, так и iOS;
  • умеет кешировать ранее собранные артефакты;
  • для Buck сделали свою реализацию dex, которая работает пошустрее стандартной и висит вместе с демоном системы. Так они экономят время на инициализации dex. Инженеры действительно многое оптимизировали. Например, Buck не собирает код, который зависит от библиотеки, если при изменении внутренностей библиотеки не изменился интерфейс. Аналогично и для ресурсов: если идентификаторы не поменялись, то при изменении ресурсов код не пересобирается.
  • есть плагин, который умеет прятать Buck за гредловским конфигом. Т.е. вы получаете примерно обычный Gradle-проект, который на самом деле собирается через Buck.
  • его так же сложно поддерживать, как Bazel. Т.е. тут так же надо описывать низкоуровневые правила, четко описывающие процесс сборки;
  • кроме прочего, Buck не умеет сам разрешать Maven-зависимости.

CONSOLE

  • загружаем и распаковываем все библиотеки, от которых зависит проект. В моём случае это библиотека обратной совместимости appcompat, которая, в свою очередь, зависит от appcompat-core, поэтому выкачиваем и её;
  • генерируем R.java. Этот чудесный класс содержит в себе идентификаторы всех ресурсов в приложении и используется для того, чтобы обращаться к ним в коде;
  • компилируем исходники в байт-код и транслируем его в Dex, потому что виртуальная машина Android с обычным байт-кодом работать не умеет;
  • упаковываем всё в APK, но сначала выравниваем все несжимаемые ресурсы, такие как картинки, относительно начала файла. Это позволяет ценой совершенно незначительного роста размера APK существенно ускорить его работу. Таким образом система напрямую может отображать ресурсы в оперативную память, используя функцию mmap().
  • подписываем приложение. Эта процедура защищает целостность APK и подтверждает авторство. И благодаря этому, например, Play Market может проверить, что приложение было собрано именно вами.

Мотивация

Android Studio была неповоротливой еще во времена перехода с Eclipse. И уже тогда я начал искать способы оптимизации работы этой IDE. Однако, большинство коллег относилось к этому «никак». Работает. Не всегда быстро. И ладно.

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

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

DISCLAIMER! Все упомянутые в статье модели и бренды не являются рекламой!

Модернизация:

Для начала делаем бекап и другие действия для сохранения нервов в случае неудачного редактирования файла! Далее открываем файл и начинаем его редактирование.

Если описанных ниже строчек нет в вашем файле, то просто пишите их в конец файла.

Поехали (вместо звездочки * пишем нужное нам значение):

1) debug.sf.hw=*. Эта строчка отвечает за Аппаратное ускорение. Оно нужно для ускорения графического интерфейса. Значение 1 его активирует. Значение 0 его выключает. Пробуйте, проверяйте и вам воздастся. Лично у меня возникает рябь в графике (возможно сильная!), поэтому оффнул его.

2) wifi.supplicant_scan_interval=***. Эта строчка отвечает за интервал поиска Wi-Fi сетей. По умолчанию стоит 20. Значение измеряется в секундах. Это означает, что у нас стоит 20 сек. Советуется для экономии батареи поставить значение 180-200.

3) pm.sleep_mode=1 ro.ril.disable.power.collapse=0 – иностранные коллеги также советуют прописать эти 2 строчки для экономии заряда батареи.

4) dalvik.vm.heapsize=*m. Эта строчка устанавливает значение heapsize. Смысл в том, что в большинстве прошивок установлено малое значение памяти для использования приложением, программа расширяет это значение, тем самым увеличивая производительность и делая устройство более стабильным. Большое значение лучше не ставить, хотя можно поэкспериментировать. Лучший вариант — это 32m. Его кстати и рекомендуют.

5) dalvik.vm.execution-mode=int:***. Эта строчка отвечает за JIT. Значение jit включает его, а значение fast выключает. Технология JIT также служит для увеличения производительности аппарата. Еще раз напомню-может работать не у всех.

6) windowsmgr.max_events_per_sec=60. Делает интерфейс более гибким и плавным. Этой строчки изначально нет, нужно дописывать самому. Можете поиграться со значениями и выбрать подходящее.

7) ro.media.enc.jpeg.quality=100-повышаем качество jpg. А если быть более точным, то изменяем степень сжатия фоток. При параметре 100 размер фоток вырастет примерно в 2 раза.

8) ro.media.dec.jpeg.memcap=8000000 ro.media.enc.hprof.v >

MAVEN

  • он поддерживает кеширование артефактов сборки, т.е. инкрементальный билд должен быть быстрее чистого;
  • умеет разрешать сторонние зависимости. Т.е. Когда вы в конфиге Maven или Gradle указываете зависимость от сторонней библиотеки, вам не нужно заботиться о том, от чего она зависит;
  • есть куча подробной документации, потому что он уже весьма давно на рынке.
  • и он может быть привычным механизмом сборки, если вы недавно пришли в мир Android-разработки из бэкенда.
  • зависит от версии Java, установленной на машине, на которой происходит сборка;
  • Android-плагин сейчас поддерживается сторонними разработчиками: лично я считаю это весьма существенным недостатком, потому что в один прекрасный день они могут перестать это делать;
  • XML не очень подходит для описания билд-конфигов в силу своей избыточности и громоздкости;
  • ну и как мы позднее увидим, он работает медленнее Gradle, по крайней мере на тестовом проекте.

Твики build.prop

Отображаемый язык при первом запуске Android (или полного сброса)

Изменить строки:

на

Если же данных строк нет, но есть:

изменить на

Включение Отладки по USB при первом запуске Android (или полного сброса)

Добавить или изменить:

Улучшить качество фотографий

Добавить или изменить:

Улучшить качество снимков (за счет уменьшения скорости работы)

Улучшить качество снимков и видеозаписи

Добавить или изменить:

Улучшить качество мобильной сети

Добавить или изменить:

Улучшить качество передаваемой речи в мобильной сети

Добавить или изменить:

Акселерация интерфейса за счет GPU устройства

Добавить или изменить:

Отключить анимацию при включение устройства

Добавить или изменить:

Установить скорость анимации включения

Ускорить загрузку устройства

Добавить или изменить:

Отключить логирование ошибок ядра

Ускорить работу потокового видео

Добавить или изменить:

Внесение лаунчера в память

Добавить или изменить:

Увеличение автономности работы Android при использование Wi-FI

Добавить или изменить:

Улучшить реакцию сенсора дисплея

Добавить или изменить:

Увеличение скорости скрола (но ухудшается плавность)

Улучшить качество приема 2G и 3G сетей

Добавить или изменить:

Google DNS

Изменение плотности экрана DPI

читайте подробней в статье про DPI

Пустые строки, которые никак не влияют на систему

Помимо полезных твиков для Android, существует бесконечное множество и бесполезных, которые активно рекомендуют и пиарят в сети. Однако под красивыми словами не кроется абсолютно ничего — они попросту игнорируются и не исполняются системой, а значит и их влияние на ОС нулевой. Соответствующее расследование провел один из активных пользователей популярного ресурса XDA, проанализировав исходники AOSP. Вот какие строки в build.prop никак не влияют на систему и не улучшают работу смартфонов:

Не экономят заряд аккумулятора Не ускоряют систему Android
  • ro.ril.disable.power.collapse
  • ro.mot.eri.losalert.delay
  • ro.config.hw_fast_dormancy
  • ro.config.hw_power_saving
  • windowsmgr.max_events_per_sec
  • persist.cust.tel.eons
  • ro.max.fling_velocity
  • ro.min.fling_velocity
  • debug.performance.tuning
  • video.accelerate.hw

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

BuildProp — кастомизируем Андроид

Сегодня наиболее популярными операционными системами для мобильных устройств являются такие решения, как Android и iOS. Есть конечно и другие ОС, но на сегодняшний день их доля ничтожно мала. И если система iOS закрыта от глаз обычного пользователя и даже ее взлом мало что решает, то с Android дела обстоят иначе. Разлочив загрузчик и получив Root-права, пользователь может изменять практически все, что ему пожелается. Есть множество утилит для видоизменения внешнего вида Android, но как обстоят дела с иными настройками, как например, ускорение скорости Wi-Fi, улучшение (реальное) производительности, оптимизация памяти и т.д? Все это можно улучшить, всего лишь добавив несколько новых строчек или поменяв уже имеющиеся в единственном файле build.prop на смартфоне. Грамотное использование твиков не вызовет в работе аппарат никаких сбоев, более того, смартфону можно будет вдохнуть новую жизнь. Сегодня мы расскажем как правильно редактировать столь важный атрибут системы Android, как build.prop, чтобы получить от смартфона максимум.

Сети

  • Показывать сертификации беспроводных мониторов.
  • Подробная запись в журнал Wi-Fi. При выборе сети указывать в журнале RSSI для каждого SSID.
  • Переключаться на мобильную связь. Принудительное переключение на мобильные сети при слабом сигнале Wi-Fi.
  • Всегда включать поиск сетей Wi-Fi. Включение или отключение поиска Wi-Fi в зависимости от объема трафика.
  • Не отключать передачу данных даже при активном подключении к сети Wi-Fi (для быстрого переключения между сетями).
  • Конфигурация USB:
    • зарядка;
    • MTP (передача мультимедиа);
    • PTP (передача изображений);
    • RNDIS (USB Ethernet);
    • аудиоисточник и MIDI.
  • Отключать абсолютный уровень громкости Bluetooth при возникновении проблем на удаленных устройствах, например, при слишком громком звучании.

BAZEL

  • поддержка разных языков программирования. Если верить документации, то он умеет собирать проекты для iOs, Android или даже бэкенда;
  • умеет кешировать ранее собранные артефакты;
  • умеет работать с Maven-зависимостями;
  • у Bazel очень крутая, на мой взгляд, поддержка распределённых проектов. Ему можно в качестве зависимостей указывать конкретные ревизии git-репозиториев, и он будет сам их выгружать и кешировать в процессе сборки. Для поддержки масштабируемости Bazel умеет, например, распределять различные таргеты по облачным билдсерверам, что позволяет очень быстро собирать громоздкие проекты.
  • всю эту прелесть весьма тяжело поддерживать, потому что билд-конфиги очень подробные и описывают сборку на низком уровне;
  • помимо прочего, кажется, что Bazel сейчас активно развивается. Из-за этого некоторые примеры не собираются, а те, что собираются, могут использовать уже устаревший функционал, который помечен как deprecated;
  • документация сейчас также оставляет желать лучшего, особенно в сравнении с Gradle;
  • на маленьких проектах прогрев и анализ билд-конфигов может занимать больше времени, чем сама сборка, что не есть хорошо, на мой взгляд.

It’s all about apps

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

Основная единица в Unix-подобных системах  —  процесс. И низкоуровневые системные сервисы, и отдельные команды в shell’е, и графические приложения  —  это процессы. В большинстве случаев процесс представляет собой чёрный ящик для остальной системы  —  другие компоненты системы не знают и не заботятся о его состоянии. Процесс начинает выполняться с вызова функции (на самом деле ), и дальше реализует какую-то свою логику, взаимодействуя с остальной системой через системные вызовы и простейшее межпроцессное общение (IPC).

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

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

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

Этот механизм  —  Binder.

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

Твики, не экономящие заряд:

Твики, не ускоряющие работу:

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

И ещё немного различных попросту не работающих твиков:

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

Скрипты init.d

Для того чтобы скрипты работали, необходимо:

  1. Ядро с поддержкой init.d
  2. Root права Android
  3. Установленный BusyBox
  4. Дописать в build.prop sys.initd=1

Все скрипты добавлять в папку init.d находящуюся по пути /system/etc. 

Ниже будет представлено описание и ссылка на скрипт.

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

Скачать скрипт init.d

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

Скачать скрипт init.d

Скрипт centisecs — ускоряет работу Android за счет оптимизаций работы записи данных на диск.

Скачать скрипт init.d

Скрипт zminfree — оптимизирует выгрузку приложений из оперативной памяти.

Скачать скрипт init.d

Скрипт batterystats — сбрасывает статистику работы батареи (использовать если неправильно отображает заряд батареи).

Скачать скрипт init.d

Скрипт wifi_idle_wait — Удержания соединения Internet по Wi-Fi при выключенном экране.

Скачать скрипт init.d

Вот и все! Больше статей и инструкций читайте в разделе Статьи и Хаки Android. Оставайтесь вместе с сайтом Android +1, дальше будет еще интересней!

Видео: |УСИЛЕНИЕ ЗВУКА|ЭКОНОМ ЗАРЯДА|BUILD.PROP|BLACKVIEW A8|

15) persist.adb.notify=0 — отключение иконки режима отладки в статусбаре.

16) ro.config.hw_menu_unlockscreen=false — для включения возможности разблокирования экрана при помощи кнопки Меню (двойного нажатия), измените значение с «false» на «true»

17) Точное предназначение следующих строчек я не знаю, поэтому просто приведу список:

persist.sys.use_dithering=0 persist.sys.purgeable_assets=1 dalvik.vm.dexopt-flags=m=y ro.mot.eri.losalert.delay=1000

18) Твики, определенные только для телефонов LG!

persist.service.pcsync.enable=0 persist.service.lgospd.enable=0 user.feature.flex=true user.feature.lgdrm=false user.feature.lgresource=false user.feature.lgpoweroff=false user.feature.ls_event=false user.feature.ls_normal=false user.feature.sui=false

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

(1 оценок, среднее: 5,00 из 5)

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

Как изменить DPI на Android?

Если в процессе проверки показаний становится понятно, что подходящего ПО нет, следует изменить его. Большинство вариантов предполагают наличие рут-прав. С приложением осуществить данную операцию легко. Но что делать, если нет возможности или желания скачать его? Придется действовать вручную:

  1. Открывается файл категории build.prop в папке system.
  2. Значение меняется через ro.sf.lcd_density.
  3. После знака равно будет значение, которое можно изменить.
  4. Осуществленные изменения сохраняются.
  5. Телефон требуется перезагрузить.

После этого обновленные параметры вступят в силу без проблем. При желании можно действовать иным путем. Рекомендуется скачать приложение Screen Resolution. Далее ПО запускается и выдает требуемое значение.

Для смены параметра разрешается использовать сторонние ПО. Одним из самых популярных считается Easy DPI Changer от chornerman_studio. Используется оно по такой схеме:

  • Утилита скачивается на устройство и запускается;
  • Далее нужно перейти в главное меню;
  • Вверху дисплея следует найти Current и значение DPI;
  • На следующей строке вводится показатель;
  • Нажимается опция Enter.

В завершении операции останется перезагрузить устройство. Можно получать наслаждение от новых показателей. Если данный вариант не подходит, используют иную прогу. Речь идет о менеджере Root Browser от JRummy Apps. Программа скачивается на устройство.

После запуска следует перейти в папку с системными настройками. Нужно пройти в самый низ списка. Открыть объект build.prop. Здесь необходимо найти строку ro.sf.lcd+density=. После крайнего знака ставится требуемое значение. В завершении устройство перезагружается. Этот способ гарантированно сохранит настройки. Разрешит использовать гаджет максимально полноценно.

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

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

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

Улучшение интерфейса

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

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

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

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

Что из этого получится — можете увидеть на скриншоте.

Аппаратные настройки

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

Intel Hyper Threading

Это технология Intel, которая разделяет аппаратный поток ядра на два «виртуальных». Благодаря ей система видит 4-ядерный процессор как 8-ядерный. Такой подход позволяет эффективно утилизировать процессорные мощности. Аналогичная технология есть и у AMD.

Часто сталкиваюсь с тем, что у многих разработчиков эта функция отключена и они вообще о ней не знают. Однако, ее включение может повысить отзывчивость студии и производительность сборки. В отдельных случаях на 10-15%.

Включается она в настройках BIOS\UEFI Вашей материнской платы или ноутбука. Называется пункт аналогичным или похожим образом. Если Вы еще не знали о этой технологии- то имеет смысл проверить ее наличие и включить если этого не было сделано.

Intel Turbo Boost

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

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

Включаться она может как BIOS\UEFI, так и в настройках ОС.

Intel Rapid Storage

Поддержка этой технологии мат.платой крайне рекомендуется. Более подробно можно почитать здесь.

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

В моем конкретном случае, обновление с версии драйвера от производителя до актуальной, повысило скорость линейной записи примерно на 30%, а произвольной- на 15%.

Как устанавливать и обновлять драйверы IRST на Linux- я не знаю (и вообще, возможно ли это?). Если кто знает- пишите в комментарии, я с удовольствием дополню статью.

SSD Secure Erase

Производительность недорогих моделей SSD может со временем падать. Это не всегда происходит из-за «деградации» накопителя. Возможно, в Вашей модели TRIM реализован не очень эффективно.

Secure Erase заставит контроллер пометить все ячейки памяти пустыми, что, теоретически, должно вернуть производительность SSD к заводскому состоянию. И, также, сотрет все Ваши данные! Будьте аккуратны, делайте бекапы!

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

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

Использовать сторонние утилиты для этой операции крайне не рекомендуется.

Впрочем, если Ваш SSD существенно потерял в скорости за время менее года- лучше поменять накопитель на другую модель.

Аппаратная виртуализация

Эта технология необходима для быстрой работы x86-эмулятора. Если у Вас она отключена- включите ее в настройках BIOS\UEFI. У разных вендоров могут быть разные названия настроек.

Да, мы все знаем про Genymotion и BlueStacks, которые прекрасно обходятся без аппаратной виртуализации. Однако, в образах этих эмуляторов некоторые или многие реализации Android API сильно изменены с целью увеличения скорости работы. Это может провоцировать поведение, которое Вы никогда не встретите на реальном устройстве. Или при отладке Вы можете упустить пару багов. Потому наличие рабочего и шустрого AVD крайне желательно.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector