Prólogo
Parece, à primeira vista, uma tarefa muito simples. Alguns leitores podiam até mesmo em tempos difíceis subir em todos os tipos de 4pd, fazer root em sua tela sensível ao toque Samsung, alterar o conteúdo do arquivo build.prop e mostrar lamers ingênuos em seu iPhone 15+ Max Pro. No entanto, como aconteceu, e como muitas vezes acontece, nem tudo é tão simples e há armadilhas aqui. O artigo foi projetado para ajudar os trabalhadores comuns a evitar todos os solavancos e buracos no caminho para sua meta!
aviso Legal
Avisarei de imediato que gosto de escrever tais artigos com alguns detalhes, não por uma questão de volume e letras múltiplas, mas por uma questão de imersão máxima no problema e na maneira de resolvê-lo. Observe que estou trabalhando no macOS , portanto, todos os comandos no terminal serão orientados para este SO. Além disso, deve-se observar que estou transformando tudo isso para a API 30 , ou seja, para a última versão no momento da redação deste artigo. Como diz a internet, as dificuldades neste tópico começaram com a API 29 .
Por que isso é necessário?
Presumo que você, caro leitor, tenha um bom motivo para isso, caso contrário, você não teria feito isso. É mais provável que você, como eu, tenha uma verificação programática para o modelo de dispositivo a partir do qual o aplicativo é iniciado, algo como aqui . Aliás, desta forma será possível conferir o resultado do nosso trabalho. A segunda maneira e mais fácil de verificar o modelo do emulador será por meio das configurações do dispositivo na seção de informações do dispositivo:
. .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. , !