
Вилка Чака

Чакер упрощает проверку запросов/ответов HTTP (S), запущенных вашим приложением Android. Чакер работает как перехватчик OKTTP, сохраняющий все эти события в вашем приложении и предоставляя пользовательский интерфейс для проверки и обмена их контентом.
Приложения с использованием Chacer будут отображать уведомление , показывающее сводку текущей активности HTTP. Нажатие на уведомление запускает полный интерфейс CHACKER. Приложения могут при желании подавить уведомление и запустить пользовательский интерфейс Chacker непосредственно изнутри своего интерфейса.

Чакер распространяется через Maven Central. Чтобы использовать его, вам необходимо добавить следующую зависимость Gradle в файл build.gradle вашего модуля приложения Android (не корневой файл).
Обратите внимание, что вам следует добавить как library , так и вариант library-no-op чтобы изолировать Chacker от выпуска, следующие:
dependencies {
debugImplementation " com.github.chuckerteam.chucker:library:4.1.0 "
releaseImplementation " com.github.chuckerteam.chucker:library-no-op:4.1.0 "
} Чтобы начать использовать Chacer, просто подключите новый ChuckerInterceptor к вашему застройщику клиента OKTTP:
val client = OkHttpClient . Builder ()
.addInterceptor( ChuckerInterceptor (context))
.build()Вот и все! ? Чакер теперь будет записывать все http -взаимодействия, выполненные вашим клиентом OKTTP.
Исторически, Чакер был распространен через Jitpack. Вы можете найти старую версию Чакер здесь :.
Не забудьте проверить ChangeLog, чтобы взглянуть на все изменения в последней версии Чакер.
implementation Gradle).Основная активность Chacker запускается в собственной задаче, что позволяет отображать его вместе с пользовательским интерфейсом приложения Host с использованием поддержки много-окна Android 7.x.

Вы можете настроить Chacker, предоставляя экземпляр 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()Предупреждение , сгенерированные и сохраненные данные при использовании CHACKER, может содержать конфиденциальную информацию, такую как авторизация или заголовки Cookie, а также содержимое тел запроса и ответов.
Он предназначен для использования во время разработки , а не в сборе выпуска или других развертывания производства.
Вы можете отредактировать заголовки, которые содержат конфиденциальную информацию, вызывая redactHeader(String) на ChuckerInterceptor .
interceptor.redactHeader( " Auth-Token " , " User-Session " );Чакер по умолчанию обрабатывает только простой текст, GZIP сжимается или сжимает Brotli. Если вы используете бинарный формат, например, Protobuf или Thrift, его не будет автоматически обрабатываться Чакер. Однако вы можете установить пользовательский декодер, который способен читать данные из разных кодировки.
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() Начиная с Android 13, ваши приложения должны запросить android.permission.POST_NOTIFICATIONS разрешение пользователю, чтобы показать уведомления. Поскольку Чакер также показывает уведомления, чтобы показать сетевую деятельность, вам необходимо обрабатывать запрос на разрешение в зависимости от функций вашего приложения. Без этого разрешения Чакер будет отслеживать сетевую деятельность, но на устройствах не будет уведомлений с Android 13 и новым.
Есть 2 возможных случая:
android.permission.POST_NOTIFICATIONS .Allow диалоговое окно» с запроса разрешения. Если вы не разрешаете это разрешение и не отклоняете этот диалог по ошибке, при каждом запуске Chacker будет закусочная с кнопкой, чтобы открыть настройки приложения, где вы можете изменить настройки разрешений. Обратите внимание, что вам необходимо предоставить android.permission.POST_NOTIFICATIONS в ваше приложение в настройках, так как в списке приложений не будет отдельного приложения. Если вы переходите из Чака в Чакер , пожалуйста, обратитесь к этому руководству по миграции.
Если вы мигрируете с Chacker v2.0 на v3.0 , пожалуйста, ожидайте многократных изменений. Вы можете найти документацию о том, как обновить свой код в этом другом руководстве по миграции.
Развитие Чакер происходит в main ветви. Каждый толчок к main запустит публикацию артефакта SNAPSHOT для предстоящей версии. Вы можете получить эти артефакты снимков непосредственно от Sonatype с:
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 "
} Более того, вы все равно можете использовать Jitpack, поскольку он строит каждую ветвь. Итак, вершина main здесь доступна здесь:
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 "
} Если вы ищете последнюю стабильную версию , вы всегда можете найти ее в разделе Releases .
Content-Encoding или Accept-Encoding ) отсутствуют?Пожалуйста, обратитесь к этому разделу документации OKTTP. Вы можете использовать Чакер в качестве приложения или сетевого перехватчика, в зависимости от ваших требований.
Чтобы не отставать от изменений в OKTTP, мы решили увеличить его версию в выпуске 4.x Chacker 3.5.x поддерживает Android 16+, но его активная разработка прекратилась, и только исправления ошибок и незначительные улучшения приземляются на 3.x филиала до марта 2021 года.
Чакер поддерживается и улучшается по ночам, выходным, и всякий раз, когда у команды есть свободное время. Если вы используете Чакер в своем проекте, рассмотрите возможность нас спонсировать. Это поможет нам купить домен для веб -сайта, который у нас скоро будет, а также потратить немного денег на благотворительность. Кроме того, спонсорство также поможет нам лучше понять, насколько ценным является Чакер для повседневной работы людей.
Вы можете спонсировать нас, нажав кнопку Sponsor .
Мы предлагаем поддержку Чакер на канале #Chucker на kotlinlang.slack.com. Приходите и присоединяйтесь к разговору там.
Мы ищем участников! Не стесняйся. ? Не стесняйтесь открывать проблемы/привлечь запросы, чтобы помочь нам улучшить этот проект.
Короткий список TODO для новых участников:
Help wantedЧтобы начать работу над Чакерером, вам нужно расколоть проект и открыть его в Android Studio/Intellij Idea.
Прежде чем совершить, мы предлагаем вам установить крючки предварительной коммиты со следующей командой:
./gradlew installGitHook
Это убедится, что ваш код будет подтвержден против Ktlint и Detekt перед каждым коммитом. Команда будет работать автоматически перед задачей clean , поэтому к тому времени вы должны установить крюк перед набором.
Перед отправкой пиара, пожалуйста, запустите:
./gradlew build
Это построит библиотеку и будет выполнять все задачи проверки (Ktlint, Detekt, Lint, модульные тесты) локально. Это убедится, что ваши чеки CI пройдут.
Чакер в настоящее время разрабатывается и поддерживается Cuckerteam. При отправке нового пиара, пожалуйста, пинг один из:
Большое спасибо нашим участникам ❤
Чакер использует следующие библиотеки с открытым исходным кодом:
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.