Android 에뮬레이터의 호스트 변경(호스트가 읽기 전용으로 편집할 수 없는 경우)

2314 단어 AndroidStudioFlu
Flutter에서 앱을 개발하는 동안 호스트 이름으로 로컬 서버를 참조하도록 호스트 파일을 편집해야 했습니다. hosts 파일의 재기록 순서에 대해서는 여러가지 정보가 있었습니다만, hosts가 read only로 재기록할 수 없는 문제로 잠시 빠져 버렸으므로, 재기록시의 일련의 흐름과 해결책을 적어 둡니다.

덧붙여서, Mac에서는/etc/hosts를 다시 쓰는 것만으로 솔직하게 읽어 주므로 매우 편합니다. Android 에뮬레이터도 그러한 사양으로 해 주었으면 합니다.

호스트가 읽기 전용으로 다시 쓸 수없는 경우의 해결책



먼저 해결책이지만 SDK Platform에서 API28 이하를 사용하면 할 수있었습니다. 현재 30과 29가 있지만, 어느 쪽이든 아래 오류가 발생했습니다.
adb: error: failed to copy 'hosts' to '/system/etc/hosts': remote couldn't create file: Read-only file system

SDK Platform을 API28로 설정



Android studio의 Configure에서 SDK Manager를 열고 Android 9.0을 선택하여 설치합니다.


기기 등록



Android studio의 Configure에서 ADV Manager를 열고 Create Virtual Device에서 설치한 기기를 등록합니다.


호스트의 재작성 절차



위의 단계가 완료되면 hosts 다시 쓰기로 이동합니다. 아래는 Windows의 예입니다.

명령 프롬프트를 열고 Writable 모드에서 에뮬레이터를 시작합니다.
> cd C:\Users\ユーザー名\AppData\Local\Android\Sdk\emulator
> emulator -writable-system -avd Pixel_3a_XL_API_28

다른 명령 프롬프트를 열고 hosts 파일을 다운로드합니다.
> cd C:\Users\ユーザー名\AppData\Local\Android\Sdk\platform-tools
> adb root
> adb remount
remount succeeded

> adb pull /system/etc/hosts hosts
/system/etc/hosts: 1 file pulled, 0 skipped. 0.0 MB/s (56 bytes in 0.002s)

이 시점에서 platform-tools 폴더에 hosts 파일이 다운로드되었다고 생각하므로 마지막 줄에 필요한 IP와 호스트 이름을 추가합니다.

hosts 파일을 편집한 hosts로 덮어씁니다.
> adb push hosts /system/etc/hosts
hosts: 1 file pushed, 0 skipped. 0.1 MB/s (99 bytes in 0.001s)

다음 명령으로 hosts가 성공적으로 다시 작성되었는지 내용을 확인할 수 있습니다.
> adb shell
> cat /etc/hosts

저장된 호스트가 되돌아가는 문제



에뮬레이터를 다시 시작하면 모처럼 변경된 hosts 파일이 되돌아갑니다. 이것에 대해서는 넷에서 질문하고 있는 사람을 보았습니다만, 아직 해결책은 없는 것 같습니다.
해결책이 발견되면 이 기사에서 소개합니다. 번거롭지만, 당분간은 가능한 한 에뮬레이터를 시작한 상태로 두는 것으로 회피하기로 합니다.

좋은 웹페이지 즐겨찾기