
Eine Gabel von Chuck

Chucker vereinfacht die Inspektion von HTTP -Anfragen/Antworten, die von Ihrer Android -App abgefeuert wurden. Chucker arbeitet als OKHTTP -Interceptor , der alle diese Ereignisse in Ihrer Anwendung fortsetzt und eine Benutzeroberfläche zum Inspektieren und Teilen ihrer Inhalte bereitstellt.
Apps, die Chucker verwenden, zeigen eine Benachrichtigung an, die eine Zusammenfassung der laufenden HTTP -Aktivität zeigt. Wenn Sie auf die Benachrichtigung tippen, startet die vollständige Chucker -Benutzeroberfläche. Apps können die Benachrichtigung optional unterdrücken und die Chucker -Benutzeroberfläche direkt von ihrer eigenen Schnittstelle starten.

Chucker wird über Maven Central verteilt. Um dies zu verwenden, müssen Sie die folgende Abhängigkeit von Gradle zur Datei build.gradle Ihres Android -App -Moduls (nicht der Root -Datei) hinzufügen.
Bitte beachten Sie, dass Sie sowohl die library als auch die library-no-op Variante hinzufügen sollten, um Chucker von Release-Builds wie folgt zu isolieren:
dependencies {
debugImplementation " com.github.chuckerteam.chucker:library:4.1.0 "
releaseImplementation " com.github.chuckerteam.chucker:library-no-op:4.1.0 "
} Um Chucker zu verwenden, stecken Sie einfach einen neuen ChuckerInterceptor in Ihren OKHTTP -Client -Builder an:
val client = OkHttpClient . Builder ()
.addInterceptor( ChuckerInterceptor (context))
.build()Das war's! ? Chucker wird nun alle HTTP -Interaktionen aufzeichnen, die von Ihrem Okhttp -Client hergestellt wurden.
Historisch gesehen wurde Chucker über Jitpack verteilt. Hier finden Sie eine ältere Version von Chucker :.
Vergessen Sie nicht, den ChangeLog zu überprüfen, um sich alle Änderungen in der neuesten Version von Chucker anzusehen.
implementation ).Die Haupt-Chucker-Aktivität wird in einer eigenen Aufgabe gestartet, sodass sie neben der Host-App-UI mithilfe von Android 7.x Multi-Window-Unterstützung angezeigt werden kann.

