
Une fourche de Chuck

Chucker simplifie l'inspection des demandes / réponses HTTP (s) tirées par votre application Android. Chucker travaille comme un intercepteur OKHTTP persistant tous ces événements dans votre application et fournissant une interface utilisateur pour inspecter et partager leur contenu.
Les applications utilisant Chucker affichent une notification montrant un résumé de l'activité HTTP en cours. Le taraudage sur la notification lance l'interface utilisateur de Chucker. Les applications peuvent éventuellement supprimer la notification et lancer l'interface utilisateur Chucker directement à partir de leur propre interface.

Chucker est distribué par Maven Central. Pour l'utiliser, vous devez ajouter la dépendance Gradle suivante au fichier build.gradle de votre module d'application Android (pas le fichier racine).
Veuillez noter que vous devez ajouter à la fois la library et la variante library-no-op pour isoler Chucker des builds de version comme suit:
dependencies {
debugImplementation " com.github.chuckerteam.chucker:library:4.1.0 "
releaseImplementation " com.github.chuckerteam.chucker:library-no-op:4.1.0 "
} Pour commencer à utiliser Chucker, branchez simplement un nouveau ChuckerInterceptor à votre constructeur de clients OKHTTP:
val client = OkHttpClient . Builder ()
.addInterceptor( ChuckerInterceptor (context))
.build()C'est ça! ? Chucker enregistre désormais toutes les interactions HTTP réalisées par votre client OKHTTP.
Historiquement, Chucker a été distribué par Jitpack. Vous pouvez trouver une ancienne version de Chucker ici :.
N'oubliez pas de vérifier le Changelog pour jeter un œil à toutes les modifications de la dernière version de Chucker.
implementation Gradle).L'activité Chucker principale est lancée dans sa propre tâche, ce qui lui permet de s'afficher aux côtés de l'interface utilisateur de l'application hôte en utilisant Android 7.x Multi-Window Prise en charge.

Vous pouvez personnaliser Chucker en fournissant une instance de 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()AVERTISSEMENT Les données générées et stockées lors de l'utilisation de Chucker peuvent contenir des informations sensibles telles que l'autorisation ou les en-têtes de cookie, et le contenu des organismes de demande et de réponse.
Il est destiné à être utilisé pendant le développement et non dans les versions de libération ou d'autres déploiements de production.
Vous pouvez expliquer les en-têtes qui contiennent des informations sensibles en appelant redactHeader(String) sur le ChuckerInterceptor .
interceptor.redactHeader( " Auth-Token " , " User-Session " );Chucker par défaut ne gère que du texte brut, GZIP compressé ou Brotli compressé. Si vous utilisez un format binaire comme, par exemple, Protobuf ou Thrift, il ne sera pas automatiquement géré par Chucker. Vous pouvez cependant installer un décodeur personnalisé capable de lire des données à partir de différents encodages.
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() En commençant par Android 13, vos applications doivent demander l'autorisation android.permission.POST_NOTIFICATIONS à l'utilisateur afin d'afficher les notifications. Comme Chucker affiche également des notifications pour afficher l'activité du réseau, vous devez gérer la demande d'autorisation en fonction des fonctionnalités de votre application. Sans cette permission, Chucker suivra l'activité du réseau, mais il n'y aura pas de notifications sur les appareils avec Android 13 et plus récents.
Il y a 2 cas possibles:
android.permission.POST_NOTIFICATIONS est accordée à votre application.Allow dans la boîte de dialogue avec la demande d'autorisation. Dans le cas où vous n'autorisez pas cette autorisation ou ne rejetez pas cette boîte de dialogue par erreur, sur chaque lancement de Chucker, il y aura une barre de snack avec un bouton pour ouvrir les paramètres de votre application où vous pouvez modifier les paramètres d'autorisations. Remarque, vous devez accorder android.permission.POST_NOTIFICATIONS sur votre application dans les paramètres car il n'y aura pas d'application distincte dans la liste des applications dans les paramètres. Si vous migrez de Chuck à Chucker , veuillez vous référer à ce guide de migration.
Si vous migrez de Chucker V2.0 à V3.0 , veuillez vous attendre à plusieurs modifications de rupture. Vous pouvez trouver une documentation sur la façon de mettre à jour votre code sur cet autre guide de migration.
Le développement de Chucker se produit dans la branche main . Chaque poussée vers main déclenchera une publication d'un artefact SNAPSHOT pour la prochaine version. Vous pouvez obtenir ces artefacts instantanés directement à partir de sonatype avec:
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 "
} De plus, vous pouvez toujours utiliser Jitpack car il construit chaque branche. Donc, le haut de main est disponible ici:
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 vous recherchez la dernière version stable , vous pouvez toujours la trouver dans la section Releases .
Content-Encoding ou Accept-Encoding ) sont-ils manquants?Veuillez vous référer à cette section de la documentation OKHTTP. Vous pouvez choisir d'utiliser Chucker comme intercepteur d'application ou de réseau, selon vos besoins.
Afin de suivre les modifications de OKHTTP, nous avons décidé de baisser sa version dans la version 4.x Chucker 3.5.x prend en charge Android 16+, mais son développement actif s'est arrêté et seuls les corrections de bogues et les améliorations mineures atterriront sur la branche 3.x jusqu'en mars 2021.
Chucker est maintenu et amélioré pendant les nuits, les week-ends et chaque fois que l'équipe a du temps libre. Si vous utilisez Chucker dans votre projet, envisagez de nous parrainer. Cela nous aidera à acheter un domaine pour un site Web que nous aurons bientôt et dépenserons également de l'argent en organisme de bienfaisance. De plus, le parrainage nous aidera également à mieux comprendre à quel point Chucker est précieux pour le travail quotidien des gens.
Vous pouvez nous parrainer en cliquant sur le bouton Sponsor .
Nous offrons un support pour Chucker sur la chaîne #Chucker sur kotlinlang.slack.com. Venez rejoindre la conversation là-bas.
Nous recherchons des contributeurs! Ne soyez pas timide. ? N'hésitez pas à ouvrir les problèmes / les demandes de traction pour nous aider à améliorer ce projet.
Liste TODO courte pour les nouveaux contributeurs:
Help wantedAfin de commencer à travailler sur Chucker, vous devez débarquer le projet et l'ouvrir dans Android Studio / Intellij Idea.
Avant de nous engager, nous vous suggérons d'installer les crochets pré-comités avec la commande suivante:
./gradlew installGitHook
Cela s'assurera que votre code est validé contre Ktlint et Detekt avant chaque engagement. La commande s'exécutera automatiquement avant la tâche clean , vous devez donc faire installer le crochet pré-engagé d'ici là.
Avant de soumettre un PR, veuillez exécuter:
./gradlew build
Cela construira la bibliothèque et exécutera toutes les tâches de vérification (ktlint, detekt, peluches, tests unitaires) localement. Cela s'assurera que vos contrôles CI passeront.
Chucker est actuellement développé et entretenu par le Chuckeram. Lors de la soumission d'un nouveau PR, veuillez enfiler l'un des:
Un grand merci à nos contributeurs ❤️
Chucker utilise les bibliothèques open source suivantes:
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.