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)