El Arsenal de Android: depuración

Pluto es un depurador en el dispositivo para aplicaciones de Android, que ayuda a inspeccionar solicitudes / respuestas HTTP, capturar fallas y ANR, y manipular datos de aplicaciones sobre la marcha.

Viene con una interfaz de usuario para monitorear y compartir información, así como API para acceder y usar esa información en su aplicación.


Integre Plutón en su aplicación

Agregar dependencias de Gradle

Plutón se distribuye a través mavenCentral. Para usarlo, debe agregar la siguiente dependencia de Gradle al archivo build.gradle del módulo de la aplicación de Android.

Nota: agregue la variante plutón y la variante plutón-no-op para aislar a Plutón de las versiones de lanzamiento.

dependencies {
  debugImplementation 'com.mocklets:pluto:LATEST_VERSION'
  releaseImplementation'com.mocklets:pluto-no-op:LATEST_VERSION'
}

Inicializar Plutón

Ahora, para comenzar a usar Plutón, inicialice el SDK de Pluto desde la clase de aplicación pasándole el contexto.

Pluto.initialize(context)

Agregue el interceptor de Plutón

Para depurar solicitudes / respuestas HTTP, conecte PlutoInterceptor a su OkHttp Client Builder

val client = OkHttpClient.Builder()
    .addInterceptor(PlutoInterceptor())
    .build()

Establecer el controlador de excepciones global

Para detectar excepciones no detectadas en su aplicación, adjunte UncaughtExceptionHandler a Plutón

Pluto.setExceptionHandler { thread, throwable ->
    Log.d("Exception", "uncaught exception handled on thread: " + thread.name, throwable)
}

Escuche las ANR

Plutón puede capturar y almacenar posibles ANR que se produzcan en la aplicación. También puede escuchar estos ANR e informarlos a cualquier herramienta de informes de fallas como Firebase Crashlytics, Bugsnag, etc.

Pluto.setANRListener(object: ANRListener {
    override fun onAppNotResponding(exception: ANRException) {
        exception.printStackTrace()
        PlutoLog.e("ANR", exception.threadStateMap)
    }
})

Agregar registro de Plutón

Pluto le permite registrar y conservar la ruta del usuario a través de la aplicación y ayudar a depurarla sin necesidad de conectarse a Logcat.

PlutoLog.event("analytics", eventName, HashMap(attributes))
PlutoLog.d("debug_log", "button clicked")
PlutoLog.e("error_log", "api call falied with http_status 400")
PlutoLog.w("warning_log", "warning log")
PlutoLog.i("info_log", "api call completed")

Pero si está conectado a Logcat, PlutoLogs se comporta de manera similar a la clase Log, con una mejora para etiquetar el método y el nombre de archivo también. En Logcat, PlutoLogs se verá así.

D/onClick(MainActivity.kt:40) | debug_log: button clicked
E/onFailure(NetworkManager.kt:17) | error_log: api call falied with http_status 400

Establecer las propiedades de la aplicación

Plutón le permite almacenar información como el estado de la aplicación (como las configuraciones de la aplicación), las propiedades del usuario (como el correo electrónico, el perfil) y la huella digital del dispositivo (como el IMEI).

Se puede acceder a estos datos más tarde a través de la interfaz de usuario de depuración de Plutón. Este método se puede llamar varias veces y seguirá agregando datos.

Pluto.setAppProperties(hashMapOf(
    "User id" to "2whdue-dn4f-3hr-dfhrhs",
    "User email" to "john.smith@gmail.com"
))

? ¡Ya terminaste!

Ahora reconstruya y ejecute su aplicación, recibirá una notificación de Plutón, úsela para ingresar a la interfaz de usuario de Plutón.


Contribución

Buscamos colaboradores, ayúdanos a mejorar Plutón. ?

Así es como puede ayudar

  • Busque problemas marcados como help wanted
  • Al enviar un nuevo RP, asegúrese de que todas las pruebas pasen. Si cree que necesitamos nuevas pruebas, no dude en agregar nuevas pruebas.

Requisito previo

Para comenzar a trabajar en Plutón, debe bifurcar el proyecto y abrirlo en Android Studio / IntelliJ IDEA.

Antes de confirmar, le sugerimos que instale los ganchos de confirmación previa con el siguiente comando:

Esto asegurará que su código esté validado contra ktLint Y detekt antes de cada compromiso. El comando se ejecutará automáticamente antes de clean tarea, por lo que debe tener instalado el gancho de confirmación previa.

Antes de enviar un PR, realice:

Esto creará la biblioteca y se asegurará de que se realicen sus comprobaciones de CI.


Gracias

Muchísimas gracias ? a ChuckerTeam / Chucker en busca de inspiración detrás del código del interceptor de red.


Licencia

Copyright 2021 Graylattice Communications Private Limited.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

.

Compruebe también

en vivo desde Droidcon, incluida la mayor actualización de Gemini en Android Studio y más lanzamientos del SDK de Android.

Acabamos de lanzar nuestro episodio de otoño de #TheAndroidShow en YouTube etcétera desarrollador.android.comy esta vez …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *