Error que abre el archivo del rastro: Ningún archivo o directorio (2)

Estoy consiguiendo el error antedicho:

Error que abre el archivo del rastro: Ningún archivo o directorio (2)

Cuando ejecuto mi aplicación android en el emulador. ¿Puede alguien decirme cuál podría ser la razón posible para esto?

Estoy usando android-sdk-20 y debajo de las líneas se agregan a AndroidManifest.xml

<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="15" /> 

También he añadido la línea:

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Ya que pensé que puede haber algún problema con la escritura a la tarjeta sd.

Sucede porque no ha instalado el minSdkVersion o targetSdkVersion en su computadora. Lo he probado ahora mismo.

Por ejemplo, si tiene esas líneas en su Manifest.xml:

 <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> 

Y usted ha instalado solamente el API17 en su computadora, él le reportará un error. Si desea probarlo, intente instalar la otra versión de API (en este caso, API 8).

Aún así, no es un error importante. No significa que su aplicación esté equivocada.

Perdón por mi expresión. El inglés no es mi idioma. ¡Adiós!

Creo que este es el problema

Un poco de fondo

Traceview es un visor gráfico para los registros de ejecución que crea mediante la clase Debug para registrar la información de rastreo en su código. Traceview puede ayudarlo a depurar su aplicación y perfilar su rendimiento. Habilitarlo crea un archivo .trace en la carpeta raíz de sdcard que puede ser extraída por ADB y procesada por el archivo traceview bat para su procesamiento. También puede ser agregado por el DDMS.

Es un sistema utilizado internamente por el registrador. En general, a menos que esté utilizando traceview para extraer el archivo de rastreo este error no debería molestarle. Debe buscar errores / registros relacionados directamente con su aplicación

¿Cómo puedo habilitarlo?

Existen dos maneras de generar registros de rastreo:

  1. Incluya la clase Debug en su código y llame a métodos como startMethodTracing() y stopMethodTracing() para iniciar y detener el registro de la información de rastreo en el disco. Esta opción es muy precisa porque puede especificar exactamente dónde iniciar y detener el registro de datos de traza en su código.

  2. Utilice la característica de creación de perfiles de DDMS para generar registros de rastreo. Esta opción es menos precisa porque no modifica el código, sino que especifica cuándo iniciar y detener el registro con DDMS. Aunque tiene menos control sobre dónde se inicia y se detiene el registro, esta opción es útil si no tiene acceso al código de la aplicación o si no necesita una temporización precisa del registro.

Sin embargo, existen las siguientes restricciones

Si está utilizando la clase Debug, su aplicación debe tener permiso para escribir en el almacenamiento externo ( WRITE_EXTERNAL_STORAGE ).

Si está utilizando DDMS: los dispositivos Android 2.1 y anteriores deben tener una tarjeta SD presente y su aplicación debe tener permiso para escribir en la tarjeta SD. Los dispositivos Android 2.2 y posteriores no necesitan una tarjeta SD. Los archivos de registro de seguimiento se transmiten directamente a su máquina de desarrollo.

Así que en esencia el acceso traceFile requiere dos cosas

1.) Permiso para escribir un archivo de registro de rastreo es decir WRITE_EXTERNAL_STORAGE y READ_EXTERNAL_STORAGE para una buena medida

2.) Un emulador con una tarjeta SD con espacio suficiente. El doc no dice si esto es sólo para DDMS pero también para depuración, por lo que estoy asumiendo que esto también es cierto para la depuración a través de la aplicación.

¿Qué debo hacer con este error:

Ahora el error es esencialmente una caída de no tener la ruta sdcard para crear un archivo de rastreo o no tener permiso para acceder a él. Este es un viejo hilo, pero el dev detrás de la recompensa, compruebe si están cumpliendo los dos requisitos previos. A continuación, puede buscar el archivo .trace en la carpeta sdcard del emulador. Si existe, no debería darte este problema, si no intenta crearlo agregando el startMethodTracing a tu aplicación.
No estoy seguro de por qué automáticamente busca este archivo cuando el registrador entra en acción. Creo que cuando se produce un error / evento de registro, el registrador intenta internamente intentar escribir en el archivo de rastreo y no lo encuentra, en cuyo caso lanza el error . Al examinar los documentos, no encuentro demasiadas referencias a por qué esto está automáticamente encendido. Pero en general esto no le afecta directamente, debe comprobar los registros de aplicación directa / errores. Además, como aparte, los dispositivos Android 2.2 y posteriores no necesitan una tarjeta SD para el registro de seguimiento de DDMS. Los archivos de registro de seguimiento se transmiten directamente a su máquina de desarrollo.

Información adicional sobre Traceview:

Copiar archivos de seguimiento a una máquina host