Sie können Chucker anpassen, die eine Instanz eines ChuckerCollector anbieten:
// 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()Warnung der Daten, die bei der Verwendung von Chucker generiert und gespeichert wurden, kann vertrauliche Informationen wie Autorisierung oder Cookie -Header sowie den Inhalt der Anfrage- und Antwortkörper enthalten.
Es ist für die Entwicklung und nicht in Release -Builds oder anderen Produktionsbereitstellungen gedacht.
Sie können Header, die vertrauliche Informationen enthalten, reduzieren, indem Sie redactHeader(String) am ChuckerInterceptor aufrufen.
interceptor.redactHeader( " Auth-Token " , " User-Session " );Standardmäßig Griffe nur einfacher Text, GZIP -komprimiert oder brotli komprimiert. Wenn Sie beispielsweise ein binäres Format wie Protobuf oder Sparsamkeit verwenden, wird es nicht automatisch von Chucker behandelt. Sie können jedoch einen benutzerdefinierten Decoder installieren, der Daten aus verschiedenen Codierungen lesen kann.
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() Beginnend mit Android 13 müssen Ihre Apps die Berechtigung von android.permission.POST_NOTIFICATIONS an den Benutzer anfordern, um Benachrichtigungen anzuzeigen. Da Chucker auch Benachrichtigungen zeigt, um Netzwerkaktivitäten anzuzeigen, müssen Sie je nach App -Funktionen die Berechtigungsanforderung bearbeiten. Ohne diese Erlaubnis verfolgt Chucker die Netzwerkaktivität, aber es gibt keine Benachrichtigungen auf Geräten mit Android 13 und neuer.
Es gibt 2 mögliche Fälle:
android.permission.POST_NOTIFICATIONS Ihrer App erteilt wird.Allow . Falls Sie diese Berechtigung nicht zulassen oder diesen Dialog versehentlich abweisen, gibt es bei jedem Chucker -Start eine Snackbar mit einer Schaltfläche, um Ihre App -Einstellungen zu öffnen, an der Sie die Berechtigungseinstellungen ändern können. Beachten Sie, dass Sie in den Einstellungen android.permission.POST_NOTIFICATIONS an Ihre App gewähren müssen, da in den Einstellungen keine separate App in Apps -Liste vorhanden ist. Wenn Sie von Chuck nach Chucker migrieren, finden Sie diesen Migrationshandbuch.
Wenn Sie von Chucker V2.0 auf V3.0 migrieren, erwarten Sie bitte mehrere Änderungen. Sie finden eine Dokumentation, wie Sie Ihren Code auf diesem anderen Migrationshandbuch aktualisieren.
Die Entwicklung von Chucker findet im main statt. Jeder Drang zum main wird eine Veröffentlichung eines SNAPSHOT -Artefakts für die kommende Version auslösen. Sie können diese Schnappschüsse Artefakte direkt vom Sonatyp erhalten mit:
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 "
} Darüber hinaus können Sie JITPACK immer noch verwenden, während es jeden Zweig baut. Hier ist die Spitze des main erhältlich:
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 "
} Wenn Sie nach der neuesten stabilen Version suchen, finden Sie sie immer im Abschnitt Releases .
Content-Encoding oder Accept-Encoding )?In diesem Abschnitt der Dokumentation von OKHTTP finden Sie bitte. Sie können Chucker je nach Ihren Anforderungen entweder als Anwendung oder als Netzwerk -Interceptor verwenden.
Um mit den Änderungen in OKHTTP Schritt zu halten, haben wir beschlossen, seine Version in 4.x Release zu stoßen. Chucker 3.5.x unterstützt Android 16+, aber seine aktive Entwicklung hat gestoppt, und nur Fehlerbehebungen und geringfügige Verbesserungen werden bis März 2021 auf 3.x Branch landen.
Chucker wird nachts, Wochenenden und wann immer das Team Freizeit hat und verbessert. Wenn Sie Chucker in Ihrem Projekt verwenden, sollten Sie uns empfinden. Dies wird uns helfen, eine Domain für eine Website zu kaufen, die wir in Kürze haben und auch etwas Geld für wohltätige Zwecke ausgeben werden. Darüber hinaus hilft uns das Sponsoring, besser zu verstehen, wie wertvoll Chucker für die alltägliche Arbeit der Menschen ist.
Sie können uns sponsern, indem Sie auf die Schaltfläche Sponsor klicken.
Wir bieten Chucker auf dem #chucker -Kanal auf kotlinlang.slack.com Unterstützung an. Komm und schließe dich dem Gespräch dort an.
Wir suchen nach Mitwirkenden! Sei nicht schüchtern. ? Fühlen Sie sich frei, Probleme/Anfragen zu öffnen, um dieses Projekt zu verbessern.
Kurze TODO -Liste für neue Mitwirkende:
Help wantedUm an Chucker zu arbeiten, müssen Sie das Projekt in der Idee von Android Studio/Intellij eröffnen.
Bevor Sie sich verpflichten, empfehlen wir Ihnen, die Pre-Commit-Hooks mit dem folgenden Befehl zu installieren:
./gradlew installGitHook
Dadurch wird sichergestellt, dass Ihr Code vor jedem Commit gegen KTLINT und DETKT validiert wird. Der Befehl wird vor der clean Aufgabe automatisch ausgeführt, sodass Sie den Vor-Commit-Hook bis dahin installieren lassen.
Bevor Sie einen PR einreichen, rennen Sie bitte:
./gradlew build
Dadurch wird die Bibliothek erstellt und alle Überprüfungsaufgaben (KTLINT, DETEKT, FINT, EINHEIT -Tests) lokal ausgeführt. Dadurch wird sichergestellt, dass Ihre CI -Schecks bestehen.
Chucker wird derzeit vom ChuckerTeam entwickelt und gepflegt. Wenn Sie eine neue PR einreichen, pingen Sie bitte einen von:
Vielen Dank an unsere Mitwirkenden ❤️
Chucker verwendet die folgenden Open -Source -Bibliotheken:
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.