Changer simplement le modèle de l'émulateur d'appareil Android

Prologue

Cela semble, à première vue, une tâche très simple. Certains lecteurs pourraient même en ces temps barbus grimper toutes sortes de 4pd, rooter leur écran tactile Samsung, changer le contenu du fichier build.prop et montrer aux lamers naïfs leur iPhone 15+ Max Pro. Cependant, comme il s'est avéré, et comme cela arrive souvent, tout n'est pas si simple et il y a des pièges ici. L'article est conçu pour aider les travailleurs ordinaires à éviter toutes les bosses et les trous sur le chemin de leur objectif!





Avertissement

Je vous préviendrai tout de suite que j'aime écrire de tels articles de manière assez détaillée, non pas par souci de volume et de multi-lettres, mais pour une immersion maximale dans le problème et la manière de le résoudre. Veuillez noter que je travaille sur macOS , donc toutes les commandes du terminal seront orientées pour ce système d'exploitation. En outre, il convient de noter que je tourne tout cela pour l' API 30 , c'est-à-dire pour la toute dernière au moment de la rédaction de cet article. Comme le dit Internet, les difficultés sur ce sujet ont commencé avec l' API 29 .





Pourquoi est-ce nécessaire?

Je suppose que vous, cher lecteur, avez une bonne raison à cela, sinon vous ne l'auriez pas fait. Il est fort probable que vous, comme moi, ayez une vérification programmatique du modèle d'appareil à partir duquel l'application est lancée, quelque chose comme ici . En passant, de cette manière, il sera possible de vérifier le résultat de nos travaux. Le deuxième moyen le plus simple de vérifier le modèle d'émulateur consiste à utiliser les paramètres de l'appareil dans la section Informations sur l'appareil:





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





L'écran ne m'a pas laissé aller plus loin

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