Как изменить файл read only android studio

Обновлено: 04.07.2024

Недавно я основал свой 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, на котором я задал тот же вопрос. Надеюсь, это поможет кому-то еще.

В терминальном эмуляторе по телефону:

Затем в командной строке введите adb push

Ответ 2

Не все телефоны и версии Android имеют все то же самое.
Ограничение параметров при пересоединении было бы лучше.

Просто перемонтируйте как rw (Чтение/Запись):

Как только вы закончите внесение изменений, перемонтируйте ro (только для чтения):

Ответ 3

работает для меня и, кажется, является самым простым решением.

Ответ 4

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

Чтобы что-либо было доступно для записи в /system . Без этого флага никакая комбинация remount или mount не позволяет записать на /system .

После запуска эмулятора с этим флагом, один adb remount после adb root достаточно, чтобы получить разрешения для нажатия на /system .

Вот пример командной строки, которую я использую для запуска моего эмулятора:

Значение для флагов -avd происходит от:

Ответ 5

Я думаю, что самый безопасный способ - перемонтировать /system как read-write, используя:

и, когда это будет сделано, перемонтируйте его как только для чтения:

Ответ 6

На моей галактике Samsung mini S5570 (после того, как он получил корень на сотовом телефоне):

Кулак, как root, я побежал:

как обычный пользователь:

Предоставить права доступа root на сенсорном экране

укажите все точки монтирования, которые у нас есть, и мы можем видеть, в моем случае, что /dev/stl 12 был установлен в /system как ro (только готовый), поэтому нам просто нужно:

Ответ 7

В командной строке выполните следующие действия:

Ответ 8

Вот что сработало для меня. Я запускал эмулятор Android 7.1.1 (нуга).

На терминале я нахожу следующую команду. Одна вещь, которую нужно заметить, - это флаг -writable-system

На другой вкладке

Все изменения, внесенные в/содержимое системы, сохранятся при перезапуске.

Ответ 9

Это работает для меня и является самым простым решением.

Ответ 10

Открыть эмулятор терминала на телефоне: затем

после запуска этого демона

тогда чтение только преобразуется в read-Write.

Ответ 11

работает для меня

Ответ 12

Я нашел эту статью из Google и подумал, что добавлю шаги, необходимые для Sony Xperia Z (4.2.2).

В Sony есть сторожевой процесс, который обнаруживает, когда вы изменили ro на rw в/и/system (это единственные, которые я пытался изменить) и, возможно, другие.

Следующее было тем, что я выполнял для выполнения изменений, которые я пытался достичь. Я вложил их в окно, потому что удаление бит выполнения из /sbin/ric необходимо выполнить быстро, чтобы остановить его перезапуск. (Я пробовал stop ric , это не сработало - хотя он работал над предыдущей версией Android на телефоне).

Я изменил здесь файл hosts, так что это место, где вы вносите необходимые изменения в файловую систему. Чтобы оставить вещи так, как мы их нашли, сделайте следующее:

В какой момент ric должен автоматически перезагрузиться. (Он автоматически перезагрузился для меня.)

Ответ 13

Добавляя немного больше ответа Янга Бергстрема: потому что Android - это система на базе Linux, а в Linux в Linux содержатся косые черты (../) при использовании команды push, используйте "/" для определения пути назначения в Android-устройство.

Например, команда: adb push C:\Users\admin\Desktop\1.JPG sdcard/pictures/

Обратите внимание, что здесь обратные косые черты используются для определения пути к исходному файлу файла, который должен быть вытолкнут с Windows PC, и косые черты используются для определения пути назначения, потому что Android - это система на основе Linux. Вам не нужно действовать как root, чтобы использовать эту команду, а также отлично работает на производственных устройствах.

Ответ 14

Иногда вы получаете ошибку, потому что место назначения в телефоне не существует. Например, какое-то местоположение внешнего хранилища телефона Android < <20 > вместо /storage/emulated/0 .

Ответ 15

ls показывает мне:

Итак, он понял, что каталог "lib" отделен от других каталогов приложений.

Command mount -o rw,remount /mnt/asec не решила проблему "r/o fs", она хочет параметр устройства перед параметром каталога.

"df" также не помогла, но показывает, что мой каталог /mnt/asec/com.my.app-1 находится в отдельной точке монтирования.

Затем я смотрю на mount и voila!

Следующие шаги уже описаны вверх: перемонтируйте RW, нажмите и верните обратно в RO.

Ответ 16

it sames, который должен извлечь и переупаковать initrc.img и отредактировать файл init с кодом mount/system