Una vez que su aplicación se haya ejecutado y el sistema haya creado los archivos de rastreo .trace en un dispositivo o emulador, debe copiarlos en su computadora de desarrollo. Puede utilizar pull pull para copiar los archivos. Este es un ejemplo que muestra cómo copiar un archivo de ejemplo, calc.trace, desde la ubicación predeterminada en el emulador al directorio / tmp en la máquina host del emulador:

Adb pull /sdcard/calc.trace / tmp Visualización de archivos de seguimiento en Traceview Para ejecutar Traceview y ver los archivos de traza, escriba traceview. Por ejemplo, para ejecutar Traceview en los archivos de ejemplo copiados en la sección anterior, utilice:

Traceview / tmp / calc Nota: Si está intentando ver los registros de rastreo de una aplicación construida con ProGuard habilitado (generación de modo de liberación), algunos métodos y nombres de miembros pueden quedar ofuscados. Puede utilizar el archivo Proguard mapping.txt para averiguar los nombres originales sin obstruir. Para obtener más información sobre este archivo, consulte la documentación de Proguard.

Creo que cualquier otra respuesta en relación con el posicionamiento de declaraciones oncreate o la eliminación de uses-sdk no están relacionados, pero esto es Android y yo podría estar equivocado. Sería útil para redirigir esta pregunta a un ingeniero androide o publicarlo como un error

Más en los documentos

Pruebe a eliminar el archivo de la forma de parte uses-sdk AndroidManifest.xml . Funcionó para mí!

No utilice el dispositivo virtual Android con una configuración demasiado baja. Que sea mediano.

Escribe todo tu código debajo de estas 2 líneas: –

  super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); 

Funcionó para mí sin volver a instalar de nuevo.

No quería reinstalar todo porque tengo tantas versiones de SDK instaladas y mi entorno de desarrollo está configurado correctamente. Conseguir que se configura de nuevo toma demasiado tiempo.

Lo que funcionó para mí fue la eliminación, a continuación, volver a crear el dispositivo virtual Android, con la certeza de poner en un valor de tamaño de tarjeta SD (he usado 200 MiB).

Captura de pantalla de la pantalla de creación AVD

Información Adicional:

Mientras que lo anterior soluciona el problema temporalmente, es recurrente. Acabo de probar mi aplicación dentro de Android Studio y vi esto en el registro de salida que no he notado antes en Eclipse:

 "/Applications/Android Studio.app/sdk/tools/emulator" -avd AVD_for_Nexus_S_by_Google -netspeed full -netdelay none WARNING: Data partition already in use. Changes will not persist! WARNING: SD Card image already in use: /Users/[user]/.android/avd/AVD_for_Nexus_S_by_Google.avd/sdcard.img ko:Snapshot storage already in use: /Users/[user]/.android/avd/AVD_for_Nexus_S_by_Google.avd/snapshots.img 

Sospecho que los cambios en el registro no se guardan en la tarjeta SD, por lo que cuando LogCat intenta acceder a los registros, no están allí, provocando el mensaje de error. El acto de borrar el AVD y volver a crearlo elimina los archivos, y el próximo lanzamiento es un nuevo lanzamiento, lo que permite LogCat para acceder a la tarjeta SD virtual.

No tendrás acceso a tu tarjeta SD real en el emulador. Tendrá que seguir los pasos de este tutorial para dirigir su emulador a un directorio en su entorno de desarrollo que actúe como su tarjeta SD.

En realidad, el problema es que ni /sys/kernel/debug no está montado, o que el kernel en ejecución no tiene trazadores ftrace compilados para que /sys/kernel/debug/tracing no esté disponible. Este es el código que lanza el error ( platform_frameworks_native/libs/utils/Trace.cpp ):

 void Tracer::init() { Mutex::Autolock lock(sMutex); if (!sIsReady) { add_sysprop_change_callback(changeCallback, 0); const char* const traceFileName = "/sys/kernel/debug/tracing/trace_marker"; sTraceFD = open(traceFileName, O_WRONLY); if (sTraceFD == -1) { ALOGE("error opening trace file: %s (%d)", strerror(errno), errno); sEnabledTags = 0; // no tracing can occur } else { loadSystemProperty(); } android_atomic_release_store(1, &sIsReady); } } 

El mensaje de registro podría ser un poco más informativo.

  • ¿Cómo puedo arreglar lo que está causando esto inundar mi logcat: I / System.out: (HTTPLog) -Static: isSBSettingEnabled false
  • Errores en Eclipse LogCat - Android
  • Deshabilitar los mensajes de WebView de la salida de logcat
  • Mensaje de logcat de Android (E / SMD: DCD activado)
  • Android: Recuperar logcat antes de bloquear (reiniciar) en un dispositivo real
  • Manejo de espacios en logcat
  • LogCat deja de funcionar
  • LogCat no muestra TAG "SMS"
  • obtener pantalla en blanco en logcat
  • ¿Qué el mensaje de logcat: "E / MoreInfoHPW_ViewGroup (2905): Vista de padre no es un TextView" significa?
  • ¿Cuál es la diferencia entre logcat vs. dmesg?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.