Skip to content

Commit 840d9f6

Browse files
committed
docs: update docs by release 1.0.0
1 parent cc481cd commit 840d9f6

File tree

3 files changed

+269
-168
lines changed

3 files changed

+269
-168
lines changed

CHANGELOG.md

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,23 @@
22

33
### Changes
44

5-
- *No changes*
5+
* **Breaking changes:** Удалён `plugin-flipper`. Вместо него используйте плагин Konfeature. См. гайд по миграции: [migration guide](docs/migration_guide.md).
6+
* **Breaking changes:** Удалён `DebugStage` из `plugin-servers`. Вместо него используйте `DebugServer`. См. [migration guide](docs/migration_guide.md).
7+
* **Breaking changes:** Удалён `plugin-accounts`. Плагин для работы с тестовыми аккаунтами полностью удалён. См. [migration guide](docs/migration_guide.md).
8+
* **Breaking changes:** Удалён `plugin-app-settings`. Плагин для просмотра и редактирования `SharedPreferences` полностью удалён. См. [migration guide](docs/migration_guide.md).
9+
* **Breaking changes:** Удалён `DebugPanelConfig` и shaker mode. Параметр `config` убран из `DebugPanel.initialize()`. Открытие панели по встряхиванию устройства больше не поддерживается. См. [migration guide](docs/migration_guide.md).
10+
* **Breaking changes:** Повышен `minSdk` с 21 до 23. Библиотека больше не поддерживает Android 5.0–5.1 (API 21–22).
11+
* **Breaking changes:** Java compatibility повышена с 11 до 17. Требуется JDK 17+.
12+
* **Breaking changes:** Gradle обновлён с 8.11 до 9.1.
13+
* **Breaking changes:** Обновлён каталог версий зависимостей (2025.03.10 → 2026.02.23). Подробнее [здесь](https://github.com/RedMadRobot/gradle-version-catalogs/releases/tag/2026.02.23).
14+
* Повышены `compileSdk` и `targetSdk` с 35 до 36.
15+
* Удалён модуль `panel-common`. Зависимости перенесены в `panel-core` и отдельные плагины.
16+
* Дебаг-панель теперь открывается как полноэкранная `Activity` вместо bottom sheet.
17+
* Хранение серверов переведено с Room на DataStore.
18+
* Добавлен статический анализатор detekt.
19+
* Добавлен `plugin-about-app` для отображения информации о приложении в дебаг-панели.
20+
* Добавлена возможность поиска тогглов по ключу в `plugin-konfeature`.
21+
* Исправлена утечка памяти в `DebugPanelBroadcastReceiver`.
622

723
## [0.9.3] (2025-04-24)
824

@@ -50,9 +66,9 @@
5066
* Исправлен краш на SDK 34 (#7)
5167
* Исправлен краш при доступе к БД (#5)
5268
* Обновлены зависимости:
53-
* Kotlin 1.6.20 → 1.9.23
54-
* Room 2.4.0 → 2.6.1
55-
* KotlinX Coroutines 1.3.9 → 1.8.0
69+
* Kotlin 1.6.20 → 1.9.23
70+
* Room 2.4.0 → 2.6.1
71+
* KotlinX Coroutines 1.3.9 → 1.8.0
5672
* Удалено использование синтетиков
5773
* Обновлено окружение сборки проекта
5874

README.md

Lines changed: 52 additions & 164 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,20 @@
11
# Debug-panel
22

3-
[![Maven Central Version](https://img.shields.io/maven-central/v/com.redmadrobot.debug/panel-core?style=flat-square)](https://central.sonatype.com/search?namespace=com.redmadrobot.debug)
4-
5-
Бибилиотека для отладки приложений.
6-
7-
> [!WARNING]
8-
>
9-
> Библиотека находится в стадии разработки.
3+
Библиотека для отладки приложений.
104

11-
---
5+
[![Maven Central Version](https://img.shields.io/maven-central/v/com.redmadrobot.debug/panel-core?style=flat-square)](https://central.sonatype.com/search?namespace=com.redmadrobot.debug)
6+
[![License](https://img.shields.io/github/license/RedMadRobot/debug-panel-android?style=flat-square)][license]
7+
[![Android](https://img.shields.io/badge/Android-3DDC84?style=flat-square&logo=android&logoColor=white)](#)
128

13-
**[Changelog][changelog]** | **[Документация по разработке плагинов][plugin-development-doc]** | **[Миграция на новые версии][migration-guide]**
9+
**[Changelog][changelog]** | **[Миграция на новые версии][migration-guide]**
1410

15-
Тебе надоело каждый раз вручную вбивать логин и пароль тестового пользователя или пересобирать приложение для того чтобы поменять сервер в настройках? Эта библиотека разрабатывается с идеей решить эти и другие проблемы, и сделать процесс отладки приложения более удобным.
11+
Тебе надоело пересобирать приложение для того чтобы поменять сервер в настройках или переключить feature toggle? Эта библиотека разрабатывается с идеей решить эти и другие проблемы, и сделать процесс отладки приложения более удобным.
1612

1713
В данный момент библиотека предоставляет следующий функционал:
1814

19-
1. **Добавление, редактирование и выбор юзера.**
20-
2. **Добавление, редактирование и выбор сервера.**
21-
3. **Просмотр и редактирование SharedPreferences.**
22-
4. **Управление Feature toggle на основе Flipper.**
23-
5. **Управление remote config на основе Konfeature.**
15+
1. **Добавление, редактирование и выбор сервера.**
16+
2. **Управление feature-toggles и remote config на основе Konfeature.**
17+
3. **Отображение информации о приложении.**
2418

2519
Библиотека разрабатывается используя подход работы с плагинами, когда каждый функционал подключается отдельным модулем в зависимостях.
2620

@@ -30,46 +24,38 @@
3024

3125
1. Подключить `Core` модуль для работы самой панели:
3226

33-
```groovy
27+
```kotlin
3428

3529
dependencies {
36-
//core модуль панели
37-
debugImplementation 'com.redmadrobot.debug:panel-core:${debug_panel_version}'
30+
// Core модуль панели
31+
debugImplementation("com.redmadrobot.debug:panel-core:${debug_panel_version}")
3832
}
3933
```
4034

4135

4236

4337
2. Подключить необходимые плагины
4438

45-
```groovy
39+
```kotlin
4640
dependencies {
47-
//Плагин для работы с аккаунтами
48-
debugImplementation 'com.redmadrobot.debug:plugin-accounts:${debug_panel_version}'
41+
// Плагин для работы с серверами
42+
debugImplementation("com.redmadrobot.debug:plugin-servers:${debug_panel_version}")
4943

50-
//Плагин для работы с серверами
51-
debugImplementation 'com.redmadrobot.debug:plugin-servers:${debug_panel_version}'
44+
// Плагин для работы с remote config на основе Konfeature
45+
debugImplementation("com.redmadrobot.debug:plugin-konfeature:${debug_panel_version}")
46+
// Так же необходимо подключить саму библиотеку konfeature
47+
debugImplementation("com.redmadrobot.konfeature:konfeature:${konfeature_version}")
5248

53-
//Плагин для работы с SharedPreferences
54-
debugImplementation 'com.redmadrobot.debug:plugin-app-settings:${debug_panel_version}'
55-
56-
//Плагин для работы с Feature Toggle на основе Flipper
57-
debugImplementation 'com.redmadrobot.debug:plugin-flipper:${debug_panel_version}'
58-
//Так же необходимо подключить саму библеотеку flipper
59-
debugImplementation "com.redmadrobot:flipper:${flipper_version}"
60-
61-
//Плагин для работы с remote config на основе Konfeature
62-
debugImplementation 'com.redmadrobot.debug:plugin-konfeature:${debug_panel_version}'
63-
//Так же необходимо подключить саму библиотеку konfeature
64-
debugImplementation "com.redmadrobot.konfeature:konfeature:${konfeature_version}"
49+
// Плагин для отображения информации о приложении
50+
debugImplementation("com.redmadrobot.debug:plugin-about-app:${debug_panel_version}")
6551
}
6652

6753
```
6854

6955
3. Для того чтобы библиотека не попала в релизную сборку необходимо подключить `no-op` версию библиотеки
7056

71-
```groovy
72-
releaseImplementation 'com.redmadrobot.debug:panel-no-op:${debug_panel_version}'
57+
```kotlin
58+
releaseImplementation("com.redmadrobot.debug:panel-no-op:${debug_panel_version}")
7359
```
7460

7561
## Использование библиотеки в коде
@@ -81,16 +67,13 @@ class App : Application() {
8167

8268
override fun onCreate() {
8369
super.onCreate()
84-
85-
DebugPanel.initialize(
70+
71+
DebugPanel.initialize(
8672
application = this,
87-
config = DebugPanelConfig(shakerMode = false),
8873
plugins = listOf(
89-
AccountsPlugin(/*arguments*/),
9074
ServersPlugin(/*arguments*/),
91-
AppSettingsPlugin(/*arguments*/),
92-
FlipperPlugin(/*arguments*/),
9375
KonfeaturePlugin(/*arguments*/),
76+
AboutAppPlugin(/*arguments*/),
9477
)
9578
)
9679
}
@@ -101,81 +84,16 @@ class App : Application() {
10184

10285
```kotlin
10386
fun openDebugPanel() {
104-
DebugPanel.showPanel(supportFragmentManager)
87+
DebugPanel.showPanel(activity)
10588
}
10689
```
10790

10891
Так же в панель можно войти через уведомление которое появляется при запуске приложения использующее библиотеку. Через это же уведомление можно перейти в ручную настройку панели. Для этого нужно нажать кнопку `SETTINGS` в раскрытом уведомлении.
10992

11093
![Режим редактирования](assets/debug_notification.png)
11194

112-
## Конфигурация
113-
114-
Для дополнительной конфигурации **DebugPanel**, нужно добавить свою версию `DebugPanelConfig` класса при инициализации панели.
115-
116-
```kotlin
117-
DebugPanel.initialize(
118-
application = this,
119-
config = DebugPanelConfig(),
120-
plugins = listOf(/*plugins*/)
121-
)
122-
```
123-
124-
### Доступные возможности для конфигурации
125-
126-
`shakerMode: Boolean` - Открытие **DebugPanel** при встряхивании устройства.
127-
12895
## Работа с плагинами
12996

130-
### AccountsPlugin
131-
Используется для работы тестовыми аккаунтами.
132-
133-
Можно задать список предустановленных аккаунтов
134-
135-
```kotlin
136-
AccountsPlugin(
137-
preInstalledAccounts = listOf(
138-
DebugAccount(
139-
login = "user_login",
140-
password = "user_password",
141-
pin = "pin" //необязательное поле
142-
)
143-
)
144-
)
145-
```
146-
147-
Чтобы реагировать на смену пользователя вы можете подписаться на события `DebugPanel` внутри любого `LifecycleOwner`
148-
149-
```kotlin
150-
DebugPanel.subscribeToEvents(lifecycleOwner = this) { event ->
151-
when (event) {
152-
is AccountSelectedEvent -> {
153-
val account = event.debugAccount
154-
//Реализация перелогина
155-
}
156-
}
157-
}
158-
```
159-
160-
Так же вы можете использовать интерфейс `DebugAuthenticator` чтобы реализовать логику перелогина в отдельном классе который можно передать в плагин.
161-
162-
```kotlin
163-
class UserAuthenticator : DebugAuthenticator {
164-
override fun onAccountSelected(account: DebugAccount) {
165-
//Реализация перелогина
166-
}
167-
}
168-
```
169-
170-
```kotlin
171-
AccountsPlugin(
172-
preInstalledAccounts = listOf(),
173-
debugAuthenticator = UserAuthenticator()
174-
)
175-
```
176-
177-
Метод `onAccountSelected` будет вызываться при каждом выборе аккаунта
178-
17997
### ServersPlugin
18098
Используется для работы с тестовыми серверами
18199

@@ -246,57 +164,6 @@ val selectedServer = getPlugin<ServersPlugin>().getSelectedServer()
246164

247165

248166

249-
### AppSettingsPlugin
250-
251-
Используется для просмотра и редактирования `SharedPreferences` в проекте
252-
253-
Для подключения плагина, необходимо передать в него список `SharedPreferences` с которыми хотите работать:
254-
255-
```kotlin
256-
AppSettingsPlugin(
257-
sharedPreferences = listOf(
258-
primarySharedPreferences,
259-
secondarySharedPreferences
260-
)
261-
)
262-
```
263-
264-
### FlipperPlugin
265-
266-
Используется для просмотра и редактирования Flipper feature toggle'ов в проекте
267-
268-
Для подключения плагина, необходимо передать в него map id поддерживаемых фичей и их значений
269-
270-
```kotlin
271-
FlipperPlugin(
272-
featureStateMap = mapOf(
273-
"Toggle Id" to FlipperValue()
274-
)
275-
)
276-
```
277-
278-
Для изменения значений в рамках проекта необходимо использовать метод FlipperPlugin.observeChangedToggles():
279-
280-
```kotlin
281-
FlipperPlugin
282-
.observeChangedToggles() // Пришлёт map размером = [0, yourFeatures.size]
283-
.onEach { changedToggles -> // Первый раз пришлёт сохранённые значения
284-
this.yourDebugPanelChangedToggles = changedToggles
285-
}
286-
.flowOn(Dispatchers.Main)
287-
.launchIn(debugScope)
288-
```
289-
290-
В FlipperConfig должно быть что-то наподобие
291-
292-
```kotlin
293-
override fun getValue(feature: Feature): FlipperValue {
294-
return yourDebugPanelChangedToggles[feature.id]
295-
?: localConfig[feature.id]
296-
?: FlipperValue.BooleanValue(false)
297-
}
298-
```
299-
300167
### Konfeature Plugin
301168

302169
В основе плагина лежит библиотека [Konfeature][konfeature], которая позволяет:
@@ -328,6 +195,31 @@ KonfeaturePlugin(
328195
- настроить работу с remote config через реализацию интерфейса `FeatureSource` - `addSource(featureSource)`
329196
- настроить логирование - `setLogger(logger)`
330197

198+
### AboutApp Plugin
199+
200+
Используется для отображения информации о приложении: версии, номера билда и других произвольных данных.
201+
202+
Для подключения плагина необходимо передать список `AboutAppInfo`. Требуется хотя бы один элемент:
203+
204+
```kotlin
205+
AboutAppPlugin(
206+
aboutAppInfo = listOf(
207+
AboutAppInfo(
208+
title = "Версия",
209+
value = BuildConfig.VERSION_NAME
210+
),
211+
AboutAppInfo(
212+
title = "Номер билда",
213+
value = BuildConfig.VERSION_CODE.toString()
214+
)
215+
)
216+
)
217+
```
218+
219+
Каждый `AboutAppInfo` содержит:
220+
- `title` — название поля (например, «Версия»)
221+
- `value` — значение поля (например, «1.0.0»)
222+
331223
# Безопасность!
332224
Для того чтобы тестовые данные не попали в релизные сборки рекомендуется не задавать их явно в Application классе, а использовать реализации DebugDataProvider, которые можно разнести по разным buildType. Для release версии следует сделать пустую реализацию.
333225

@@ -361,10 +253,6 @@ ServersPlugin(
361253
)
362254
```
363255

364-
## License
365-
366-
[MIT][license]
367-
368256
[plugin-development-doc]:docs/plugin_development.md
369257
[changelog]: ./CHANGELOG.md
370258
[migration-guide]: docs/migration_guide.md

0 commit comments

Comments
 (0)