Ответ 17

Ответ 18

В моем случае я использовал команду adb push

Я изменил его на

/Desktop/file.txt/sdcard/ а затем он сработал.

Обязательно отключите и снова подключите телефон.

Ответ 19

Если произошел сбой при копировании файла, доступного только для чтения, вы можете попробовать найти исходный файл в корневом каталоге и изменить его с помощью текстового редактора корневого текста (желательно) RB, он поставляется с приложением ROM Toolbox.

Ответ 20

Попробуйте это в терминальном эмуляторе как root:

Ответ 21

Скопировать файлы на SD-карту?

Ну, я полагаю, вам нравится копировать данные на Sd-карту с компьютера разработчиков? Возможно, вы укоренились в разработке и сделали доступную область доступной?) У меня была проблема с загрузкой файлов данных для моего приложения (Android Studio 1.3.2 в Win7), но.

Разрешение на запись в определенную папку не получено. Android Studio спрашивает об этом. Единственное, что я могу нажать на кнопку «Отмена».

Очистить статус только для чтения

Не удалось сохранить проект

  • Проект загружен из репозитория git.
  • Отлично работает на других маках.
  • Проект загружен в user /projects /project-name.
  • Пытался играть с разрешениями без успеха
  • Попытка изменить расположение каталога проекта (работает другой проект в том же каталоге)
  • Установлены все возможные пакеты

Разрешения для файлов в папке проекта

Заблокированные значки в Android-студии.

введите описание изображения здесь

Мне нужно какое-либо предложение в каком направлении искать решение?

Наиболее вероятное объяснение состоит в том, что каталог и все его файлы принадлежат другой учетной записи пользователя в системе. Обычно диалоговое окно «Очистить доступ только для чтения» устранит проблемы с правами на чтение, если это возможно; если это не так (поскольку файлы принадлежат другому пользователю), диалоговое окно не позволит вам нажать кнопку ОК.

Это можно подтвердить с помощью команды ls из терминала MacOS. Вот пример из моего случайного проекта.

Если вы запустите man ls , вы можете прочитать справочную страницу для ls и получают намного больше информации о выводе команды, но один символ "w" в выводе для каждого файла говорит мне, что эти файлы доступны для записи только владельцу файла. Все эти файлы принадлежат пользователю foo (что означает третий столбец вывода). Я не являюсь пользователем foo, когда использую Android Studio, поэтому я не могу записывать в эти файлы, и, поскольку я не являюсь пользователем foo, у меня нет прав, чтобы дать им доступ для записи.

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

У меня была та же проблема, и я какое-то время играл с разрешениями и настройками. Я нашел 2 решения этой проблемы:

Просто запустите Android Studio из терминала, используя sudo . Например,
cd /Applications/Android\ Studio.app/Contents/MacOS/ sudo ./studio

Выберите папку с вашими проектами Android -> Получить информацию -> прокрутите вниз до пункта «Общий доступ». Разрешения '-> установите разрешение для «персонала» как «Чтение и усиление». Напишите '-> нажмите маленькую иконку колеса настроек ниже -> выберите «Применить к вложенным элементам».

Если нет возможности выбрать «Применить к вложенным элементам», вам сначала нужно разблокировать маленький значок замка.

У меня была такая же проблема с Android Studio для Linux (IntelliJ IDEA) Выглядело это так: когда я пытался редактировать некоторые файлы проекта (например, build.txt или build.gradle), в Studio отображалось диалоговое окно «Очистить состояние только для чтения» с кнопкой «ОК», выдающей другое предупреждение »Не удалось изменить статус только для чтения для следующих файлов: "

 введите описание изображения здесь

Шаги для исправления (я буду использовать пользователя "alex") 1) Убедитесь, что вы находитесь под нужным пользователем

2) Проверьте права собственности на проблемный файл (пример: "build.txt)

Этот build.txt принадлежит руту! Вот почему Android Studio не может редактировать его.

3) Исправьте права собственности на весь каталог проекта

CD к корневому пути вашего проекта и выполните эту команду sudo chown -R YOUR_PROJECT_FOLDER_NAME

это решит вашу проблему.

В Windows я исправил проблему (после того, как я удалил папку .idea. Не знаю, имеет ли это какое-то значение), выбрав Import Non-Android Studio Project

Вещи, которые я пытался, но у меня не получалось:

  1. выполняется как администратор из cmd ----> attrib -r +s c:\workingdir and attrib -r +s c:\workingdir\*
  2. Изменен флаг только для чтения из свойств.
  3. Изменены разрешения в безопасном режиме.

