Android Debug La vista de la jerarquía del supervisor no se muestra
Estoy intentando conectar mi aplicación en ADM pero desafortunadamente la visión de la jerarquía no está demostrando. ¿Cómo debo conectar mi aplicación a la herramienta ADM?
Dispositivo: Nexus 4
- Los datos de Logcat no se muestran en la ficha Registro de DDMS Eclipse
- Android Eclipse DDMS> Heap> Causa gris de GC
- Android Studio - Monitor de dispositivos Android - Vista vacía
- El dispositivo Android no aparece en DDMS
- Explorador de archivos vacío en Eclipse DDMS
Os: 4.3.3
Error:
[2014-02-06 13:00:14 - hierarchyviewer]Missing forwarded port for 021df5e049116bac [2014-02-06 13:00:14 - hierarchyviewer]Unable to get view server version from device 021df5e049116bac [2014-02-06 13:00:14 - hierarchyviewer]Missing forwarded port for 021df5e049116bac [2014-02-06 13:00:14 - hierarchyviewer]Unable to get view server protocol version from device 021df5e049116bac [2014-02-06 13:00:14 - ViewServerDevice]Unable to debug device: lge-nexus_4-021df5e049116bac
- DDMS y OS muestran información de memoria diferente sobre mi aplicación
- Fugas de memoria en la aplicación de Android
- ¿Cómo puedo hacer que la pestaña heap nativa de DDMS sea visible?
- Desarrollo de Android: ddms desde la línea de comandos sin ver dispositivos
- Android Studio y el dispositivo Android monitor
- Eclipse, adb y ddms no detectan Android Emulator
- Android Logcat: ¿Cómo publico un mensaje de registro con un carácter TAB?
- Android, la versión independiente de traceview está obsoleta
Consulte Perfil de su diseño con el Visor de jerarquía para el uso del visor de jerarquía.
Hoy uso el visor de la jerarquía con mi app, y consigo el problema muy similar en silulator y el dispositivo verdadero, con el visor de la jerarquía ventana de la ventana del árbol negro.
Nota: Para la versión más reciente de android studio, puedes abrir el visor de jerarquías con Tools > Android > Android Device Monitor > Window > Open Perspective... > Hierarchy View
A continuación le mostraré cómo resolver el problema en silulator y dispositivo real.
Info: el modo de depuración del dispositivo está activado, no compruebo si tiene influencia en el siguiente resultado.
un). Comprobar si el dispositivo ha abierto el servidor de vista
bogon:~ roofe$ adb shell service call window 3 Result: Parcel(00000000 00000000 '........')
Nota: si obtiene
No se puede encontrar el comando adb
Adb suele estar en el camino de sdk, el mío está en /Users/roofe/Library/Android/sdk/platform-tools/adb
. A continuación, puede añadirlo a la ruta de acceso o crear un alias para ello.
Puse alias adb='/Users/roofe/Library/Android/sdk/platform-tools/adb'
en el .bash_profile
debajo de la ruta del usuario, luego source ./.bash_profile
. Aquí el comando adb debería funcionar.
Información de salida:
Ver servidor desactivado: Result: Parcel(00000000 00000000 '........')
Ver servidor en: Result: Parcel(00000000 00000001 '........')
Si el servidor de vistas está activado, el visualizador de jerarquía debería funcionar bien. Y no es necesario que lea a continuación.
Desafortunadamente, si su servidor de vista está apagado, continúe. Ambos servidor de vista de mi simulador y dispositivo de lectura están apagados.
segundo). Comenzar a ver el servidor
bogon:~ roofe$ adb shell service call window 1 i32 4939 Result: Parcel(00000000 00000001 '........')
Si el resultado es Result: Parcel(00000000 00000001 '........')
, se ha iniciado el servidor de vistas. Si bien el resultado es Result: Parcel(00000000 00000000 '........')
, no se puede iniciar el servidor de vistas.
También puede apagar el servidor de
adb shell service call window 2 i32 4939
Aquí ejecuta el comando dos veces para apagarlo, tal vez hay un tiempo de ejecución aquí.
bogon:~ roofe$ adb shell service call window 2 i32 4939 Result: Parcel(00000000 00000001 '........') bogon:~ roofe$ adb shell service call window 2 i32 4939 Result: Parcel(00000000 00000000 '........')
La mayoría del dispositivo real no puede iniciar el servidor de vistas. Por seguridad, Android en el dispositivo real tienen restringir en esto. Puede encontrar el código relativo en el archivo WindowManageService.java código fuente de Andorid
if (!checkCallingPermission(Manifest.permission.DUMP, "startViewServer")) { return false; }
Así que si eres un cracker genio, puedes root tu dispositivo para eliminar este restringir. No lo he conseguido. Si tu intento tiene éxito, muéstrame. Seré muy apreciado en su trabajo elegante.
Aquí mi simulador funciona. Mientras dispositivo real no. Si su servidor de vista sigue apagado, continúe.
do). Utilizando el protocolo ddm
, un método del doc de Android studio doc Perfile su diseño con el visualizador de jerarquía
Si está utilizando el emulador de Android, puede omitir esta sección. De lo contrario, debe configurar su dispositivo de la siguiente manera.
Nota: tu dispositivo debe tener instalado Android 4.1 o una versión superior.
Habilitar las Opciones para programadores en tu dispositivo.
Establezca la variable de entorno ANDROID_HVPROTO = ddm en su máquina de desarrollo.
Esta variable le dice a Jerarchy Viewer que se conecte al dispositivo usando el protocolo ddm, que es el mismo que el protocolo DDMS. La advertencia es que sólo puede haber un proceso en el host que se conecta al dispositivo, por lo que debe eliminar cualquier otra sesión de DDMS para ejecutar el Visor de Jerarquía.
Agregue la export ANDROID_HVPROTO=ddm
a su .bash_profile
luego fuente ./.bash_profile
.
Quite la aplicación instalada y reinicie Android Studio , luego instale su aplicación y puede verla ahora.
Nota: configuro el ddm sin reiniciar Android Studio a, no puedo verlo en jerarquía. Un día después, me doy cuenta, y hago algunas pruebas. Me funda después de establecer el ppm, es mejor reiniciar el estudio de Android. Supongo que cuando el inicio de estudio de Android va a leer que la configuración, puede almacenarla en caché.
No lo probé sin desinstalar la aplicación.
re). Configurar un servidor de vistas
Por favor, no se sienta frustrado aquí. Para iniciar un servidor de vista es muy fácil.
Herramienta: ViewServer en github
Agregue esto a su build.gradle
allprojects { repositories { jcenter() maven {url "https://jitpack.io"} } } dependencies { ... compile 'com.github.romainguy:ViewServer:017c01cd512cac3ec054d9eee05fc48c5a9d2de' }
Agregar permiso de INTERNET
en el archivo de manifest
<uses-permission android:name="android.permission.INTERNET" />
A continuación registe el servidor de vistas a la actividad que desea inspeccionar
public class MyActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set content view, etc. ViewServer.get(this).addWindow(this); } public void onDestroy() { super.onDestroy(); ViewServer.get(this).removeWindow(this); } public void onResume() { super.onResume(); ViewServer.get(this).setFocusedWindow(this); } }
Por ahora, puedo ejecutar la vista de jerarquía en mi dispositivo real.
Últimas Android SDK Tools 25.3.0 eliminar hierarchyviewer puede encontrar herramientas SDK cambios aquí
Intente reinstalar controladores de dispositivo. A continuación, asegúrese de que adb esté funcionando y, a continuación, debería poder conectarse correctamente a través del administrador de dispositivos.