Пролог
Казалось бы, на первый взгляд весьма простая задача. Некоторые читатели могли еще в те бородатые времена лазить по всяким 4пда, рутить свой сенсорный самсунг, менять содержимое файла build.prop и показывать наивным ламерам свой iPhone 15+ Max Pro. Однако, как оказалось, и как оно часто бывает, не все так просто и здесь есть свои подводные камни. Статья призвана помочь простым работягам избежать все кочки да ямы на пути к своей цели!
Дисклеймер
Сразу предупрежу, что люблю писать подобные статьи довольно подробно, не ради объема и многобукав, а ради максимального погружения в проблему и способ ее решения. Обратите внимание, что я работаю на macOS, поэтому все команды в терминале будут ориентированы под данную ОС. Также, следует отметить, что проворачиваю все это для API 30, то есть для самого последнего на момент написания статьи. Как говорят интернеты, сложности по этой теме начались с API 29.
Зачем это нужно?
Предполагаю, что у вас, дорогой читатель, есть на это своя веская причина, иначе не стали бы вы этим заниматься. Наиболее вероятно, что у вас, как и у меня есть программная проверка на модель устройства с которого запущено приложение, примерно как здесь. К слову, таким образом можно будет проверять результат наших трудов. Второй же, и более простой способ проверки модели эмулятора будет через настройки девайса в разделе сведений об устройстве:
Ради контекста вкратце расскажу зачем это понадобилось мне. Я получил .apk с багом где-то внутри приложения. Однако пройти дальше первого экрана в этом приложении я не смог. Дело в том, что при запуске, с сервера приходит список разрешенных для запуска устройств и ни мой народный Ксяоми, ни мой эмулятор в этот список не входит. Вот и додумался поменять имя модели устройства на одно из разрешенных. Рутить свой личный телефон не хотелось, поэтому решил шаманить с эмулятором.
Как уже говорилось в начале статьи, за имя производителя и модель устройства отвечает системный файл build.prop, который находится в корне устройства в папке system/. Однако при попытке просмотреть его, не говоря уже о редактировании, мы получим отказ в доступе:
Для решения этой проблемы необходимо в терминале обратиться к adb и запросить root права следующей командой: adb root
. И вот и первый подводный камень, а именно вывод следующего сообщения: adbd cannot run as root in production builds
. Это из-за того что при создании эмулятора мы выбрали вариант с установленными Google сервисами:
Простое решение — создать эмулятор без установленных Google сервисов, после чего повторить команду adb root
. После чего в консоли должно появиться сообщение: restarting adbd as root
что говорит об успешном проведении операции. Естественно если с самого начала у вас был эмулятор без Google сервисов, то скорее всего с adb root
и выше описанной проблемой вы не столкнулись.
Отлично, теперь мы видим содержимое файла 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
Вот здесь и начинается самое интересное! По умолчанию эмулятор запускается в режиме чтения системных файлов, без возможности делать записи. Следовательно, что либо поменять без прав на запись у нас не выйдет. Для этого нам необходимо запустить эмулятор в ручном режиме с доступом на запись системных файлов.
Запускаем эмулятор с доступом на перезапись системных файлов
Для этого нужно выполнить следующую команду в терминале (чтобы скорее всего получить еще одну ошибку):
emulator -avd Pixel3XLAPI30 -writable-system -no-snapshot -nocache
итак здесь Pixel3XLAPI30 — это название нашего эмулятора который мы будем запускать в режиме записи, получить это имя можно выполнив команду emulator -list-avds
-writable-system — собственно тот самый флаг и виновник торжества.
-no-snapshot -nocache — просто советую ввести чтобы избавиться от любого возможного мусора, который может помешать нашему плану-капкану.
После у нас либо запустится эмулятор (несколько секунд запускается, так что если тупит то так и должно быть) либо получаем ошибку следующего типа:
PANIC: Missing emulator engine program for 'x86' CPU.
БЕЗ ПАНИКИ! Не удивительно, что интернет уже решал подобную проблему.
Что бы и нам решить с этим нужно в файле .bash-profile (или если у вас zsh то в файле .zshenv) находящийся в корне вашего профиля macOS, добавить дополнительные пути. Вот как это выглядит у меня:
export ANDROIDHOME=~/Library/Android/sdk
есть такая переменная ANDROIDHOME и с ее участием редактируем переменную PATH:
export PATH=$ANDROIDHOME/emulator:$ANDROIDHOME/tools:$PATH
Чтобы изменения вступили в силу перезапускаем терминал (или вводим source ~/.bash_profile
) (или source ~/.zshenv
). Результат можно проверить выполнив команду echo $PATH
и убедиться что в переменной PATH появился добавленный нами путь.
Пробуем запустить эмулятор еще раз.
emulator -avd Pixel3XLAPI30 -writable-system -no-snapshot -nocache
Теперь он должен был успешно запустится.
Активируем доступ на перезапись системных файлов
Из описания флага -writable-system:
-writable-system make system & vendor image writable after ‘adb remount’
делаем вывод что теперь нам нужно выполнить adb remount
. Для этого открываем новое окно терминала и выполняем сначала команду adb root
, что бы adb remount
сработало.
После adb remount
, будет сообщение что эмулятор нужно перезапустить. Сделать это можно командой adb reboot. Но и здесь не все так просто. Очередной подводный камень об который мы разбили еще один ноготь на пальцах ног. Если сделать adb reboot
то все просто напросто зависает НАВСЕГДА. Настолько навсегда, что придется удалять эмулятор и создавать его заново. Интернет и с этим столкнулся и даже баг создали на гуглов. И благо нашлось решение. Чтобы эмулятор не зависал нужно добавить пару команд до adb remount
.
Итак по порядку:
-
Делаем
adb root
-
Теперь делаем
adb shell avbctl disable-verification
-
Если вы вдруг остались в shell то введите
exit
-
Перезагружаем эмулятор
adb reboot
и ждем -
Снова делаем
adb root
-
И вот теперь можно делать
adb remount
Ура! Теперь мы можем записывать файлы в системную папку нашего эмулятора. Можем пушнуть наш отредактированный build.prop файл: adb push build.prop system/
. Сделаем adb reboot
и убеждаемся что ничего не поменялось… Имя модели не изменилось…
Редактируем правильный build.prop
Вернемся к началу и заметим, что значения ro.product.product.name и ro.product.product.model не соответствует тому, что отображается в настройках устройства. Изучив структуру системных папок я заметил, что существует несколько файлов build.prop, которые располагаются в папках: system, system_ext, vendor и product. Эмпирическим методом я скачивал, редактировал и пушил обратно каждый из этих файлов. В конце концов ключевым оказался файл в папке product. Отредактировав его я наконец-то смог изменить название модели эмулятора устройства!
Подводим итоги
Наконец-то я смогу запустить приложение и воспроизвести баг. Подумал я…
Теперь я уперся в то, что запускаю приложение якобы с рутованого девайса (ну да есть такой грешок). И дело даже не в команде adb root
, ведь команда adb unroot
не помогла. Что ж, опускать руки уже поздно, придется что-то придумать.
О том, как я обходил проверку на рутованность устройства я расскажу в следующей своей статье. Немного реверс инжиниринга и даже такая популярная библиотека как RootBeer не проблема.
Данной статьей я стремился собрать как можно больше проблем по этому вопросу и изложить все в форме step-by-step. Спасибо за ваше внимание и очень надеюсь, что статья оказалась полезной!
I have a nexus 6 with version 6.0.1 of android flashed and rooted using Nexus Root toolkit 2.1.4.
I am trying to modify build.prop and doing adb pull/push and even trying to move it to /data/local/tmp and then mv command won’t work.
Mounting /system/ rw results in a boot loop and I have to reflash.
I am unsure on how to enable modification of this file. How can I turn off this «production build» protection on android?
adb shell
shell@shamu:/ $ su
root@shamu:/ # mv /data/local/tmp/build.prop /system/
mv: /system//build.prop: Read-only file system
1|root@shamu:/ # mount -o rw,remount /system
127|root@shamu:/ # mv /data/local/tmp/build.prop /system/
mv: xwrite: No space left on device
1|root@shamu:/ # exit
1|shell@shamu:/ $ exit
adb push build.prop /system/build.prop
failed to copy 'build.prop' to '/system/build.prop': Permission denied
adb shell
shell@shamu:/ $ su
root@shamu:/ # mv /data/build.prop /sy
sys/ system/
root@shamu:/ # mv /data/build.prop /system/build.prop
mv: /system/build.prop: Read-only file system
I’m trying to add this config option to build.prop
net.tethering.noprovisioning=true
The device has plenty of space as it was just freshly rooted and flashed with a brand new stock image.
I have a nexus 6 with version 6.0.1 of android flashed and rooted using Nexus Root toolkit 2.1.4.
I am trying to modify build.prop and doing adb pull/push and even trying to move it to /data/local/tmp and then mv command won’t work.
Mounting /system/ rw results in a boot loop and I have to reflash.
I am unsure on how to enable modification of this file. How can I turn off this «production build» protection on android?
adb shell
shell@shamu:/ $ su
root@shamu:/ # mv /data/local/tmp/build.prop /system/
mv: /system//build.prop: Read-only file system
1|root@shamu:/ # mount -o rw,remount /system
127|root@shamu:/ # mv /data/local/tmp/build.prop /system/
mv: xwrite: No space left on device
1|root@shamu:/ # exit
1|shell@shamu:/ $ exit
adb push build.prop /system/build.prop
failed to copy 'build.prop' to '/system/build.prop': Permission denied
adb shell
shell@shamu:/ $ su
root@shamu:/ # mv /data/build.prop /sy
sys/ system/
root@shamu:/ # mv /data/build.prop /system/build.prop
mv: /system/build.prop: Read-only file system
I’m trying to add this config option to build.prop
net.tethering.noprovisioning=true
The device has plenty of space as it was just freshly rooted and flashed with a brand new stock image.
0 / 0 / 0 Регистрация: 17.07.2015 Сообщений: 9 |
|
1 |
|
27.12.2015, 02:34. Показов 2311. Ответов 5
Всем привет , вы можете мне помочь ?! Я хочу узнать как можно редактировать файл build.prop с ПК , или как решить данную проблему ! Надеюсь на вас!( P.S На всякий случий контакты: skype(filip.rotaru) , vk (danrotaru)
__________________ 0 |
21296 / 12106 / 653 Регистрация: 11.04.2010 Сообщений: 53,466 |
|
27.12.2015, 11:31 |
2 |
прежде чем играться с build.prop, нужно было позаботиться о бакапе… как правило, авторы подобных статей предупреждают о граблях, на которые можно наступить при подобных манипуляциях 0 |
0 / 0 / 0 Регистрация: 17.07.2015 Сообщений: 9 |
|
27.12.2015, 22:10 [ТС] |
3 |
Ну и что мне теперь делать?! 0 |
21296 / 12106 / 653 Регистрация: 11.04.2010 Сообщений: 53,466 |
|
27.12.2015, 23:08 |
4 |
блин, я же написал —
отладка по usb включена? если да то adb в помощь если нет то сброс к заводу, через рекавери стоковый и не факт что поможет 0 |
0 / 0 / 0 Регистрация: 17.07.2015 Сообщений: 9 |
|
30.12.2015, 18:45 [ТС] |
5 |
Где мне найти прошивку для Archos 55 Platinum ? Помогите пожалуйста 0 |
21296 / 12106 / 653 Регистрация: 11.04.2010 Сообщений: 53,466 |
|
30.12.2015, 20:51 |
6 |
на 4pda.ru 0 |
I tried to edit the build.prop after updating to Android 10. My usual method of editor seemed to fail even though I have rooted via Magisk. Anyone else have this issue? I’m using root browser. Just for the hell of it, i also went ahead and download build.prop editor and that also failed as well when I tried to save.
level 1
Try using MagiskHidePropsConfig Module. It can edit the build prop systemlessly through a terminal emulator. Since Magisk is systemless, normal ways of doing root things won’t work sometimes.
level 2
MagiskHidePropsConfig
Didn’t help. The entire /system is loaded as readonly.
edit: NVM. I didn’t read the instruction correctly. It seem to be working.
level 1
I was able to change my device fingerprint fine on beta.
Ask in the XDA thread for the prop editor.
level 2
XDA forum was offline last night. I installed the prop editor and didn’t quite know how to use it.
edit: OK, I already installed MagiskHide Props Config. Didn’t know how to use it last night. Read the instruction and managed to get the configuration line I wanted to add in. I think that’s what’s needed.
level 1
can i do it wo rooting my phone ?
i was able to do it on twrp with mounting system on android 9 but it doesnt work in android 10.
Вот такая проблемка. Я доигрался с системным файлом, и в итоге когда я перезагрузил смарт он застыл во время анимации включения. Сейчас он отключен, как его изменить (build.prop) или исправить ошибку?
P.S. Телефон Alcatel One Touch idol 6030D без гарантии
Последнее изменение: 13 октября 2019, 12:48
Souch, 20 апреля 2014, 18:32 # (…)
Люди, пожалуйста дайте ссылку на Flash Tool
Буду ну ОЧЕНЬ вам благодарен!
Ответить
id116553074, 20 апреля 2014, 18:37 # (…)
Ответить
Souch, 20 апреля 2014, 18:37 # (…)
Спасибо, Тая! Я буду у тебя в долгу!
Ответить
Souch, 21 апреля 2014, 13:05 # (…)
А можно инструкцию для таких чайников как я?
Ответить
id116553074, 21 апреля 2014, 14:41 # (…)
Распаковываем прошивку и SP flash tool
— Открываем SP flash tool от имени администратора. И выбираем в нем scatter-loading на MT6589_Android_scatter_emmc.txt(находится в папке с прошивкой
— Все должно быть как на картинке
-Вытаскиваем аккумулятор и USB шнур.
— Нажимаем firmware->upgrate.
— Теперь вставляем USB шнур, после чего вставляем и аккумулятор!
— Пойдут разноцветные полоски. В конце будет зеленый кружок.
Ответить
cany748, 21 апреля 2014, 14:59 # (…)
И зачем все перепрошивать если можно просто востановить build. prop???
Ответить
id116553074, 21 апреля 2014, 15:36 # (…)
У него нет бекапа и тел не включается и рекавери тач не поддерживает.
Ответить
cany748, 21 апреля 2014, 15:47 # (…)
Прошить рекавери на любое которое поддерживает монтирование и поставить и выташить из прошивки. Еще можно на 4pda попросить скинуть бэкап, там точно помогут
Ответить
id116553074, 21 апреля 2014, 15:49 # (…)
Он не сможет управлять Aroma File Manager, т.к его рекавери тач не поддерживает.
Ответить
cany748, 21 апреля 2014, 15:51 # (…)
А зачем тач???
Ответить
cany748, 21 апреля 2014, 15:52 # (…)
TWRP тач поддерживает
Ответить
id116553074, 21 апреля 2014, 15:57 # (…)
Этот файловый менеджер нормально управляется только с рекавери, которое поддерживает тач.
Ответить
cany748, 21 апреля 2014, 16:01 # (…)
Зачем файл менеджер?? Самый простой способ попросить на 4pda бекап. А еще можно вырвать из прошивки build.prop, через TWRP положить куда надо
Ответить
cany748, 21 апреля 2014, 16:01 # (…)
Но наверно он все это не поймет
Ответить
id116553074, 21 апреля 2014, 16:05 # (…)
У него CWM…
Ответить
cany748, 21 апреля 2014, 16:07 # (…)
Что мешает прошить TWRP???
Ответить
id116553074, 21 апреля 2014, 16:10 # (…)
То, что тогда уж легче прошить все через Flash Tool.
Ответить
cany748, 21 апреля 2014, 16:14 # (…)
Легче, но все снесется
Ответить
basangubushiev, 9 июня 2015, 06:46 # (…)
Всмысле данные?
Ответить
Sankassc4, 27 сентября 2018, 16:32 # (…)
так данные сносятся когда ты бутлодер разблокируешь (на huawei точно)
Ответить
ShomaVlad2005, 19 июня 2019, 11:33 # (…)
А как можно с пк перекинуть прошивку на телефон который после build.prop не включается?
Ответить
slim123, 11 октября 2015, 12:25 # (…)
а у меня такой вопрос, я исправил в bulid sdk на другую цыфру и девайс не грузится бекап вроде был самого булида, но прошивкина девайс не где вообще нету таккак китайский качественный клон довольно мощный, получился почти кирпичь разве что значок андройда весит на 4пда не помогли
можно ли както подругому через комп залесть в это булид и исправить его обратно ??
Ответить
Souch, 21 апреля 2014, 16:00 # (…)
Не получилось. Выбрал файл, все галочки жмякнул, нажал на firmware upgrate, потом выскочила какая-то фигня, но разноцветные полоски не идут
Ответить
cany748, 21 апреля 2014, 16:01 # (…)
Драйвера установи
Ответить
Souch, 21 апреля 2014, 16:04 # (…)
Окей, сейчас на 4пда поищу
Ответить
Souch, 21 апреля 2014, 16:05 # (…)
Вот нашел дрова. Как их установить?
Ответить
cany748, 21 апреля 2014, 16:06 # (…)
Везде по разному, у меня был установщик
Ответить
id116553074, 21 апреля 2014, 16:06 # (…)
Распакуй их, если в архиве, и выбери файл install.
Ответить
cany748, 21 апреля 2014, 16:05 # (…)
Лучше попроси в теме про твой девайс бэкап build.prop они тебе точно помогут.
Ответить
id116553074, 21 апреля 2014, 16:04 # (…)
brown772omar, 28 декабря 2017, 20:15 # (…)
А что делать с зелёным кружочком?
Ответить
ShomaVlad2005, 19 июня 2019, 11:30 # (…)
Можешь помочь пожалуйста
Редачил в build.prop, поменял всю информацию на samsung s9, перезагружаю телефон и он не включается, как мне вернуть мой кирпич к жизни ?
Если что телефон Samsung A3 2016 ( SM — A310F ), заранее благодарен!
Ответить
DEN_GAMER, 19 июня 2019, 13:10 # (…)
Перепрошив о4ька
Ответить
hacker502, 19 июня 2019, 17:46 # (…)
Не надо было все менять, вероятно, ты изменил строки, отвечающие за идентификацию прошивки.
Ответить
A-l-i-k_Pro, 20 апреля 2014, 18:32 # (…)
Ээээ я тоже самое сделал файл создал и приложение скачал что мне теперь не перезагружать смартфон.
Ответить
hjklz, 18 июня 2014, 21:23 # (…)
Либо перепрошиться, либо хард ресет
Ответить
Souch, 19 июня 2014, 07:19 # (…)
Хард ресет не помог.
Ответить
_-A-Za-zA-_, 19 июня 2014, 05:46 # (…)
Wipe data, или прошивка как описано выше через Flashtool
Ответить
id30640678, 5 мая 2015, 01:35 # (…)
доигрался с build.prop теперь телефон дальше заставки MIUI 6 не загружаеться, бэкап файла есть рековери не заходит.Можно восстоновить с помощью ПК что-бы не прошиваться?
Ответить
Haifisch14, 9 июня 2015, 08:43 # (…)
Нет
Ответить
ARM_v6, 9 июня 2015, 08:54 # (…)
Топика больше года.
Ответить
Haifisch14, 9 июня 2015, 10:17 # (…)
Лол, не увидел
Че он тогда сверху висит на форуме
Ответить
ARM_v6, 9 июня 2015, 11:27 # (…)
Значит ид *много цифер написал* написал
Ответить
TARANS_, 11 октября 2015, 12:57 # (…)
Rolex, 12 июля 2017, 17:36 # (…)
Я доигрался с build.prop я изменил только это на
ro.product.model=Nexus S
ro.product.brand=Samsung
ro.product.name=Samsung
ro.product.device=SamsungИ забыл за скринить свое
Телефон Samsung galaxy S2 plus GT-I9105 что мне делать??? Подскажите пожалуйста.… у меня камера перестала работать и недавно плей маркет стал не поддерживатся Подскажите(
Ответить
DEN_GAMER, 13 июля 2017, 22:18 # (…)
Может потому что твой телефон уже старый
Ответить
flopberry, 14 июля 2017, 23:04 # (…)
прошей просто свою прошивку… данные не слетят, только рут
Ответить
semyon1, 19 сентября 2017, 23:57 # (…)
Тоесть если я перепрошью мобилу файл билд.проп восстановится? Если так то спасибо огромное. 3 дня не мог найти решение, а сейчас просто в гугле забил че делать если билд.проп капут и всё. Не думал что все так просто.
Ответить
Android_gamer, 28 января 2018, 12:04 # (…)
А можно ли вот это всё поручить холопу из сервиса? Лень возиться.
Ответить
Dimka704, 25 декабря 2018, 18:05 # (…)
Телефон samsung s7562 накосячил в build.prop изменил версию андроид из 4.0.3 na 6.0.0? и sdk=16>на24 и теперь 97% программ не запускаются и root проводники тоже не запускаются что делать??
Ответить
QPoint, 13 октября 2019, 12:48 # (…)
Полное форматирование и прошивка, и в build.prop не лезь, если не знаешь, что делаешь.
Ответить
Добавить комментарий
Если нужно ответить кому-то конкретно,
лучше нажать на «Ответить» под его комментарием
Недавно я основал свой Droid X, и все, кажется, работает отлично. Я внес некоторые изменения в build.prop
, и когда я делаю adb push build.prop /system/
, я получаю следующую ошибку: failed to copy 'c:build.prop' to '/system//build.prop': Read-only file system
.
Как я могу это исправить?
Ответ 1
Получил это от форума Android, на котором я задал тот же вопрос. Надеюсь, это поможет кому-то еще.
В терминальном эмуляторе по телефону:
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
Затем в командной строке введите adb push
Ответ 2
Не все телефоны и версии Android имеют все то же самое.
Ограничение параметров при пересоединении было бы лучше.
Просто перемонтируйте как rw (Чтение/Запись):
# mount -o rw,remount /system
Как только вы закончите внесение изменений, перемонтируйте ro (только для чтения):
# mount -o ro,remount /system
Ответ 3
adb remount
работает для меня и, кажется, является самым простым решением.
Ответ 4
Пока я знаю, что вопрос касается реального устройства, если кто-то попал сюда с подобной проблемой в эмуляторе, с любыми инструментами, имеющими последнее значение с февраля 2017 года, эмулятор должен быть запущен из командной строки с помощью
-writable-system
Чтобы что-либо было доступно для записи в /system
. Без этого флага никакая комбинация remount
или mount
не позволяет записать на /system
.
После запуска эмулятора с этим флагом, один adb remount
после adb root
достаточно, чтобы получить разрешения для нажатия на /system
.
Вот пример командной строки, которую я использую для запуска моего эмулятора:
./emulator -writable-system -avd Nexus_5_API_25 -no-snapshot-load -qemu
Значение для флагов -avd
происходит от:
./emulator -list-avds
Ответ 5
Я думаю, что самый безопасный способ — перемонтировать /system как read-write, используя:
mount -o remount,rw /system
и, когда это будет сделано, перемонтируйте его как только для чтения:
mount -o remount,ro /system
Ответ 6
На моей галактике Samsung mini S5570 (после того, как он получил корень на сотовом телефоне):
Кулак, как root, я побежал:
systemctl start adb
как обычный пользователь:
adb shell
su
Предоставить права доступа root на сенсорном экране
mount
укажите все точки монтирования, которые у нас есть, и мы можем видеть, в моем случае, что /dev/stl 12 был установлен в /system как ro (только готовый), поэтому нам просто нужно:
mount -o rw,remount /dev/stl12 /system
Ответ 7
В командной строке выполните следующие действия:
>adb remount
>adb push framework-res_old.apk /system/framework-res.apk
Ответ 8
Вот что сработало для меня. Я запускал эмулятор Android 7.1.1 (нуга).
На терминале я нахожу следующую команду. Одна вещь, которую нужно заметить, — это флаг -writable-system
./emulator -writable-system -avd Nexus_6_API_25 -partition-size 280
На другой вкладке
./adb shell
su
mount -o rw,remount -t ext4 /dev/block/vda /system
Все изменения, внесенные в/содержимое системы, сохранятся при перезапуске.
Ответ 9
adb disable-verity
adb reboot
adb root
adb remount
Это работает для меня и является самым простым решением.
Ответ 10
Открыть эмулятор терминала на телефоне:
затем
adb shell
после запуска этого демона
su
mount -o rw,remount /mnt/sdcard
тогда чтение только преобразуется в read-Write.
Ответ 11
mount -o rw,remount /dev/stl12 /system
работает для меня
Ответ 12
Я нашел эту статью из Google и подумал, что добавлю шаги, необходимые для Sony Xperia Z (4.2.2).
В Sony есть сторожевой процесс, который обнаруживает, когда вы изменили ro на rw в/и/system (это единственные, которые я пытался изменить) и, возможно, другие.
Следующее было тем, что я выполнял для выполнения изменений, которые я пытался достичь. Я вложил их в окно, потому что удаление бит выполнения из /sbin/ric необходимо выполнить быстро, чтобы остановить его перезапуск. (Я пробовал stop ric
, это не сработало — хотя он работал над предыдущей версией Android на телефоне).
pkill -9 ric; mount -o rw,remount -t rootfs /
chmod 640 /sbin/ric
mount -o rw,remount /system
Я изменил здесь файл hosts, так что это место, где вы вносите необходимые изменения в файловую систему. Чтобы оставить вещи так, как мы их нашли, сделайте следующее:
mount -o ro,remount /system
chmod 750 /sbin/ric
mount -o ro,remount -t rootfs /
В какой момент ric должен автоматически перезагрузиться. (Он автоматически перезагрузился для меня.)
Ответ 13
Добавляя немного больше ответа Янга Бергстрема: потому что Android — это система на базе Linux, а в Linux в Linux содержатся косые черты (../) при использовании команды push, используйте «/» для определения пути назначения в Android-устройство.
Например, команда: adb push C:UsersadminDesktop1.JPG sdcard/pictures/
Обратите внимание, что здесь обратные косые черты используются для определения пути к исходному файлу файла, который должен быть вытолкнут с Windows PC, и косые черты используются для определения пути назначения, потому что Android — это система на основе Linux. Вам не нужно действовать как root, чтобы использовать эту команду, а также отлично работает на производственных устройствах.
Ответ 14
Иногда вы получаете ошибку, потому что место назначения в телефоне не существует. Например, какое-то местоположение внешнего хранилища телефона Android < <20 > вместо /storage/emulated/0
.
Ответ 15
Спасибо, Sérgio, для команды «mount» без параметров.
Мне нужно сделать adb push
в /data/data/com.my.app/lib
для некоторой проблемы с тестированием и получить сообщение «Только для чтения».
Команда
ls показывает мне:
[email protected]:/ # ls -l /data/data/com.my.app/
drwxrwx--x u0_a98 u0_a98 2016-05-06 09:16 cache
drwxrwx--x u0_a98 u0_a98 2016-05-06 09:04 files
lrwxrwxrwx system system 2016-05-06 11:43 lib -> /mnt/asec/com.my.app-1/lib
Итак, он понял, что каталог «lib» отделен от других каталогов приложений.
Command
mount -o rw,remount /mnt/asec
не решила проблему «r/o fs», она хочет параметр устройства перед параметром каталога.
Команда
«df» также не помогла, но показывает, что мой каталог /mnt/asec/com.my.app-1
находится в отдельной точке монтирования.
Затем я смотрю на mount
и voila!
[email protected]:/ # mount
.........
/dev/block/dm-4 /mnt/asec/com.my.app-1 ext4 ro,dirsync,relatime 0 0
Следующие шаги уже описаны вверх: перемонтируйте RW, нажмите и верните обратно в RO.
Ответ 16
it sames, который должен извлечь и переупаковать initrc.img и отредактировать файл init
с кодом mount/system
Ответ 17
This worked for me
#Mount as ReadOnly
su -c "mount -o rw,remount /system"
# Change Permission for file
su -c "chmod 777 /system/build.prop"
#Edit the file to add the property
su -c "busybox vi /system/build.prop"
# Add now
service.adb.tcp.port=5678
# Reset old permissions
su -c "chmod 644 /system/build.prop"
# Mount as readonly again once done
su -c "mount -o ro,remount /system"
Ответ 18
В моем случае я использовал команду adb push ~/Desktop/file.txt ~/sdcard/
Я изменил его на ~/Desktop/file.txt/sdcard/
а затем он сработал.
Обязательно отключите и снова подключите телефон.
Ответ 19
Если произошел сбой при копировании файла, доступного только для чтения, вы можете попробовать найти исходный файл в корневом каталоге и изменить его с помощью текстового редактора корневого текста (желательно) RB, он поставляется с приложением ROM Toolbox.
Ответ 20
Попробуйте это в терминальном эмуляторе как root:
restorecon -v -R /data/media
Ответ 21
Скопировать файлы на SD-карту?
Ну, я полагаю, вам нравится копировать данные на Sd-карту с компьютера разработчиков? Возможно, вы укоренились в разработке и сделали доступную область доступной?) У меня была проблема с загрузкой файлов данных для моего приложения (Android Studio 1.3.2 в Win7), но.
- Сначала команда-команда adb должна быть найдена в пути:
PATH =% PATH%; C:UsersXXXXXAppDataLocalAndroidsdkplatform-tools (папка AppData скрыта, поэтому вам нужно установить настройку папки, не скрывая скрытые файлы и папку, чтобы найти ее, Path работает независимо) - Вам нужно указать путь к папке вправо или получить сообщение об ошибке только для чтения, скорее всего, оно должно начинаться с /sdcard или это область только для чтения. Как только я не сделал никаких проблем, нажав файл на эмулятор.
Итак, например, команда adb может выглядеть так:
adb push C:testdatat.txt/sdcard/download/t.txt
Из песочницы, Разработка мобильных приложений, Flutter, Реверс-инжиниринг, Разработка под Android, Тестирование мобильных приложений
Рекомендация: подборка платных и бесплатных курсов создания сайтов — https://katalog-kursov.ru/
Пролог
Казалось бы, на первый взгляд весьма простая задача. Некоторые читатели могли еще в те бородатые времена лазить по всяким 4пда, рутить свой сенсорный самсунг, менять содержимое файла build.prop и показывать наивным ламерам свой iPhone 15+ Max Pro. Однако, как оказалось, и как оно часто бывает, не все так просто и здесь есть свои подводные камни. Статья призвана помочь простым работягам избежать все кочки да ямы на пути к своей цели!
Дисклеймер
Сразу предупрежу, что люблю писать подобные статьи довольно подробно, не ради объема и многобукав, а ради максимального погружения в проблему и способ ее решения. Обратите внимание, что я работаю на macOS, поэтому все команды в терминале будут ориентированы под данную ОС. Также, следует отметить, что проворачиваю все это для API 30, то есть для самого последнего на момент написания статьи. Как говорят интернеты, сложности по этой теме начались с API 29.
Зачем это нужно?
Предполагаю, что у вас, дорогой читатель, есть на это своя веская причина, иначе не стали бы вы этим заниматься. Наиболее вероятно, что у вас, как и у меня есть программная проверка на модель устройства с которого запущено приложение, примерно как здесь. К слову, таким образом можно будет проверять результат наших трудов. Второй же, и более простой способ проверки модели эмулятора будет через настройки девайса в разделе сведений об устройстве:
Ради контекста вкратце расскажу зачем это понадобилось мне. Я получил .apk с багом где-то внутри приложения. Однако пройти дальше первого экрана в этом приложении я не смог. Дело в том, что при запуске, с сервера приходит список разрешенных для запуска устройств и ни мой народный Ксяоми, ни мой эмулятор в этот список не входит. Вот и додумался поменять имя модели устройства на одно из разрешенных. Рутить свой личный телефон не хотелось, поэтому решил шаманить с эмулятором.
Достаем build.prop
Как уже говорилось в начале статьи, за имя производителя и модель устройства отвечает системный файл build.prop, который находится в корне устройства в папке system/. Однако при попытке просмотреть его, не говоря уже о редактировании, мы получим отказ в доступе:
Для решения этой проблемы необходимо в терминале обратиться к adb и запросить root права следующей командой: adb root
. И вот и первый подводный камень, а именно вывод следующего сообщения: adbd cannot run as root in production builds
. Это из-за того что при создании эмулятора мы выбрали вариант с установленными Google сервисами:
Простое решение — создать эмулятор без установленных Google сервисов, после чего повторить команду adb root
. После чего в консоли должно появиться сообщение: restarting adbd as root
что говорит об успешном проведении операции. Естественно если с самого начала у вас был эмулятор без Google сервисов, то скорее всего с adb root
и выше описанной проблемой вы не столкнулись.
Отлично, теперь мы видим содержимое файла 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
Вот здесь и начинается самое интересное! По умолчанию эмулятор запускается в режиме чтения системных файлов, без возможности делать записи. Следовательно, что либо поменять без прав на запись у нас не выйдет. Для этого нам необходимо запустить эмулятор в ручном режиме с доступом на запись системных файлов.
Запускаем эмулятор с доступом на перезапись системных файлов
Для этого нужно выполнить следующую команду в терминале (чтобы скорее всего получить еще одну ошибку):
emulator -avd Pixel3XLAPI30 -writable-system -no-snapshot -nocache
итак здесь Pixel3XLAPI30 — это название нашего эмулятора который мы будем запускать в режиме записи, получить это имя можно выполнив команду emulator -list-avds
-writable-system — собственно тот самый флаг и виновник торжества.
-no-snapshot -nocache — просто советую ввести чтобы избавиться от любого возможного мусора, который может помешать нашему плану-капкану.
После у нас либо запустится эмулятор (несколько секунд запускается, так что если тупит то так и должно быть) либо получаем ошибку следующего типа:
PANIC: Missing emulator engine program for 'x86' CPU.
БЕЗ ПАНИКИ! Не удивительно, что интернет уже решал подобную проблему.
Что бы и нам решить с этим нужно в файле .bash-profile (или если у вас zsh то в файле .zshenv) находящийся в корне вашего профиля macOS, добавить дополнительные пути. Вот как это выглядит у меня:
export ANDROIDHOME=~/Library/Android/sdk
есть такая переменная ANDROIDHOME и с ее участием редактируем переменную PATH:
export PATH=$ANDROIDHOME/emulator:$ANDROIDHOME/tools:$PATH
Чтобы изменения вступили в силу перезапускаем терминал (или вводим source ~/.bash_profile
) (или source ~/.zshenv
). Результат можно проверить выполнив команду echo $PATH
и убедиться что в переменной PATH появился добавленный нами путь.
Пробуем запустить эмулятор еще раз.
emulator -avd Pixel3XLAPI30 -writable-system -no-snapshot -nocache
Теперь он должен был успешно запустится.
Активируем доступ на перезапись системных файлов
Из описания флага -writable-system:
-writable-system make system & vendor image writable after ‘adb remount’
делаем вывод что теперь нам нужно выполнить adb remount
. Для этого открываем новое окно терминала и выполняем сначала команду adb root
, что бы adb remount
сработало.
После adb remount
, будет сообщение что эмулятор нужно перезапустить. Сделать это можно командой adb reboot. Но и здесь не все так просто. Очередной подводный камень об который мы разбили еще один ноготь на пальцах ног. Если сделать adb reboot
то все просто напросто зависает НАВСЕГДА. Настолько навсегда, что придется удалять эмулятор и создавать его заново. Интернет и с этим столкнулся и даже баг создали на гуглов. И благо нашлось решение. Чтобы эмулятор не зависал нужно добавить пару команд до adb remount
.
Итак по порядку:
-
Делаем
adb root
-
Теперь делаем
adb shell avbctl disable-verification
-
Если вы вдруг остались в shell то введите
exit
-
Перезагружаем эмулятор
adb reboot
и ждем -
Снова делаем
adb root
-
И вот теперь можно делать
adb remount
Ура! Теперь мы можем записывать файлы в системную папку нашего эмулятора. Можем пушнуть наш отредактированный build.prop файл: adb push build.prop system/
. Сделаем adb reboot
и убеждаемся что ничего не поменялось… Имя модели не изменилось…
Редактируем правильный build.prop
Вернемся к началу и заметим, что значения ro.product.product.name и ro.product.product.model не соответствует тому, что отображается в настройках устройства. Изучив структуру системных папок я заметил, что существует несколько файлов build.prop, которые располагаются в папках: system, system_ext, vendor и product. Эмпирическим методом я скачивал, редактировал и пушил обратно каждый из этих файлов. В конце концов ключевым оказался файл в папке product. Отредактировав его я наконец-то смог изменить название модели эмулятора устройства!
Подводим итоги
Наконец-то я смогу запустить приложение и воспроизвести баг. Подумал я…
Теперь я уперся в то, что запускаю приложение якобы с рутованого девайса (ну да есть такой грешок). И дело даже не в команде adb root
, ведь команда adb unroot
не помогла. Что ж, опускать руки уже поздно, придется что-то придумать.
О том, как я обходил проверку на рутованность устройства я расскажу в следующей своей статье. Немного реверс инжиниринга и даже такая популярная библиотека как RootBeer не проблема.
Данной статьей я стремился собрать как можно больше проблем по этому вопросу и изложить все в форме step-by-step. Спасибо за ваше внимание и очень надеюсь, что статья оказалась полезной!
I am trying to edit the lcd density in build.prop in /system but every time after reboot my changes are lost..
I tried to adb pull + edit + adb push in normal and recovery mode..
also i tried fileexpert and super manager but nothing worked.
I heard many people saying about root explorer but its not free.. I want to be sure if my problem will be solved with root explorer then i will buy it..
Please help me out guys..
I am using android 2.3.3 on HTC HD2. My Rom is custom one (HyperDroidGBX-v12)
Izzy♦
90.3k71 gold badges338 silver badges931 bronze badges
asked Apr 28, 2011 at 14:05
Answering my own question as found the solution.
We can edit build.prop from mobile. I downloaded ES file explorer which is free. then from optin set «root explorer» and set «mount system as read/write»
Now edit build.prop and save it using ES file explorer’s editor then uncheck «root explorer» and «mount system as read/write» for safety..
hope it wil help someone
answered Apr 29, 2011 at 15:18
swdswd
1291 gold badge2 silver badges8 bronze badges
1
Root Explorer won’t solve your problem any more than adb, although it’s a great app.
First, I’d try making sure you remount /system
as read-only after you push the modified file. If that doesn’t work I would assume your bootloader is checking the file and replacing it when it doesn’t match what it should be. To help you further, I think we need to know what phone you have; please add that to the question. Your version of Android, name of your ROM if it’s custom, etc. will also be useful.
answered Apr 28, 2011 at 14:38
Matthew ReadMatthew Read
50.5k29 gold badges143 silver badges272 bronze badges
0
You could also use TWRP
Reboot to recovery (TWRP)
Click Mount
Deselect mount system partition as read-only
Done
answered Feb 18, 2020 at 8:45
You must log in to answer this question.
Not the answer you’re looking for? Browse other questions tagged
.
Not the answer you’re looking for? Browse other questions tagged
.
Trying to edit build.prop on a rooted nexus 4, getting «file could not be saved»
I am on a rooted Nexus 4. I am trying to edit my build.prop file.
However, each time I try to save it I am getting «file could not be saved».
I tried making system writeable using «Mount /system (rw / ro)», but still get the same error.
Is there anything I need to do to change settings so that it would work?
Thank you!
Пролог
Казалось бы, на первый взгляд весьма простая задача. Некоторые читатели могли еще в те бородатые времена лазить по всяким 4пда, рутить свой сенсорный самсунг, менять содержимое файла build.prop и показывать наивным ламерам свой iPhone 15+ Max Pro. Однако, как оказалось, и как оно часто бывает, не все так просто и здесь есть свои подводные камни. Статья призвана помочь простым работягам избежать все кочки да ямы на пути к своей цели!
Дисклеймер
Сразу предупрежу, что люблю писать подобные статьи довольно подробно, не ради объема и многобукав, а ради максимального погружения в проблему и способ ее решения. Обратите внимание, что я работаю на macOS, поэтому все команды в терминале будут ориентированы под данную ОС. Также, следует отметить, что проворачиваю все это для API 30, то есть для самого последнего на момент написания статьи. Как говорят интернеты, сложности по этой теме начались с API 29.
Зачем это нужно?
Предполагаю, что у вас, дорогой читатель, есть на это своя веская причина, иначе не стали бы вы этим заниматься. Наиболее вероятно, что у вас, как и у меня есть программная проверка на модель устройства с которого запущено приложение, примерно как здесь. К слову, таким образом можно будет проверять результат наших трудов. Второй же, и более простой способ проверки модели эмулятора будет через настройки девайса в разделе сведений об устройстве:
Ради контекста вкратце расскажу зачем это понадобилось мне. Я получил .apk с багом где-то внутри приложения. Однако пройти дальше первого экрана в этом приложении я не смог. Дело в том, что при запуске, с сервера приходит список разрешенных для запуска устройств и ни мой народный Ксяоми, ни мой эмулятор в этот список не входит. Вот и додумался поменять имя модели устройства на одно из разрешенных. Рутить свой личный телефон не хотелось, поэтому решил шаманить с эмулятором.
Достаем build.prop
Как уже говорилось в начале статьи, за имя производителя и модель устройства отвечает системный файл build.prop, который находится в корне устройства в папке system/. Однако при попытке просмотреть его, не говоря уже о редактировании, мы получим отказ в доступе:
Для решения этой проблемы необходимо в терминале обратиться к adb и запросить root права следующей командой: adb root
. И вот и первый подводный камень, а именно вывод следующего сообщения: adbd cannot run as root in production builds
. Это из-за того что при создании эмулятора мы выбрали вариант с установленными Google сервисами:
Простое решение — создать эмулятор без установленных Google сервисов, после чего повторить команду adb root
. После чего в консоли должно появиться сообщение: restarting adbd as root
что говорит об успешном проведении операции. Естественно если с самого начала у вас был эмулятор без Google сервисов, то скорее всего с adb root
и выше описанной проблемой вы не столкнулись.
Отлично, теперь мы видим содержимое файла 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
Вот здесь и начинается самое интересное! По умолчанию эмулятор запускается в режиме чтения системных файлов, без возможности делать записи. Следовательно, что либо поменять без прав на запись у нас не выйдет. Для этого нам необходимо запустить эмулятор в ручном режиме с доступом на запись системных файлов.
Запускаем эмулятор с доступом на перезапись системных файлов
Для этого нужно выполнить следующую команду в терминале (чтобы скорее всего получить еще одну ошибку):
emulator -avd Pixel3XLAPI30 -writable-system -no-snapshot -nocache
итак здесь Pixel3XLAPI30 — это название нашего эмулятора который мы будем запускать в режиме записи, получить это имя можно выполнив команду emulator -list-avds
-writable-system — собственно тот самый флаг и виновник торжества.
-no-snapshot -nocache — просто советую ввести чтобы избавиться от любого возможного мусора, который может помешать нашему плану-капкану.
После у нас либо запустится эмулятор (несколько секунд запускается, так что если тупит то так и должно быть) либо получаем ошибку следующего типа:
PANIC: Missing emulator engine program for 'x86' CPU.
БЕЗ ПАНИКИ! Не удивительно, что интернет уже решал подобную проблему.
Что бы и нам решить с этим нужно в файле .bash-profile (или если у вас zsh то в файле .zshenv) находящийся в корне вашего профиля macOS, добавить дополнительные пути. Вот как это выглядит у меня:
export ANDROIDHOME=~/Library/Android/sdk
есть такая переменная ANDROIDHOME и с ее участием редактируем переменную PATH:
export PATH=$ANDROIDHOME/emulator:$ANDROIDHOME/tools:$PATH
Чтобы изменения вступили в силу перезапускаем терминал (или вводим source ~/.bash_profile
) (или source ~/.zshenv
). Результат можно проверить выполнив команду echo $PATH
и убедиться что в переменной PATH появился добавленный нами путь.
Пробуем запустить эмулятор еще раз.
emulator -avd Pixel3XLAPI30 -writable-system -no-snapshot -nocache
Теперь он должен был успешно запустится.
Активируем доступ на перезапись системных файлов
Из описания флага -writable-system:
-writable-system make system & vendor image writable after ‘adb remount’
делаем вывод что теперь нам нужно выполнить adb remount
. Для этого открываем новое окно терминала и выполняем сначала команду adb root
, что бы adb remount
сработало.
После adb remount
, будет сообщение что эмулятор нужно перезапустить. Сделать это можно командой adb reboot. Но и здесь не все так просто. Очередной подводный камень об который мы разбили еще один ноготь на пальцах ног. Если сделать adb reboot
то все просто напросто зависает НАВСЕГДА. Настолько навсегда, что придется удалять эмулятор и создавать его заново. Интернет и с этим столкнулся и даже баг создали на гуглов. И благо нашлось решение. Чтобы эмулятор не зависал нужно добавить пару команд до adb remount
.
Итак по порядку:
-
Делаем
adb root
-
Теперь делаем
adb shell avbctl disable-verification
-
Если вы вдруг остались в shell то введите
exit
-
Перезагружаем эмулятор
adb reboot
и ждем -
Снова делаем
adb root
-
И вот теперь можно делать
adb remount
Ура! Теперь мы можем записывать файлы в системную папку нашего эмулятора. Можем пушнуть наш отредактированный build.prop файл: adb push build.prop system/
. Сделаем adb reboot
и убеждаемся что ничего не поменялось… Имя модели не изменилось…
Редактируем правильный build.prop
Вернемся к началу и заметим, что значения ro.product.product.name и ro.product.product.model не соответствует тому, что отображается в настройках устройства. Изучив структуру системных папок я заметил, что существует несколько файлов build.prop, которые располагаются в папках: system, system_ext, vendor и product. Эмпирическим методом я скачивал, редактировал и пушил обратно каждый из этих файлов. В конце концов ключевым оказался файл в папке product. Отредактировав его я наконец-то смог изменить название модели эмулятора устройства!
Подводим итоги
Наконец-то я смогу запустить приложение и воспроизвести баг. Подумал я…
Теперь я уперся в то, что запускаю приложение якобы с рутованого девайса (ну да есть такой грешок). И дело даже не в команде adb root
, ведь команда adb unroot
не помогла. Что ж, опускать руки уже поздно, придется что-то придумать.
О том, как я обходил проверку на рутованность устройства я расскажу в следующей своей статье. Немного реверс инжиниринга и даже такая популярная библиотека как RootBeer не проблема.
Данной статьей я стремился собрать как можно больше проблем по этому вопросу и изложить все в форме step-by-step. Спасибо за ваше внимание и очень надеюсь, что статья оказалась полезной!
При попытке установить какое-либо мобильное приложение через «Плей Маркет» пользователь может столкнуться с ошибкой установки 504. Данная ошибка имеет одиозную славу и известна множеству пользователей по всему миру. Избавиться от неё довольно сложно, и подчас всё, что остаётся таким пользователям – это попытаться перепрошить устройство или отправить его на заслуженный отдых. Давайте разберёмся, в чём суть ошибки 504 при инсталляции приложений на ОС Андроид, и как её исправить.
Содержание
- Что означает ошибка 504 на Андроид?
- Редактирование файла build.prop для устранения ошибки 504
- Удаление папки appnamespace
- Переустановка Гугл-аккаунта на Андроид для сброса ошибки 504
- Использование VPN
- Установка автоматической даты и времени
- Увеличение количества свободного места
- Сброс настроек телефона до заводских
- Заключение
Что означает ошибка 504 на Андроид?
Технически ошибка 504 в Google Play является ошибкой тайм-аута шлюза. Обычно она связана с медленным интернет-соединением. Это относится как к стационарному вай-фай, так и мобильному интернету.
Тем не менее статистически ошибку 504 наиболее часто можно встретить на Андроид 5.0 Lollipop. В версии указанной ОС «developer preview» имеется баг, напрямую ответственный в появлении ошибки 504 при установке приложений на Android. Данный баг связан с АРТ оптимизацией на устройстве, и именно он выступает непосредственной причиной ошибки.
Другими причинами, способными вызывать ошибку 504, являются следующие:
- незавершённый загрузочный или установочный процесс, прерванный вследствие различных факторов;
- медленное интернет-соединение или ошибки в работе сети (особенно в случае мобильного Интернета);
- конфликт данных;
- недостаток памяти на устройстве;
- неправильно установленные на устройстве дата и время;
- ошибки в кэше ряда мобильных приложений;
- некорректная работа карты памяти, установленной на устройстве.
Для решения ошибки 504 на Андроиде при установке программ и приложений существует общеизвестный пул советов, обычно никак не решающий проблему. Тем не менее есть несколько способов, которые доказали эффективность у многих пользователей. Рассмотрим их по порядку.
Читайте также: В приложении Nox Launcher произошла ошибка — что делать.
Редактирование файла build.prop для устранения ошибки 504
Поскольку упомянутый баг напрямую связан с АРТ оптимизацией, вам необходимо отключить эту функцию на вашем девайсе. Для этого понадобится получить root-права, позволяющие выполнить указанную операцию. Без рут-прав устранить ошибку 504 на Андроиде с помощью данного способа будет невозможно.
Выполните следующее:
- Убедитесь, что вы имеете root-права для вашего устройства. При необходимости получите указанные права с помощью программ «KingRoot», «Framaroot» и других аналогов.
- Запустите любой проводник, который умеет работать с рут-правами (к примеру, ES File Explorer File Manager).
- С его помощью найдите на вашем устройстве файл build.prop (обычно находится в корне файловой системы) и откройте его для редактирования.
Отредактируйте файл build.prop - В нём поищите следующие строчки:и замените их на:
dalvik.vm.dex2oat-filter=interpret-only
dalvik.vm.image-dex2oat-filter=speedЕсли первоначальных двух строчек нет, тогда просто допишите в самый конец файла строки:
dalvik.vm.dex2oat-filter=interpret-only
dalvik.vm.image-dex2oat-filter=speed -
Сохраните изменённый вами файл build.prop.
- Перезагрузите устройство и попытайтесь вновь скачать нужную программу с Плей Маркет.
Во многих случаях после этого ошибка 504, возникающая на OS Android при установке приложений, бывает решена.
Удаление папки appnamespace
Другим эффективным способом исправить ошибку 504 является удаление папки appnamespace.
Для этого нужно:
- Перейти по пути: /data/data/appnamespace.
- Удалить папку appnamespace.
- Перезагрузить устройство.
Часто данный способ работает вместе со способом переустановки пользовательского аккаунта в Гугл, который мы рассмотрим ниже.
Переустановка Гугл-аккаунта на Андроид для сброса ошибки 504
Для этого необходимо выполнить следующие действия:
- Перейдите в настройки вашего аппарата. Здесь найдите «Учётные записи» (Accounts) – Google.
- Тапните на вашу учётную запись в Гугл, и выберите «Удалить учётную запись».
- Теперь перейдите в «Приложения» – «Все».
- Найдите приложения «Google Play Маркет», «Google Service Framework», а также «Download Manager». Зайдя в каждое из указанный приложений, нажмите «Принудительно остановить», «Очистить данные» и «Очистить кэш».
- Теперь вновь перейдите в «Настройки» – «Учётные записи» – «Google».
- Добавьте ваш Gmail аккаунт.
- Перезагрузите устройство. Запустите «Плей Маркет» и установите (обновите) необходимое вам приложение.
Использование VPN
Неплохие результаты в обходе ошибки 504 на Андроиде при установке приложений показало использование ВПН.
Для этого необходимо:
- Если позволяет «Плей Маркет», скачайте и установите ВПН-программу (к примеру, «VPN») на ваше устройство.
- Запустите приложение, выберите альтернативную к России страну (например, USA) и нажмите на опцию подключения.
- Теперь попробуйте скачать (обновить) проблемную ранее программу.
Это может помочь избавиться при установке приложений от ошибки 504 на вашем гаджете с ОС Андроид.
Установка автоматической даты и времени
Также рекомендуем проверить корректность отображения даты и времени на вашем устройстве.
Для этого нужно:
- Перейти в настройки вашего девайса и найти там «Дата и время».
- Активировать опцию автоматической установки даты и времени.
- После этого необходимо перезагрузить гаджет.
Увеличение количества свободного места
Для комфортной установки и работы приложений на Android без высвечивания ошибки 504 рекомендуется иметь около 1 гигабайта свободного места как на смартфоне, так и на карте памяти. Освободите место на девайсе, удалив ненужные файлы. Перезагрузите гаджет и попробуйте вновь скачать нужную программу из Гугл Плей.
Это интересно: Как сделать, чтобы фото сохранялись на карту памяти Андроид.
Сброс настроек телефона до заводских
Если ни один из указанных советов не помог устранить ошибку 504, сбросьте настройки телефона на Android до заводских. Учтите, что это помогает в небольшом количестве случаев, так как вы имеете дело с системным багом APT оптимизации, неустраняемым стандартным «hard reset». Найдите опцию сброса данных на вашем телефоне и выполните сброс настроек до заводских. Помните, что при таком сбросе ваши файлы и прогресс в играх будут потеряны.
Заключение
В данном материале мы разобрали, что за ошибка 504 на Андроид, почему она возникает, и как от нее избавиться на вашем гаджете. Наибольшую эффективность показал способ с редактированием файла build.prop, для чего вам понадобятся рут-права. Выполните перечисленные в статье советы, это поможет решить ошибку 504 при установке приложения на вашем мобильном девайсе.