3 votes

Comment faire passer un fichier de PC à Android et vice-versa en utilisant les directives "exec-in" et "exec-out" ?

Je peux le faire :

adb exec-in "gzip > sdcard/test.gz" < C:\test.txt
adb exec-out cat sdcard/test.gz > C:\test.gz

La question est de savoir comment faire quelque chose comme ça :

adb exec-in "gzip > C:\test.gz" < C:\test.txt

Je veux dire, comment puis-je utiliser un fichier sur mon PC comme entrée pour un programme Android (linux) et utiliser un autre fichier sur mon PC comme sortie SANS sauvegarder aucune donnée sur la mémoire interne d'Android (flash, microSD etc) ?

1voto

user3528651 Points 1

Mon message est plus un commentaire qu'une réponse (mais je ne peux pas commenter). Tous mes commentaires ci-dessous ne concernent que le cas de l'hôte Windows adb.

adb shell gzip >C:\test.gz <C:\test.txt fonctionne probablement simplement parce que le fichier d'entrée est un fichier texte.

adb shell gzip >C:\test.gz <C:\test.bin échoue car l'appel de la fonction de lecture de Windows dans adb arrête la lecture dès que l'octet 0x1A (ctrl+Z) est lu. Il s'agit du mode d'opération texte par défaut de la fonction de lecture de Windows. La solution de contournement utilisée par exec-in y exec-out est d'appeler _setmode() pour configurer l'écriture et la lecture des descripteurs de fichiers en mode binaire.

Malheureusement, la plupart du temps <test.bin adb exec-in "cat - > sdcard/test.bin" échoue également pour les versions d'adbd < 1.0.41 (c'est-à-dire tout ce qui est inférieur à Android 10). La cause est probablement un problème de race condition dans le code usb.cpp de adbd.

Android 10 corrige ce problème avec l'implémentation FFS non bloquante et <test.bin adb exec-in "cat - > sdcard/test.bin" fonctionne avec Windows (testé avec LineageOS 17.1 + Windows 10)

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X