1, измените что-нибудь в файле;

2, отображается диалоговое окно, в правом нижнем углу должна быть строка, спрашивающая вас "хотите ли вы удалить delete";

3, проверьте эту строку;

только чтение исчезнет.

Это плохо для вашей безопасности, но работает точно!

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

(не забывайте точку "." в конце)

-R обозначает рекурсию. 777 для "чтения-записи"

РЕДАКТИРОВАТЬ: Помните, что сначала рекомендуется проверить, является ли разрешение причиной проблемы. В Mac перейдите к пути поиска файла неисправности, щелкните правой кнопкой мыши, нажмите «Получить информацию», прокрутите вниз, посмотрите, какие права доступа предоставлены (только чтение, чтение и запись, пользовательские и т. Д.). Если проблема не в разрешении, предоставление высокого уровня доступа может вызвать проблемы с безопасностью.

Разрешение на запись в определенную папку не получено. Android Studio спрашивает об этом. Единственное, что я могу нажать на кнопку "Отмена".

Clear read only-status

Впоследствии, когда я хочу покинуть Android Studio, я получаю "не удалось сохранить проект".

Could not save project

    Проект загружается из репозитория git.
    Прекрасно работает с другими маками.
    Проект загружается в user/projects/project-name.
    Пытался играть с разрешениями без успеха
    Попробовал изменить расположение каталога проекта (работает другой проект в том же каталоге)
    Установлены все возможные пакеты

Permissions on files in project folder

Заблокированные значки в студии Android.

enter image description here

Мне нужно какое-либо предложение в каком направлении искать решение?

спросил(а) 2014-02-06T18:39:00+04:00 7 лет, 9 месяцев назад

Наиболее вероятным объяснением является то, что каталог и все его файлы принадлежат другой учетной записи пользователя в системе. Обычно диалог "Очистить доступ только для чтения" устраняет проблемы с разрешением на чтение, если это возможно; если это не так (потому что файлы принадлежат другому пользователю), диалог не позволит вам нажать кнопку "ОК".

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

Если вы запустите man ls , вы можете прочитать справочную страницу для команды ls и получить намного больше информации о выходе из этой команды, но единственный символ "w" в выводе для каждого файла говорит мне, что эти файлы могут быть записаны только владельцем файла. Все эти файлы принадлежат пользователю foo (что и означает третий столбец вывода). Я не foo, когда я запускаю Android Studio, поэтому я не могу писать в эти файлы, и поскольку я не foo, у меня нет прав на предоставление им доступа для записи.

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

Я недавно рутировал свой Droid X и все вроде отлично работает. Я сделал некоторые изменения, build.prop и когда adb push build.prop /system/ я получаю, я получаю следующую ошибку: failed to copy 'c:\build.prop' to '/system//build.prop': Read-only file system .

Обратите внимание, что этот вопрос не следует путать со случаем, когда код приложения Android не работает с ошибкой файловой системы только для чтения. Это обычно вызывается попыткой записи файла без указания местоположения, т. Е. Попыткой записи в корневой каталог. Этот вопрос касается только изменения самой установки Android на рутированных / разрабатываемых / инженерных устройствах. Есть ли способ сделать это с эмулятором Android ?? Ни одно из этих решений не работает для моего эмулятора.

Не на всех телефонах и версиях Android установлены одинаковые вещи.
Ограничение параметров при перемонтировании было бы наилучшим.

Просто перемонтируйте как rw (чтение / запись):

После внесения изменений перемонтируйте в ro (только для чтения):

Вы можете сделать это на вашем компьютере тоже. Оболочка adb -o rw, remount / system Используйте вместе с adb root или вы получите Отказ в разрешении при нажатии файла. @MikeHenke, похоже, что вы не были пользователем root, когда выполняли его. Так как у меня в любом случае был root, я скопировал файл в / sdcard, а затем использовал (в моем случае) mv hosts /system/etc/hosts

работает для меня и, кажется, самое простое решение.

У меня есть Not running as root. Try "adb root" first. . А потом adbd cannot run as root in production builds . На более новых устройствах это выглядит так, как будто нам также нужно $ adb disable-verity перезагрузить устройство, прежде чем мы сможем его запустить $ adb remount $ adb disable-verity give: disable-verity работает только для сборок userdebug это не работает Not running as root. Try "adb root" first. . Я вошел, adb root а затем снова, adb remount но все еще та же ошибка: Not running as root. Try "adb root" first.

