Ошибка записи build prop

Пролог

Казалось бы, на первый взгляд весьма простая задача. Некоторые читатели могли еще в те бородатые времена лазить по всяким 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

Итак по порядку:

  1. Делаем adb root

  2. Теперь делаем adb shell avbctl disable-verification

  3. Если вы вдруг остались в shell то введите exit

  4. Перезагружаем эмулятор adb reboot и ждем

  5. Снова делаем adb root 

  6. И вот теперь можно делать 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 сменил 1 значение (ro.sf.lcd_density=280 на 160) в и теперь у меня при включение выдает такую ошибку «Unfurnately, systemUI has stopped» , андроид 5.1 Lollipop.

Я хочу узнать как можно редактировать файл build.prop с ПК , или как решить данную проблему !

Надеюсь на вас!(

P.S На всякий случий контакты: skype(filip.rotaru) , vk (danrotaru)

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

0

Эксперт HardwareЭксперт Windows

21296 / 12106 / 653

Регистрация: 11.04.2010

Сообщений: 53,466

27.12.2015, 11:31

2

прежде чем играться с build.prop, нужно было позаботиться о бакапе… как правило, авторы подобных статей предупреждают о граблях, на которые можно наступить при подобных манипуляциях
отладка по usb включена? если да то adb в помощь

0

0 / 0 / 0

Регистрация: 17.07.2015

Сообщений: 9

27.12.2015, 22:10

 [ТС]

3

Ну и что мне теперь делать?!

0

Эксперт HardwareЭксперт Windows

21296 / 12106 / 653

Регистрация: 11.04.2010

Сообщений: 53,466

27.12.2015, 23:08

4

блин, я же написал —

Цитата
Сообщение от qvad
Посмотреть сообщение

отладка по usb включена? если да то adb в помощь

если нет то сброс к заводу, через рекавери стоковый и не факт что поможет
100% поможет перепрошивка

0

0 / 0 / 0

Регистрация: 17.07.2015

Сообщений: 9

30.12.2015, 18:45

 [ТС]

5

Где мне найти прошивку для Archos 55 Platinum ? Помогите пожалуйста

0

Эксперт HardwareЭксперт Windows

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

Souch, 20 апреля 2014, 18:32   #   (…)

Люди, пожалуйста дайте ссылку на Flash Tool
Буду ну ОЧЕНЬ вам благодарен!

Ответить

id116553074

id116553074, 20 апреля 2014, 18:37   #   (…)

Ответить

Souch

Souch, 20 апреля 2014, 18:37   #   (…)

Спасибо, Тая! Я буду у тебя в долгу!

Ответить

Souch

Souch, 21 апреля 2014, 13:05   #   (…)

А можно инструкцию для таких чайников как я?

Ответить

id116553074

id116553074, 21 апреля 2014, 14:41   #   (…)

Распаковываем прошивку и SP flash tool
— Открываем SP flash tool от имени администратора. И выбираем в нем scatter-loading на MT6589_Android_scatter_emmc.txt(находится в папке с прошивкой
— Все должно быть как на картинке

-Вытаскиваем аккумулятор и USB шнур.
— Нажимаем firmware->upgrate.
— Теперь вставляем USB шнур, после чего вставляем и аккумулятор!
— Пойдут разноцветные полоски. В конце будет зеленый кружок.

Ответить

cany748

cany748, 21 апреля 2014, 14:59   #   (…)

И зачем все перепрошивать если можно просто востановить build. prop???

Ответить

id116553074

id116553074, 21 апреля 2014, 15:36   #   (…)

У него нет бекапа и тел не включается и рекавери тач не поддерживает.

Ответить

cany748

cany748, 21 апреля 2014, 15:47   #   (…)

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

Ответить

id116553074

id116553074, 21 апреля 2014, 15:49   #   (…)

Он не сможет управлять Aroma File Manager, т.к его рекавери тач не поддерживает.

Ответить

cany748

cany748, 21 апреля 2014, 15:51   #   (…)

А зачем тач???

Ответить

cany748

cany748, 21 апреля 2014, 15:52   #   (…)

TWRP тач поддерживает

Ответить

id116553074

id116553074, 21 апреля 2014, 15:57   #   (…)

Этот файловый менеджер нормально управляется только с рекавери, которое поддерживает тач.

Ответить

cany748

cany748, 21 апреля 2014, 16:01   #   (…)

Зачем файл менеджер?? Самый простой способ попросить на 4pda бекап. А еще можно вырвать из прошивки build.prop, через TWRP положить куда надо

Ответить

cany748

cany748, 21 апреля 2014, 16:01   #   (…)

Но наверно он все это не поймет

Ответить

id116553074

id116553074, 21 апреля 2014, 16:05   #   (…)

У него CWM…

Ответить

cany748

cany748, 21 апреля 2014, 16:07   #   (…)

Что мешает прошить TWRP???

Ответить

id116553074

id116553074, 21 апреля 2014, 16:10   #   (…)

То, что тогда уж легче прошить все через Flash Tool.

Ответить

cany748

cany748, 21 апреля 2014, 16:14   #   (…)

Легче, но все снесется

Ответить

basangubushiev

basangubushiev, 9 июня 2015, 06:46   #   (…)

Всмысле данные?

Ответить

Sankassc4

Sankassc4, 27 сентября 2018, 16:32   #   (…)

так данные сносятся когда ты бутлодер разблокируешь (на huawei точно)

Ответить

ShomaVlad2005

ShomaVlad2005, 19 июня 2019, 11:33   #   (…)

А как можно с пк перекинуть прошивку на телефон который после build.prop не включается?

Ответить

slim123

slim123, 11 октября 2015, 12:25   #   (…)

а у меня такой вопрос, я исправил в bulid sdk на другую цыфру и девайс не грузится бекап вроде был самого булида, но прошивкина девайс не где вообще нету таккак китайский качественный клон довольно мощный, получился почти кирпичь разве что значок андройда весит на 4пда не помогли
можно ли както подругому через комп залесть в это булид и исправить его обратно ??

Ответить

Souch

Souch, 21 апреля 2014, 16:00   #   (…)

Не получилось. Выбрал файл, все галочки жмякнул, нажал на firmware upgrate, потом выскочила какая-то фигня, но разноцветные полоски не идут

Ответить

cany748

cany748, 21 апреля 2014, 16:01   #   (…)

Драйвера установи

Ответить

Souch

Souch, 21 апреля 2014, 16:04   #   (…)

Окей, сейчас на 4пда поищу

Ответить

Souch

Souch, 21 апреля 2014, 16:05   #   (…)

Вот нашел дрова. Как их установить?

Ответить

cany748

cany748, 21 апреля 2014, 16:06   #   (…)

Везде по разному, у меня был установщик

Ответить

id116553074

id116553074, 21 апреля 2014, 16:06   #   (…)

Распакуй их, если в архиве, и выбери файл install.

Ответить

cany748

cany748, 21 апреля 2014, 16:05   #   (…)

Лучше попроси в теме про твой девайс бэкап build.prop они тебе точно помогут.

Ответить

id116553074

id116553074, 21 апреля 2014, 16:04   #   (…)

brown772omar

brown772omar, 28 декабря 2017, 20:15   #   (…)

А что делать с зелёным кружочком?

Ответить

ShomaVlad2005

ShomaVlad2005, 19 июня 2019, 11:30   #   (…)

Можешь помочь пожалуйста
Редачил в build.prop, поменял всю информацию на samsung s9, перезагружаю телефон и он не включается, как мне вернуть мой кирпич к жизни ?
Если что телефон Samsung A3 2016 ( SM — A310F ), заранее благодарен!

Ответить

DEN_GAMER

DEN_GAMER, 19 июня 2019, 13:10   #   (…)

Перепрошив о4ька

Ответить

hacker502

hacker502, 19 июня 2019, 17:46   #   (…)

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

Ответить

A-l-i-k_Pro

A-l-i-k_Pro, 20 апреля 2014, 18:32   #   (…)

Ээээ я тоже самое сделал файл создал и приложение скачал что мне теперь не перезагружать смартфон.

Ответить

hjklz

hjklz, 18 июня 2014, 21:23   #   (…)

Либо перепрошиться, либо хард ресет

Ответить

Souch

Souch, 19 июня 2014, 07:19   #   (…)

Хард ресет не помог.

Ответить

_-A-Za-zA-_

_-A-Za-zA-_, 19 июня 2014, 05:46   #   (…)

Wipe data, или прошивка как описано выше через Flashtool

Ответить

id30640678

id30640678, 5 мая 2015, 01:35   #   (…)

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

Ответить

Haifisch14

Haifisch14, 9 июня 2015, 08:43   #   (…)

Нет

Ответить

ARM_v6

ARM_v6, 9 июня 2015, 08:54   #   (…)

Топика больше года.

Ответить

Haifisch14

Haifisch14, 9 июня 2015, 10:17   #   (…)

Лол, не увидел
Че он тогда сверху висит на форуме

Ответить

ARM_v6

ARM_v6, 9 июня 2015, 11:27   #   (…)

Значит ид *много цифер написал* написал

Ответить

TARANS_

TARANS_, 11 октября 2015, 12:57   #   (…)

Rolex

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

DEN_GAMER, 13 июля 2017, 22:18   #   (…)

Может потому что твой телефон уже старый

Ответить

flopberry

flopberry, 14 июля 2017, 23:04   #   (…)

прошей просто свою прошивку… данные не слетят, только рут

Ответить

semyon1

semyon1, 19 сентября 2017, 23:57   #   (…)

Тоесть если я перепрошью мобилу файл билд.проп восстановится? Если так то спасибо огромное. 3 дня не мог найти решение, а сейчас просто в гугле забил че делать если билд.проп капут и всё. Не думал что все так просто.

Ответить

Android_gamer

Android_gamer, 28 января 2018, 12:04   #   (…)

А можно ли вот это всё поручить холопу из сервиса? Лень возиться.

Ответить

Dimka704

Dimka704, 25 декабря 2018, 18:05   #   (…)

Телефон samsung s7562 накосячил в build.prop изменил версию андроид из 4.0.3 na 6.0.0? и sdk=16>на24 и теперь 97% программ не запускаются и root проводники тоже не запускаются что делать??

Ответить

QPoint

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

Итак по порядку:

  1. Делаем adb root

  2. Теперь делаем adb shell avbctl disable-verification

  3. Если вы вдруг остались в shell то введите exit

  4. Перезагружаем эмулятор adb reboot и ждем

  5. Снова делаем adb root 

  6. И вот теперь можно делать 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's user avatar

Izzy

90.3k71 gold badges338 silver badges931 bronze badges

asked Apr 28, 2011 at 14:05

swd's user avatar

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

swd's user avatar

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 Read's user avatar

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

Ghost Reborn's user avatar

You must log in to answer this question.

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

Итак по порядку:

  1. Делаем adb root

  2. Теперь делаем adb shell avbctl disable-verification

  3. Если вы вдруг остались в shell то введите exit

  4. Перезагружаем эмулятор adb reboot и ждем

  5. Снова делаем adb root 

  6. И вот теперь можно делать 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 при инсталляции приложений на ОС Андроид, и как её исправить.

Содержание

  1. Что означает ошибка 504 на Андроид?
  2. Редактирование файла build.prop для устранения ошибки 504
  3. Удаление папки appnamespace
  4. Переустановка Гугл-аккаунта на Андроид для сброса ошибки 504
  5. Использование VPN
  6. Установка автоматической даты и времени
  7. Увеличение количества свободного места
  8. Сброс настроек телефона до заводских
  9. Заключение

Что означает ошибка 504 на Андроид?

Технически ошибка 504 в Google Play является ошибкой тайм-аута шлюза. Обычно она связана с медленным интернет-соединением. Это относится как к стационарному вай-фай, так и мобильному интернету.

Окно с ошибкой 504

Тем не менее статистически ошибку 504 наиболее часто можно встретить на Андроид 5.0 Lollipop. В версии указанной ОС «developer preview» имеется баг, напрямую ответственный в появлении ошибки 504 при установке приложений на Android. Данный баг связан с АРТ оптимизацией на устройстве, и именно он выступает непосредственной причиной ошибки.

Картинка Android Lollipop

Другими причинами, способными вызывать ошибку 504, являются следующие:

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

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

Читайте также: В приложении Nox Launcher произошла ошибка — что делать.

Редактирование файла build.prop для устранения ошибки 504

Поскольку упомянутый баг напрямую связан с АРТ оптимизацией, вам необходимо отключить эту функцию на вашем девайсе. Для этого понадобится получить root-права, позволяющие выполнить указанную операцию. Без рут-прав устранить ошибку 504 на Андроиде с помощью данного способа будет невозможно.

Выполните следующее:

  1. Убедитесь, что вы имеете root-права для вашего устройства. При необходимости получите указанные права с помощью программ «KingRoot», «Framaroot» и других аналогов.Изображение Framaroot Android
  2. Запустите любой проводник, который умеет работать с рут-правами (к примеру, ES File Explorer File Manager).
  3. С его помощью найдите на вашем устройстве файл build.prop (обычно находится в корне файловой системы) и откройте его для редактирования. Файл build.prop на экране телефона
    Отредактируйте файл build.prop
  4. В нём поищите следующие строчки:dalvikи замените их на:

    dalvik.vm.dex2oat-filter=interpret-only
    dalvik.vm.image-dex2oat-filter=speed

    Если первоначальных двух строчек нет, тогда просто допишите в самый конец файла строки:

    dalvik.vm.dex2oat-filter=interpret-only
    dalvik.vm.image-dex2oat-filter=speed

  5. Сохраните изменённый вами файл build.prop.

  6. Перезагрузите устройство и попытайтесь вновь скачать нужную программу с Плей Маркет.

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

Удаление папки appnamespace

Другим эффективным способом исправить ошибку 504 является удаление папки appnamespace.

Для этого нужно:

  1. Перейти по пути: /data/data/appnamespace.
  2. Удалить папку appnamespace.
  3. Перезагрузить устройство.

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

Переустановка Гугл-аккаунта на Андроид для сброса ошибки 504

Для этого необходимо выполнить следующие действия:

  1. Перейдите в настройки вашего аппарата. Здесь найдите «Учётные записи» (Accounts) – Google.
  2. Тапните на вашу учётную запись в Гугл, и выберите «Удалить учётную запись».
  3. Теперь перейдите в «Приложения» – «Все».
  4. Найдите приложения «Google Play Маркет», «Google Service Framework», а также «Download Manager». Зайдя в каждое из указанный приложений, нажмите «Принудительно остановить», «Очистить данные» и «Очистить кэш».Кнопки удаления данных и кэша
  5. Теперь вновь перейдите в «Настройки» – «Учётные записи» – «Google».
  6. Добавьте ваш Gmail аккаунт.
  7. Перезагрузите устройство. Запустите «Плей Маркет» и установите (обновите) необходимое вам приложение.

Использование VPN

Неплохие результаты в обходе ошибки 504 на Андроиде при установке приложений показало использование ВПН.

Для этого необходимо:

  1. Если позволяет «Плей Маркет», скачайте и установите ВПН-программу (к примеру, «VPN») на ваше устройство.
  2. Запустите приложение, выберите альтернативную к России страну (например, USA) и нажмите на опцию подключения.
  3. Теперь попробуйте скачать (обновить) проблемную ранее программу.Приложение Hideman

Это может помочь избавиться при установке приложений от ошибки 504 на вашем гаджете с ОС Андроид.

Установка автоматической даты и времени

Также рекомендуем проверить корректность отображения даты и времени на вашем устройстве.

Для этого нужно:

  1. Перейти в настройки вашего девайса и найти там «Дата и время».
  2. Активировать опцию автоматической установки даты и времени.
  3. После этого необходимо перезагрузить гаджет.

Скрины настройки времени Андроид

Активируйте автоматическое определение времени на Андроид

Увеличение количества свободного места

Для комфортной установки и работы приложений на Android без высвечивания ошибки 504 рекомендуется иметь около 1 гигабайта свободного места как на смартфоне, так и на карте памяти. Освободите место на девайсе, удалив ненужные файлы. Перезагрузите гаджет и попробуйте вновь скачать нужную программу из Гугл Плей.

Это интересно: Как сделать, чтобы фото сохранялись на карту памяти Андроид.

Сброс настроек телефона до заводских

Если ни один из указанных советов не помог устранить ошибку 504, сбросьте настройки телефона на Android до заводских. Учтите, что это помогает в небольшом количестве случаев, так как вы имеете дело с системным багом APT оптимизации, неустраняемым стандартным «hard reset». Найдите опцию сброса данных на вашем телефоне и выполните сброс настроек до заводских. Помните, что при таком сбросе ваши файлы и прогресс в играх будут потеряны.

Заключение

В данном материале мы разобрали, что за ошибка 504 на Андроид, почему она возникает, и как от нее избавиться на вашем гаджете. Наибольшую эффективность показал способ с редактированием файла build.prop, для чего вам понадобятся рут-права. Выполните перечисленные в статье советы, это поможет решить ошибку 504 при установке приложения на вашем мобильном девайсе.

  • Ошибка записи asio драйвер не работает cubase
  • Ошибка записи 6 неверный дескриптор при копировании файлов
  • Ошибка занятости при звонке
  • Ошибка замятия бумаги или как почистить pw датчик
  • Ошибка замыкание на плюс что значит