
Garpu chuck

Chucker menyederhanakan inspeksi permintaan/tanggapan HTTP yang dipecat oleh aplikasi Android Anda. Chucker bekerja sebagai pencegat OkHTTP yang bertahan dalam semua acara di dalam aplikasi Anda, dan menyediakan UI untuk memeriksa dan berbagi konten mereka.
Aplikasi yang menggunakan Chucker akan menampilkan pemberitahuan yang menunjukkan ringkasan aktivitas HTTP yang sedang berlangsung. Mengetuk notifikasi meluncurkan UI Chucker lengkap. Aplikasi secara opsional dapat menekan pemberitahuan, dan meluncurkan Chucker UI langsung dari dalam antarmuka mereka sendiri.

Chucker didistribusikan melalui Maven Central. Untuk menggunakannya, Anda perlu menambahkan ketergantungan lulusan berikut ke file build.gradle dari modul aplikasi Android Anda (bukan file root).
Harap dicatat bahwa Anda harus menambahkan varian library dan library-no-op untuk mengisolasi chucker dari rilis build sebagai berikut:
dependencies {
debugImplementation " com.github.chuckerteam.chucker:library:4.1.0 "
releaseImplementation " com.github.chuckerteam.chucker:library-no-op:4.1.0 "
} Untuk mulai menggunakan Chucker, cukup colokkan ChuckerInterceptor baru ke pembangun klien OkHTTP Anda:
val client = OkHttpClient . Builder ()
.addInterceptor( ChuckerInterceptor (context))
.build()Itu saja! ? Chucker sekarang akan merekam semua interaksi HTTP yang dibuat oleh klien OKHTTP Anda.
Secara historis, Chucker didistribusikan melalui Jitpack. Anda dapat menemukan versi Chucker yang lebih lama di sini :.
Jangan lupa untuk memeriksa changelog untuk melihat semua perubahan dalam versi terbaru Chucker.
implementation lulusan).Aktivitas Chucker utama diluncurkan dalam tugasnya sendiri, memungkinkannya ditampilkan di samping aplikasi host UI menggunakan dukungan multi-window Android 7.x.