Получил это на форуме Android, где я задавал тот же вопрос. Надеюсь, это поможет кому-то еще.

На эмуляторе терминала на телефоне:

Затем в командной строке cmd выполните adb push

adb shell <command> можно использовать с компьютера (если у вас нет терминала на телефоне)

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

Для чего-либо, чтобы быть доступным для записи /system . Без этого флага ни одна комбинация remount или mount не позволит писать /system .

После запуска эмулятора с этим флагом достаточно одного adb remount после, adb root чтобы получить разрешения для отправки /system .

Вот пример командной строки, которую я использую для запуска своего эмулятора:

Значение для -avd флагов происходит от:

моя командная строка становится очень медленной, пока не может продолжить работу с adb root и adb remount после запуска эмулятора с -writable-system, кто-нибудь может помочь?

Я думаю, что самый безопасный способ это перемонтировать / system как read-write, используя:

и когда закончите, перемонтируйте его только для чтения:

это сработало только для меня, как только я удалил «,» из заявления. т.е. "" mount -o remount rw / system ""

На моем Samsung galaxy mini S5570 (после получения рута на мобильном телефоне):

Кулак, как корень, я побежал:

как обычный пользователь:

Предоставление прав root на сенсорном экране

перечислите все точки монтирования, которые у нас есть, и мы можем видеть, в моем случае, что / dev / stl12 был смонтирован в / system как ro (только готово), поэтому нам просто нужно сделать:

Спасибо за этот ответ. По какой-то причине я никогда не смотрел на экран своего телефона, чтобы предоставить права root, и получал отказ в доступе, что бы я ни пытался. говоря «Вы должны указать тип файловой системы с -t.», что это значит? mount -o rw, remount -t ext4 / dev / block / vda / system, -t означает тип файловой системы в моем примере ext4

Попробуйте следующее в командной строке:

Это работает для меня и является самым простым решением.

Вот что сработало для меня. У меня было эмулированное устройство Android 7.1.1 (Nougat).

На терминале я нажал следующую команду. Одна вещь, которую нужно отметить, это флаг -writable-system

На другой вкладке

Все изменения, внесенные вами в содержимое / system, сохранятся после перезапуска.

Я проверил с эмулятором и следующий работал.

  1. перезагрузка adb
  2. корень adb && adb remount && adb push

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

Откройте эмулятор терминала на телефоне: тогда

после запуска этого демона

затем только чтение преобразуется в чтение-запись.

работает для меня

Я нашел эту статью в Google и подумал, что добавлю шаги, необходимые для Sony Xperia Z (4.2.2).

У Sony есть сторожевой процесс, который обнаруживает, когда вы изменили ro на rw на / и / system (это единственные, которые я пытался изменить) и, возможно, другие.

Ниже было то, что я побежал, чтобы выполнить изменения, которые я пытался достичь. Я вставил их в окно, потому что удаление бита выполнения из / sbin / ric должно быть выполнено быстро, чтобы остановить его перезапуск. (Я пытался stop ric ; это не работает - хотя это работало на предыдущей версии Android на телефоне).

Я изменил файл hosts здесь, так что это место, где вы вносите необходимые изменения в файловую систему. Чтобы оставить вещи такими, какими мы их нашли, сделайте так:

В этот момент RIC должен автоматически перезапустить. (Он перезапустился для меня автоматически.)

Добавим немного больше к ответу Яна Бергстрёма: поскольку Android - это система на основе Linux, а путь в Linux содержит косую черту (../), при использовании команды push используйте «/» для определения пути назначения на устройстве Android.

Например, команда выглядит так: adb push C: \ Users \ admin \ Desktop \ 1.JPG sdcard / pictures /

Обратите внимание, что здесь, обратная косая черта используется для определения пути к исходному файлу, который должен быть передан с компьютера с Windows, а прямая косая черта используется для определения пути назначения, потому что Android - это система на основе Linux. Вам не нужно выступать в роли пользователя root, чтобы использовать эту команду, а также, она отлично работает на производственных устройствах.

Команда ls показывает мне:

Итак, понятно, что каталог "lib" отделен от других каталогов приложений.

команда mount -o rw,remount /mnt/asec не решила проблему «r / o fs», она хочет, чтобы параметр устройства был указан перед параметром каталога.

Команда "df" тоже не помогла, но показывает, что мой /mnt/asec/com.my.app-1 каталог находится в отдельной точке монтирования.

Тогда я смотрю mount и вуаля!

Следующие шаги уже описаны вверх: перемонтировать в RW, нажать и перемонтировать обратно в RO.

Читайте также: