
Un tenedor de Chuck

Chucker simplifica la inspección de las solicitudes/respuestas HTTP (s) disparadas por su aplicación Android. Chucker trabaja como un interceptor OKHTTP que persiste todos esos eventos dentro de su aplicación y proporciona una interfaz de usuario para inspeccionar y compartir su contenido.
Las aplicaciones que usan Chucker mostrarán una notificación que muestra un resumen de la actividad HTTP en curso. Aprovechando la notificación lanza la interfaz de usuario de Chucker completa. Las aplicaciones pueden suprimir opcionalmente la notificación y iniciar la interfaz de usuario de Chucker directamente desde su propia interfaz.

Chucker se distribuye a través de Maven Central. Para usarlo, debe agregar la siguiente dependencia de Gradle al archivo build.gradle de su módulo de aplicación Android (no el archivo root).
Tenga en cuenta que debe agregar tanto la library como la variante de library-no-op para aislar a Chucker de la versión Builds de la siguiente manera:
dependencies {
debugImplementation " com.github.chuckerteam.chucker:library:4.1.0 "
releaseImplementation " com.github.chuckerteam.chucker:library-no-op:4.1.0 "
} Para comenzar a usar Chucker, simplemente conecte un nuevo ChuckerInterceptor a su constructor de clientes OKHTTP:
val client = OkHttpClient . Builder ()
.addInterceptor( ChuckerInterceptor (context))
.build()¡Eso es todo! ? Chucker ahora registrará todas las interacciones HTTP realizadas por su cliente OKHTTP.
Históricamente, Chucker fue distribuido a través de Jitpack. Puede encontrar la versión anterior de Chucker aquí :.
No olvide verificar el ChangeLog para echar un vistazo a todos los cambios en la última versión de Chucker.
implementation de graduación).La actividad principal de Chucker se lanza en su propia tarea, lo que permite que se muestre junto con la interfaz de usuario de la aplicación host utilizando el soporte de Android 7.x Multi-Window.

Puede personalizar a Chucker proporcionando una instancia de un ChuckerCollector :
// Create the Collector
val chuckerCollector = ChuckerCollector (
context = this ,
// Toggles visibility of the notification
showNotification = true ,
// Allows to customize the retention period of collected data
retentionPeriod = RetentionManager . Period . ONE_HOUR
)
// Create the Interceptor
val chuckerInterceptor = ChuckerInterceptor . Builder (context)
// The previously created Collector
.collector(chuckerCollector)
// The max body content length in bytes, after this responses will be truncated.
.maxContentLength( 250_000L )
// List of headers to replace with ** in the Chucker UI
.redactHeaders( " Auth-Token " , " Bearer " )
// Read the whole response body even when the client does not consume the response completely.
// This is useful in case of parsing errors or when the response body
// is closed before being read like in Retrofit with Void and Unit types.
.alwaysReadResponseBody( true )
// Use decoder when processing request and response bodies. When multiple decoders are installed they
// are applied in an order they were added.
.addBodyDecoder(decoder)
// Controls Android shortcut creation.
.createShortcut( true )
.build()
// Don't forget to plug the ChuckerInterceptor inside the OkHttpClient
val client = OkHttpClient . Builder ()
.addInterceptor(chuckerInterceptor)
.build()Advertencia Los datos generados y almacenados cuando se usan Chucker pueden contener información confidencial, como autorización o encabezados de cookies, y el contenido de los cuerpos de solicitud y respuesta.
Está destinado a su uso durante el desarrollo , y no en compilaciones de lanzamiento u otras implementaciones de producción.
Puede redactar encabezados que contienen información confidencial llamando redactHeader(String) en el ChuckerInterceptor .
interceptor.redactHeader( " Auth-Token " , " User-Session " );Chucker de forma predeterminada maneja solo texto sin formato, GZIP comprimido o brotli comprimido. Si usa un formato binario como, por ejemplo, ProtoBuf o Thrift, no será manejado automáticamente por Chucker. Sin embargo, puede instalar un decodificador personalizado que sea capaz de leer datos de diferentes codificaciones.
object ProtoDecoder : BodyDecoder {
fun decodeRequest ( request : Request , body : ByteString ): String? = if (request.isExpectedProtoRequest) {
decodeProtoBody(body)
} else {
null
}
fun decodeResponse ( request : Response , body : ByteString ): String? = if (request.isExpectedProtoResponse) {
decodeProtoBody(body)
} else {
null
}
}
interceptorBuilder.addBodyDecoder( ProtoDecoder ).build() Comenzando con Android 13, sus aplicaciones deben solicitar el permiso android.permission.POST_NOTIFICATIONS al usuario para mostrar notificaciones. Como Chucker también muestra notificaciones para mostrar la actividad de la red, debe manejar la solicitud de permiso según las características de su aplicación. Sin este permiso, Chucker rastreará la actividad de la red, pero no habrá notificaciones en los dispositivos con Android 13 y Newer.
Hay 2 casos posibles:
android.permission.POST_NOTIFICATIONS se otorga a su aplicación.Allow el diálogo con solicitud de permiso. En caso de que no permita este permiso o descarte ese diálogo por error, en cada lanzamiento de Chucker habrá un snackbar con un botón para abrir la configuración de su aplicación donde puede cambiar la configuración de permisos. Tenga en cuenta que debe otorgar android.permission.POST_NOTIFICATIONS a su aplicación en la configuración, ya que no habrá una aplicación separada en la lista de aplicaciones en la configuración. Si está migrando de Chuck a Chucker , consulte esta Guía de migración.
Si está migrando de Chucker v2.0 a v3.0 , espere cambios de ruptura múltiples. Puede encontrar documentación sobre cómo actualizar su código en esta otra guía de migración.
El desarrollo de Chucker ocurre en la rama main . Cada empuje a main activará una publicación de un artefacto SNAPSHOT para la próxima versión. Puede obtener esos artefactos de instantáneas directamente de Sonatype con:
repositories {
maven { url " https://oss.sonatype.org/content/repositories/snapshots/ " }
}
dependencies {
debugImplementation " com.github.chuckerteam.chucker:library:4.2.0-SNAPSHOT "
releaseImplementation " com.github.chuckerteam.chucker:library-no-op:4.2.0-SNAPSHOT "
} Además, aún puede usar jitpack ya que construye cada rama. Entonces la parte superior de main está disponible aquí:
repositories {
maven { url " https://jitpack.io " }
}
dependencies {
debugImplementation " com.github.chuckerteam.chucker:library:main-SNAPSHOT "
releaseImplementation " com.github.chuckerteam.chucker:library-no-op:main-SNAPSHOT "
} Si está buscando la última versión estable , siempre puede encontrarla en la sección Releases .
Content-Encoding o Accept-Encoding )?Consulte esta sección de la documentación OKHTTP. Puede optar por usar Chucker como una aplicación o interceptor de red, dependiendo de sus requisitos.
Para mantenerse al día con los cambios en OKHTTP, decidimos aumentar su versión en 4.x versión. Chucker 3.5.x admite Android 16+, pero su desarrollo activo se detuvo y solo las correcciones de errores y las mejoras menores aterrizarán en 3.X Branch hasta marzo de 2021.
Chucker se mantiene y mejora durante las noches, fines de semana y cada vez que el equipo tiene tiempo libre. Si usa Chucker en su proyecto, considere patrocinarnos. Esto nos ayudará a comprar un dominio para un sitio web que tendremos pronto y también gastar algo de dinero en caridad. Además, el patrocinio también nos ayudará a comprender mejor lo valioso que es Chucker para el trabajo diario de las personas.
Puede patrocinarnos haciendo clic en el botón Sponsor .
Estamos ofreciendo soporte para Chucker en el canal #Chucker en kotlinlang.slack.com. Ven y únete a la conversación allí.
¡Estamos buscando contribuyentes! No seas tímido. ? No dude en abrir las solicitudes de problemas/extracción para ayudarnos a mejorar este proyecto.
Lista TODO cortas para nuevos contribuyentes:
Help wantedPara comenzar a trabajar en Chucker, debe desembolsar el proyecto y abrirlo en Android Studio/IntelliJ Idea.
Antes de comprometerse, le sugerimos que instale los ganchos previos al comercio con el siguiente comando:
./gradlew installGitHook
Esto se asegurará de que su código esté validado contra Ktlint y Datekt antes de cada compromiso. El comando se ejecutará automáticamente antes de la tarea clean , por lo que debe tener el gancho previo al comité instalado para entonces.
Antes de enviar un PR, por favor ejecute:
./gradlew build
Esto construirá la biblioteca y ejecutará todas las tareas de verificación (Ktlint, Detekt, Lint, Tests Units) localmente. Esto asegurará que pasen sus verificaciones de CI.
Chucker está actualmente desarrollado y mantenido por el Chuckerteam. Al enviar un nuevo PR, por favor ping uno de:
Muchas gracias a nuestros contribuyentes ❤️
Chucker usa las siguientes bibliotecas de código abierto:
Copyright (C) 2018-2021 Chucker Team.
Copyright (C) 2017 Jeff Gilfelt.
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.