You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Полный текст: [политика конфиденциальности](PRIVACY.md). Инструкции по сообщениям об уязвимостях: [SECURITY.md](SECURITY.md).
45
48
46
49
## Источники курсов
@@ -52,15 +55,15 @@
52
55
53
56
## Сборка
54
57
55
-
Нужны JDK 17 и Android SDK 35.
58
+
Нужны JDK 17 и Android SDK 36.
56
59
57
60
```shell
58
-
./gradlew test lint assembleDebug
61
+
./gradlew test lint assembleDebug assembleRelease
59
62
```
60
63
61
64
Отладочный APK появится в `app/build/outputs/apk/debug/app-debug.apk`.
62
65
63
-
Релизные APK подписываются владельцем проекта локально. Ключ подписи и его пароль нельзя добавлять в Git, задачи CI или публичные архивы.
66
+
Релизные APK подписываются владельцем проекта локально. Ключ подписи и его пароль нельзя добавлять в Git, задачи CI или публичные архивы. Полная проверяемая процедура описана в [инструкции по выпуску](RELEASING.md).
Эта процедура связывает исходный коммит, проверку CI, неподписанную сборку, локальную подпись и опубликованный APK. Секретный ключ остаётся только у владельца.
4
+
5
+
## Один раз для репозитория
6
+
7
+
1. Включить **Settings → General → Releases → Release immutability**. Правило действует только на будущие выпуски.
shasum -a 256 CleanRate-1.8.1.apk > CleanRate-1.8.1-SHA256SUMS.txt
57
+
```
58
+
59
+
## Публикация
60
+
61
+
1. Создать черновик GitHub Release на уже проверенном теге `v1.8.1`.
62
+
2. Приложить `CleanRate-1.8.1.apk`, файл контрольной суммы и текст `RELEASE_NOTES_1.8.1.md`.
63
+
3. Ещё раз скачать файлы из черновика, сверить SHA-256, имя пакета, `versionCode`, `versionName` и сертификат.
64
+
4. Опубликовать выпуск. После публикации не заменять файлы; исправления выпускать новой версией.
65
+
66
+
Подписанный APK закономерно отличается по SHA-256 от неподписанного артефакта CI: блок подписи добавляется после сборки. Проверка сертификата подтверждает владельца, аттестация — происхождение исходной неподписанной сборки, а неизменяемый Release защищает опубликованные файлы от последующей замены.
Copy file name to clipboardExpand all lines: SECURITY.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,8 +8,8 @@
8
8
9
9
Не публикуйте ключи, пароли, персональные данные или подробности реально эксплуатируемой уязвимости в открытом Issue.
10
10
11
-
После публикации репозитория используйте **Security → Advisories → New draft security advisory**. Если функция недоступна, создайте краткий Issue без технических подробностей и попросите владельца проекта открыть приватный канал.
11
+
Используйте **Security → Advisories → Report a vulnerability**. Эта форма передаёт отчёт владельцу приватно. Не создавайте публичный Issue с техническими подробностями уязвимости.
12
12
13
13
## Проверка APK
14
14
15
-
Скачивайте APK только из раздела Releases этого репозитория и сверяйте SHA-256 с файлом `SHA256SUMS.txt`, приложенным к тому же выпуску.
15
+
Скачивайте APK только из раздела Releases этого репозитория и сверяйте SHA-256 с файлом `SHA256SUMS.txt`, приложенным к тому же выпуску. Дополнительно проверьте сертификат командой `apksigner verify --print-certs CleanRate-VERSION.apk`: SHA-256 должен совпасть с отпечатком из README.
Copy file name to clipboardExpand all lines: THIRD_PARTY.md
+10Lines changed: 10 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,3 +15,13 @@
15
15
## AndroidX и Jetpack Compose
16
16
17
17
Интерфейс и жизненный цикл приложения построены на официальных библиотеках AndroidX с лицензией Apache License 2.0.
18
+
19
+
## Kotlin и kotlinx.coroutines
20
+
21
+
Исходный код компилируется Kotlin, а фоновые операции используют kotlinx.coroutines. Оба проекта JetBrains распространяются по лицензии Apache License 2.0.
22
+
23
+
## Звук клавиши
24
+
25
+
`key_click.wav` — короткий синтетический звук «мягкий пузырёк», подготовленный специально для этого проекта локальным звуковым синтезом и не заимствованный из сторонней библиотеки звуков. Он распространяется вместе с исходным кодом по лицензии проекта Apache License 2.0.
26
+
27
+
Краткая копия этих сведений включается внутрь APK в `assets/legal/NOTICE.txt`.
0 commit comments