build что это такое в телефоне
Всего лишь меняем модель эмулятора Android устройства
Пролог
Казалось бы, на первый взгляд весьма простая задача. Некоторые читатели могли еще в те бородатые времена лазить по всяким 4пда, рутить свой сенсорный самсунг, менять содержимое файла build.prop и показывать наивным ламерам свой iPhone 15+ Max Pro. Однако, как оказалось, и как оно часто бывает, не все так просто и здесь есть свои подводные камни. Статья призвана помочь простым работягам избежать все кочки да ямы на пути к своей цели!
Дисклеймер
Сразу предупрежу, что люблю писать подобные статьи довольно подробно, не ради объема и многобукав, а ради максимального погружения в проблему и способ ее решения. Обратите внимание, что я работаю на macOS, поэтому все команды в терминале будут ориентированы под данную ОС. Также, следует отметить, что проворачиваю все это для API 30, то есть для самого последнего на момент написания статьи. Как говорят интернеты, сложности по этой теме начались с API 29.
Зачем это нужно?
Предполагаю, что у вас, дорогой читатель, есть на это своя веская причина, иначе не стали бы вы этим заниматься. Наиболее вероятно, что у вас, как и у меня есть программная проверка на модель устройства с которого запущено приложение, примерно как здесь. К слову, таким образом можно будет проверять результат наших трудов. Второй же, и более простой способ проверки модели эмулятора будет через настройки девайса в разделе сведений об устройстве:
Ради контекста вкратце расскажу зачем это понадобилось мне. Я получил .apk с багом где-то внутри приложения. Однако пройти дальше первого экрана в этом приложении я не смог. Дело в том, что при запуске, с сервера приходит список разрешенных для запуска устройств и ни мой народный Ксяоми, ни мой эмулятор в этот список не входит. Вот и додумался поменять имя модели устройства на одно из разрешенных. Рутить свой личный телефон не хотелось, поэтому решил шаманить с эмулятором.
Экран не пустивший меня дальше
Достаем build.prop
Как уже говорилось в начале статьи, за имя производителя и модель устройства отвечает системный файл build.prop, который находится в корне устройства в папке system/. Однако при попытке просмотреть его, не говоря уже о редактировании, мы получим отказ в доступе:
Отлично, теперь мы видим содержимое файла build.prop:
Редактируем build.prop
Сохраним файл build.prop в любое удобное место для дальнейшего редактирования выделенной красным области на скриншоте выше. Я сохранил прямо на рабочий стол:
Вносим необходимые изменения. Просмотрев логи запросов и ответов предоставленного мне .apk я нашел приходящий с сервера список разрешенных устройств. То есть, для моих целей нужно поменять два значения на PIXEL 3A XL (как вы поняли, здесь вы можете указывать необходимую именно вам модель):
Сохраняем изменения и заливаем файл обратно на эмулятор. Делается это при помощи команды adb push (кстати, скачать файл с эмулятора можно при помощи adb pull если у вас вдруг аллергия на GUI).
Вводим команду в терминал: adb push build.prop system/
adb: error: failed to copy ‘build.prop’ to ‘system/build.prop’: remote couldn’t create file: Read-only file system
Вот здесь и начинается самое интересное! По умолчанию эмулятор запускается в режиме чтения системных файлов, без возможности делать записи. Следовательно, что либо поменять без прав на запись у нас не выйдет. Для этого нам необходимо запустить эмулятор в ручном режиме с доступом на запись системных файлов.
Запускаем эмулятор с доступом на перезапись системных файлов
Для этого нужно выполнить следующую команду в терминале (чтобы скорее всего получить еще одну ошибку):
После у нас либо запустится эмулятор (несколько секунд запускается, так что если тупит то так и должно быть) либо получаем ошибку следующего типа:
PANIC: Missing emulator engine program for ‘x86’ CPU.
Что бы и нам решить с этим нужно в файле .bash-profile (или если у вас zsh то в файле .zshenv) находящийся в корне вашего профиля macOS, добавить дополнительные пути. Вот как это выглядит у меня:
есть такая переменная ANDROIDHOME и с ее участием редактируем переменную PATH:
Чтобы изменения вступили в силу перезапускаем терминал (или вводим source
/.bash_profile ) (или source
Пробуем запустить эмулятор еще раз.
Теперь он должен был успешно запустится.
Активируем доступ на перезапись системных файлов
Из описания флага -writable-system:
-writable-system make system & vendor image writable after ‘adb remount’
Теперь делаем adb shell avbctl disable-verification
Если вы вдруг остались в shell то введите exit
Перезагружаем эмулятор adb reboot и ждем
Снова делаем adb root
И вот теперь можно делать adb remount
Редактируем правильный build.prop
Вернемся к началу и заметим, что значения ro.product.product.name и ro.product.product.model не соответствует тому, что отображается в настройках устройства. Изучив структуру системных папок я заметил, что существует несколько файлов build.prop, которые располагаются в папках: system, system_ext, vendor и product. Эмпирическим методом я скачивал, редактировал и пушил обратно каждый из этих файлов. В конце концов ключевым оказался файл в папке product. Отредактировав его я наконец-то смог изменить название модели эмулятора устройства!
Подводим итоги
Наконец-то я смогу запустить приложение и воспроизвести баг. Подумал я…
О том, как я обходил проверку на рутованность устройства я расскажу в следующей своей статье. Немного реверс инжиниринга и даже такая популярная библиотека как RootBeer не проблема.
Данной статьей я стремился собрать как можно больше проблем по этому вопросу и изложить все в форме step-by-step. Спасибо за ваше внимание и очень надеюсь, что статья оказалась полезной!
Видео: Как пользоваться режимом разработчика в Android
Не раз нам приходили комментарии с просьбой рассказать поподробнее о режиме разработчика в Android. Многие знают, что это такое, но раз вопрос есть, то на него надо ответить.
Активация режима разработчика
Сначала надо активировать режим разработчика. Для этого надо перейти в настройки, найти вкладку “О телефоне”, а в ней поле “Номер сборки” и несколько раз часто тапнуть по нему. После этого в настройках самого смартфона появится новый пункт, который будет называться “Для разработчиков”.
Перед тем как начинать что-то делать, имейте в виду, что все действия производятся на свой страх и риск. Скорее всего, все будет нормально, но есть вероятность, что что-то может пойти не так и нормальное функционирование телефона будет нарушено.
Отчет об ошибке
Можно сформировать отчет об ошибке и отправить его туда, куда нужно. Но в некоторых случаях этот пункт недоступен или отсутствует вовсе. После нажатия на этот пункт начнет создаваться отчет, который создается несколько минут, а за прогрессом можно наблюдать в центре уведомлений. Когда отчет будет сформирован, его можно будет отправить, нажав на него, или отменить отправку, смахнув его в сторону, или сбросив все уведомления.
Пароль для резервного копирования
Пароль, который вводится для того, чтобы защитить ваши резервные копии от несанкционированного доступа, задается самим пользователем и может быть любым. Для того чтобы его задать, нужно открыть этот пункт настроек и ввести его. Если делаете это первый раз, то достаточно заполнить вторую и третью строчку. Если меняете, то надо вводить и установленный ранее пароль. Также можно и удалить пароль. Для этого надо ввести пароль, который был до этого, но не вводить новый.
Не выключать экран
Этот пункт может понадобиться когда вы хотите, чтобы при подключении питания экран оставался постоянно включенным. В обычной жизни это может пригодиться для того, чтобы пользоваться телефоном как часами или навигатором. Но злоупотреблять этим режимом не стоит, так как ресурс экрана не вечен.
Включить режим трансляции операций
Этот режим позволяет сохранять пакеты HCI Bluetooth в отдельном файле, который можно будет найти в специальной папке в памяти телефона. Нужно это в основном для разработчиков и специалистов по безопасности.
Заводская разблокировка
Пункт дает возможность разблокировать загрузчик. Не разблокирует, а только позволяет это сделать. Но если вы в этом не разбираетесь, то тоже лучше не заниматься этим и пройти мимо этого пункта. Тем более, если разблокировать его, то функции защиты не будут работать на устройстве.
Работающие приложения
Этот пункт наоборот может быть полезен простым пользователям, так как тут можно посмотреть сколько памяти “съедает” каждое приложение и остановить его. Если есть какие-то проблемы, то отсюда же можно отправить отчет об ошибке и просто поподробнее изучить сами приложения.
Отладка по USB
Отладка по USB нужна для того, чтобы можно было устанавливать соединение с компьютером используя Android Debug Bridge. Как правило это требуется для получения root-прав и модификации прошивок.
Запретить доступ для USB-отладки
Для отладки по USB требуется авторизовать компьютер для этой работы. Если вы не хотите, чтобы авторизованные ранее компьютеры имели доступ к отладке по USB и хотите, чтобы для них требовалась повторная авторизация, то для этого надо просто запретить доступ для USB-отладки.
Отчет об ошибке
Если активировать этот пункт, то в меню будет добавлена кнопка, которая позволяет создавать и отправлять отчеты об ошибках. По-умолчанию такая кнопка не активна, но после активации ее можно найти, если удерживать кнопку Power как для выключения. Раньше ее там не было, а после активации этого пункта она появляется.
Выбор приложения для фиктивных местоположений
В Android можно на программном уровне изменить свое местоположение не сходя с места. В некоторых играх, или приложениях это может пригодится. Этим можно будет разыгрывать друзей, или обманывать кого-то по поводу своего местоположения. В любом случае, все это можно сделать. Для этого надо скачать какое-нибудь приложения по запросу “Fake GPS” а настроить в нем новое положение. После этого в пункте “Выбрать приложение для фиктивных местоположений” выбрать его.
Сертификация беспроводных мониторов
Тут все понятно из названия. Можно включить отображение параметров сертификации беспроводных мониторов, если вам это нужно
Подробный журнал Wi-fi
Если есть желание подробно отслеживать работу Wi-Fi соединений, то вам сюда. Активировав этот режим, можно включить более подробные отображения в журнале.
Переключаться на мобильную сеть
Активация этого пункта позволит переключаться на мобильную сеть для передачи данных когда сигнал Wi-Fi становится слишком слабым. Но в этом случае надо не забывать про объем включенного трафика или его стоимость, если у вас не безлимит. Странно, что этот пункт спрятали сюда. Например, в iOS это называется ассистент Wi-Fi и находится в обычных настройках.
Не отключать передачу данных
Для быстрого переключения между сетями можно активировать значение, которое позволит не прекращать передачу данных через мобильную сеть даже при активном Wi-Fi подключении. В этом режиме будет проще и быстрее переходит от одной сети к другой.
Конфигурация USB
В этом пункте можно настроить то, что мы настраиваем в шторке уведомлений, когда телефон подключен к компьютеру. А именно режим работы USB. Но в данном случае можно выбрать не просто значение, а значение по умолчанию.
Отключить абсолютный уровень громкости
Этот пункт позволяет отключить абсолютный уровень громкости Bluetooth при возникновении проблем на удаленном устройстве. Под этим подразумевается, например, слишком громкий звук или невозможность его регулировки.
Визуальный отклик
Полезная вещь для любителей скринкаста. Она позволяет показать то место на экране, которого вы коснулись. На каждый день вряд ли пригодится, а для съемки скринкаста, обучающего видео или чего-то подобного может подойти.
Отображение касания
Для простого пользователя это больше просто развлечение, чем полезный инструмент, но тем не менее он позволяет отобразить зафиксированные точки касания экрана. Точки выстроятся в линию, если вы будете двигать пальцем по экрану. Также это может быть полезным, если вы захотите убедиться, что не сбилась калибровка экрана.
Показывать обновление поверхности
Если активировать данный пункт, то экран будет динамично подсвечиваться после обновления его содержимого. Для простого пользователя это может быть полезно например в том случае, когда телефон лежит с включенным экраном и в этот момент приходит сообщение или уведомление. Так будет проще не пропустить его.
Показывать границы элементов
Это пункт не имеет особой полезной нагрузки для простого пользователя. Просто можно увидеть где находятся границы элементов управления и экранных клавиш. Иногда может быть полезным, если хочеться проверить соответствие касаний расположенным элементам.
Написание справа налево
Этот пункт позволит расположить ползунки слева, а текст прижать к правому краю экрана. Просто все станет не так, как это общепринято. Нужно это возможно для левшей или просто людей, которые хотят сделать что-то необычное и немного изменить рутинный интерфейс своего смартфона.
Анимация
Настройка длительности анимации позволит визуально ускорить работу системы. Или наоборот сделать ее очень медленной. Второе возможно понадобится для того, чтобы разыграть не особо разбирающегося в тонкостях настроек друга.
Эмуляция дополнительных экранов
Позволит разработчикам имитировать различные размеры и разрешения экрана.
GPU-ускорение
Настройка позволяет заставить приложения использовать ускорение, если для них это не предусмотрено по умолчанию. Может существенно помочь в работе с графикой, но может и все испортить. Не рекомендовали бы увлекаться работой с этим пунктом.
Показывать обновление экрана
Настройка позволяет подсвечивать области экрана, которые были отрисованы графической подсистемой.
Включить 4x MSAA
Включение принудительной множественной выборки сглаживания. Но естественно надо иметь ввиду, что как и с любым графическим процессом, чем больше сглаживание, тем лучше выглядит картинка, но производительность при этом снижается.
Отключение передачи аудио (USB)
Настройка позволяет отключить автоматическую маршрутизацию на внешние USB-устройства.
Строгий режим
Настройка активирует режим мигания экрана, в том случае, если приложение использует главный поток для выполнения длительной и интенсивной операции.
Загрузка процессора
Позволяет отобразить на экране в виде цветной диаграммы загрузку центрального процессора, или графического чипа. При любых действиях диаграмма меняется и прокручивается. При этом, загрузку графического чипа можно отображать на экране, а можно записывать в специальный файл.
Не сохранять действия
Активация этого пункта позволит удалять сводку действий приложения после того как оно будет закрыто. Двоякое явление. Не всегда это будет хорошо.
Лимит фоновых процессов
Полезная опция для сохранения аккумулятора и производительности смартфона. Из названия видно, что она устанавливает лимит на количество фоновых процессов, которые могут работать одновременно.
Все ANR
Если хочется видеть уведомление системы о том, что приложение не работает или работает не так как должно, то активация этого пункта позволит получать подобные уведомления.
Неактивные приложения
В этом пункте находится встроенный диспетчер неактивных приложений, который позволит регулировать их активность.
Разрешить сохранение на внешние накопители
Если штатно для приложения не предусмотрена возможность установки на внешний накопитель, то активация этого пункта позволит это сделать независимо от “желания” приложения. Но не стоит забывать, что часто приложения не просто так отказываются устанавливаться на внешний накопитель и для этого есть свои причины. Поэтому, если активируете эту возможность, будьте готовы, что что-то может пойти не так.
Изменение размера многооконности
Настройка позволяет менять размер окон в режиме многооконности независимо от того, согласно ли на это приложение. Опять же, если разработчик был против этого, то наверняка у него были не это причины и лучше не лезть в это.
Отключение режима разработчика
Как и было сказано в начале, режим разработчика можно отключить. Хотя отключается он немного другим способом, нежели включается. Для отключения надо будет открыть настройки и перейти в раздел “приложения”. После этого нужно будет найти приложение “Настройки” и зайдя в него стереть все данные. Если это сделать, режим разработчика будет отключен. А если понадобится включить его снова, то сделать это можно будет там же способом, который был описан в начале.
Итоги
Мы рассказали вам про меню настроек разработчика и что означают основные пункты. Как вы поняли, большинство пунктов не для простых пользователей. Они понадобятся или тем, кто действительно является разработчиком, или тем, кто хочет на свой страх и риск поподробнее разобраться в возможностях операционной системы от Google. Еще раз добавим, что если навыков в этой области мало, то лучше даже не пробовать.
Скрипты и твики в Android (build.prop и init.d)
Хотели бы качественно улучшить работу Android смартфона или планшета в плане быстродействия и автономности и автоматизации? В этом вам помогут скрипты и твики в build.prop / init.d!
К большому сожалению практически многие производители Android смартфонов и планшетов не реализовывают весь потенциал устройства, что фактически влияет на скорость работы, автономность, повышение функциональности, удобства.
На данной странице вы найдете коллекцию скриптов и твиков Android build.prop и init.d.
Куда добавлять скрипты и твики Android?
Твики build.prop
Отображаемый язык при первом запуске Android (или полного сброса)
Если же данных строк нет, но есть:
Включение Отладки по USB при первом запуске Android (или полного сброса)
Добавить или изменить:
ro.adb.secure=0
ro.secure=0
ro.debuggable=1
persist.sys.usb.config=mtp,adb
persist.service.adb.enable=1
persist.service.debuggable=1
Улучшить качество фотографий
Добавить или изменить:
Улучшить качество снимков (за счет уменьшения скорости работы)
Улучшить качество снимков и видеозаписи
Добавить или изменить:
Улучшить качество мобильной сети
Добавить или изменить:
net.ipv4.ip_no_pmtu_disc=0
net.ipv4.route.flush=1
net.ipv4.tcp_ecn=0
net.ipv4.tcp_fack=1
net.ipv4.tcp_mem=187000 187000 187000
net.ipv4.tcp_moderate_rcvbuf=1
net.ipv4.tcp_no_metrics_save=1
net.ipv4.tcp_rfc1337=1
net.ipv4.tcp_rmem=4096 39000 187000
net.ipv4.tcp_sack=1
net.ipv4.tcp_timestamps=1
net.ipv4.tcp_window_scaling=1
net.ipv4.tcp_wmem=4096 39000 187000
net.tcp.buffersize.default=4096,87380,256960,4096,16384,256960
net.tcp.buffersize.wifi=4096,87380,256960,4096,16384,256960
net.tcp.buffersize.umts=4096,87380,256960,4096,16384,256960
net.tcp.buffersize.gprs=4096,87380,256960,4096,16384,256960
net.tcp.buffersize.edge=4096,87380,256960,4096,16384,256960
Улучшить качество передаваемой речи в мобильной сети
Добавить или изменить:
Акселерация интерфейса за счет GPU устройства
Добавить или изменить:
debug.sf.hw=1
debug.performance.tuning=1
video.accelerate.hw=1
debug.egl.profiler=1
debug.egl.hw=1
debug.composition.type=gpu
Отключить анимацию при включение устройства
Добавить или изменить:
Установить скорость анимации включения
Ускорить загрузку устройства
Добавить или изменить:
Отключить логирование ошибок ядра
Ускорить работу потокового видео
Добавить или изменить:
media.stagefright.enable-player=true
media.stagefright.enable-meta=true
media.stagefright.enable-scan=true
media.stagefright.enable-http=true
media.stagefright.enable-rtsp=true
media.stagefright.enable-record=false
Внесение лаунчера в память
Добавить или изменить:
Увеличение автономности работы Android при использование Wi-FI
Добавить или изменить:
wifi.supplicant_scan_interval=180
pm.sleep_mode=1
ro.ril.disable.power.collapse=0
Улучшить реакцию сенсора дисплея
Добавить или изменить:
Увеличение скорости скрола (но ухудшается плавность)
ro.config.tima=0
ro.config.knox=0
ro.securestorage.knox=false
security.mdpp=None
security.mdpp.result=None
wlan.wfd.hdcp=disable
Улучшить качество приема 2G и 3G сетей
Добавить или изменить:
persist.cust.tel.eons=1
ro.ril.gprsclass=10
ro.ril.hsdpa.category=8
ro.ril.hsupa.category=6
ro.ril.hsxpa=1
Google DNS
net.dns1=8.8.8.8
net.dns2=8.8.4.4
net.rmnet0.dns1=8.8.8.8
net.rmnet0.dns2=8.8.4.4
net.ppp0.dns1=8.8.8.8
net.ppp0.dns2=8.8.4.4
net.wlan0.dns1=8.8.8.8
net.wlan0.dns2=8.8.4.4
net.eth0.dns1=8.8.8.8
net.eth0.dns2=8.8.4.4
net.gprs.dns1=8.8.8.8
net.gprs.dns2=8.8.4.4
Изменение плотности экрана DPI
Скрипты init.d
Для того чтобы скрипты работали, необходимо:
Все скрипты добавлять в папку 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, дальше будет еще интересней!