problemas con el comando 'grep' de adb
cuando escribo en adb:
adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'
consigo la salida del error:
- Emulate Force Stop de los comandos de ADB / Shell
- Intellij Idea no encuentra mi dispositivo Android
- Cómo hacer un archivo EXE utilizando el archivo .apk
- No se pudo obtener la versión del anuncio ... Ningún archivo o directorio
- Conexión adb sobre tcp no funciona ahora
'grep' is not recognized as an internal or external command, operable program or batch file.
pero si lo divido a dos operadores:
adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'
funciona bien (da el nombre de la actividad principal de la aplicación en ejecución).
si la única manera es dividirlo a dos – que meens que primero ingresan a adb shell, y luego ejecutar el Inquire, hay una manera de hacerlo desde c #?
en mi código, sólo hace la primera parte (entrar shell).
aquí está mi código:
public static void startNewProccess(object startInfo) { p = new Process(); p.StartInfo = (System.Diagnostics.ProcessStartInfo)startInfo; p.Start(); p.WaitForExit(); } public static void getMainActivity() { var startInfo1 = new System.Diagnostics.ProcessStartInfo { WorkingDirectory = @ADB_FOLDER, WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal, FileName = "cmd.exe", Arguments = "/c" + " adb shell", //adb shell am start -n com.package.name/com.package.name.ActivityName UseShellExecute = false }; startNewProccess(startInfo1); var startInfo2 = new System.Diagnostics.ProcessStartInfo { WorkingDirectory = @ADB_FOLDER, WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal, FileName = "cmd.exe", Arguments = "/c" + " dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'", UseShellExecute = false }; }
- Adb no muestra el dispositivo nexus 5
- ¿Qué permisos se pueden conceder a los dispositivos enraizados?
- Cómo matar aplicaciones nativas de 'adb shell'?
- Línea de comando ADB Colgando durante la instalación (PhoneGap)
- Depuración de una WebView de Android desde el PC mediante adb
- Adb logcat en un teléfono real usando tcp / ip
- ADB shell: ¿Cómo obtengo una lista de BroadcastReceivers que recibirán BOOT_COMPLETED Intent?
- ¿Cómo sincronizar el tiempo de Kernel y el tiempo de logcat?
No hay ningún problema con grep
en adb
. Hay un problema con su comprensión de cómo funciona shell
. Así que vamos a arreglar eso:
En su adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'
adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'
comando sólo dumpsys window windows
ejecuta parte de las dumpsys window windows
en Android. Ambos adb shell
y grep
se están ejecutando en su PC con Windows. Por lo tanto, el error que usted consigue – usted apenas no tiene grep
disponible.
Cuando ejecuta adb shell
solo, inicia una sesión de shell de anuncios interactiva y todo lo que ingresa se ejecuta en el lado de Android. Esto funciona muy bien para las pruebas manuales. Pero añade una capa de complejidad adicional cuando se utiliza para la automatización. Para usar el modo interactivo de su código necesitaría varios subprocesos (uno para el shell en sí, otro para enviar los comandos).
Pero en su caso usted realmente no necesita toda esa complejidad – simplemente escapar del carácter "pipe" o poner el comando shell completo entre comillas como esto:
adb shell "dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'"
- Android: inicia una actividad desde la línea de comandos con la intención uri
- vista de búsqueda no expandir todo el ancho