Anda dapat menyesuaikan chucker memberikan contoh 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()PERINGATAN Data yang dihasilkan dan disimpan saat menggunakan Chucker dapat berisi informasi sensitif seperti otorisasi atau header cookie, dan isi badan permintaan dan respons.
Ini dimaksudkan untuk digunakan selama pengembangan , dan bukan dalam pembangunan rilis atau penyebaran produksi lainnya.
Anda dapat mereduksi header yang berisi informasi sensitif dengan menghubungi redactHeader(String) di ChuckerInterceptor .
interceptor.redactHeader( " Auth-Token " , " User-Session " );Chucker secara default hanya menangani teks biasa, gzip terkompresi atau dikompresi brosli. Jika Anda menggunakan format biner seperti, misalnya, protobuf atau barang bekas itu tidak akan ditangani secara otomatis oleh Chucker. Namun, Anda dapat menginstal dekoder khusus yang mampu membaca data dari berbagai penyandian.
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() Dimulai dengan Android 13, aplikasi Anda perlu meminta izin android.permission.POST_NOTIFICATIONS untuk pengguna untuk menunjukkan pemberitahuan. Karena Chucker juga menunjukkan pemberitahuan untuk menunjukkan aktivitas jaringan, Anda perlu menangani permintaan izin tergantung pada fitur aplikasi Anda. Tanpa izin ini, Chucker akan melacak aktivitas jaringan, tetapi tidak akan ada pemberitahuan tentang perangkat dengan Android 13 dan lebih baru.
Ada 2 kemungkinan kasus:
android.permission.POST_NOTIFICATIONS izin diberikan kepada aplikasi Anda.Allow dalam dialog dengan permintaan izin. Jika Anda tidak mengizinkan izin ini atau mengabaikan dialog itu karena kesalahan, pada setiap peluncuran chucker akan ada snackbar dengan tombol untuk membuka pengaturan aplikasi Anda di mana Anda dapat mengubah pengaturan izin. Catatan, Anda perlu memberikan android.permission.POST_NOTIFICATIONS ke aplikasi Anda di pengaturan karena tidak akan ada aplikasi terpisah dalam daftar aplikasi dalam pengaturan. Jika Anda bermigrasi dari Chuck ke Chucker , silakan merujuk ke panduan migrasi ini.
Jika Anda bermigrasi dari Chucker v2.0 ke V3.0 , harap harap beberapa perubahan besar. Anda dapat menemukan dokumentasi tentang cara memperbarui kode Anda pada panduan migrasi lainnya.
Pengembangan Chucker terjadi di cabang main . Setiap dorongan ke main akan memicu penerbitan artefak SNAPSHOT untuk versi yang akan datang. Anda bisa mendapatkan artefak snapshot itu langsung dari sonatype dengan:
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 "
} Selain itu, Anda masih dapat menggunakan Jitpack karena membangun setiap cabang. Jadi bagian atas main tersedia di sini:
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 "
} Jika Anda mencari versi stabil terbaru , Anda selalu dapat menemukannya di bagian Releases .
Content-Encoding atau Accept-Encoding ) hilang?Silakan merujuk ke bagian dokumentasi OKHTTP ini. Anda dapat memilih untuk menggunakan Chucker sebagai aplikasi atau pencegat jaringan, tergantung pada kebutuhan Anda.
Untuk mengimbangi perubahan di OKHTTP, kami memutuskan untuk menabrak versinya dalam rilis 4.x Chucker 3.5.x mendukung Android 16+ tetapi pengembangan aktifnya berhenti dan hanya perbaikan bug dan perbaikan kecil yang akan mendarat di cabang 3.x hingga Maret 2021.
Chucker dipertahankan dan ditingkatkan selama malam hari, akhir pekan dan kapan pun tim memiliki waktu luang. Jika Anda menggunakan Chucker dalam proyek Anda, silakan pertimbangkan untuk mensponsori kami. Ini akan membantu kami membeli domain untuk situs web yang akan segera kami miliki dan juga menghabiskan sejumlah uang untuk amal. Selain itu, sponsor juga akan membantu kami memahami lebih baik betapa berharga Chucker untuk pekerjaan sehari -hari orang.
Anda dapat mensponsori kami dengan mengklik tombol Sponsor .
Kami menawarkan dukungan untuk Chucker di saluran #Chucker di Kotlinlang.slack.com. Datang dan bergabunglah dengan percakapan di sana.
Kami mencari kontributor! Jangan malu. ? Jangan ragu untuk membuka masalah/menarik permintaan untuk membantu kami meningkatkan proyek ini.
Daftar TODO Pendek untuk Kontributor Baru:
Help wantedUntuk mulai mengerjakan Chucker, Anda perlu membayar proyek dan membukanya di Android Studio/IntelliJ Idea.
Sebelum berkomitmen, kami menyarankan Anda menginstal kait pra-komit dengan perintah berikut:
./gradlew installGitHook
Ini akan memastikan kode Anda divalidasi terhadap Ktlint dan Detekt sebelum setiap komit. Perintah akan berjalan secara otomatis sebelum tugas clean , jadi Anda harus memasang kait pra-komit saat itu.
Sebelum mengirimkan PR, silakan jalankan:
./gradlew build
Ini akan membangun perpustakaan dan akan menjalankan semua tugas verifikasi (ktlint, detekt, serat, unit tes) secara lokal. Ini akan memastikan cek CI Anda akan berlalu.
Chucker saat ini dikembangkan dan dikelola oleh ChuckerTeam. Saat mengirimkan PR baru, silakan salah satu dari:
Terima kasih banyak kepada kontributor kami ❤️
Chucker menggunakan pustaka sumber terbuka berikut:
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.