Simplemente cambiando el modelo del emulador de dispositivo Android

Prólogo

Parecería, a primera vista, una tarea muy sencilla. Algunos lectores podían incluso en esos tiempos barbudos escalar todo tipo de 4pd, rootear su pantalla táctil Samsung, cambiar el contenido del archivo build.prop y mostrar a los ingenuos su iPhone 15+ Max Pro. Sin embargo, como resultó, y como sucede a menudo, no todo es tan simple y hay trampas aquí. ¡El artículo está diseñado para ayudar a los trabajadores comunes a evitar todos los baches y agujeros en el camino hacia su objetivo!





Descargo de responsabilidad

Le advertiré de inmediato que me gusta escribir artículos de este tipo con cierto detalle, no por el volumen y las letras múltiples, sino por una inmersión máxima en el problema y la forma de resolverlo. Tenga en cuenta que estoy trabajando en macOS , por lo que todos los comandos en el terminal estarán orientados para este sistema operativo. Además, debe tenerse en cuenta que estoy cambiando todo esto para API 30 , es decir, lo último en el momento de escribir este artículo. Como dice Internet, las dificultades sobre este tema comenzaron con API 29 .





¿Por qué es necesario?

Supongo que usted, querido lector, tiene una buena razón para esto, de lo contrario no lo habría hecho. Lo más probable es que usted, como yo, tenga una verificación programática para el modelo de dispositivo desde el que se lanza la aplicación, algo como aquí . Por cierto, de esta forma será posible comprobar el resultado de nuestro trabajo. La segunda y más fácil forma de verificar el modelo del emulador será a través de la configuración del dispositivo en la sección de información del dispositivo:





. .apk - . . , , , . . , .





La pantalla que no me dejó ir más lejos

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. , !








All Articles