diff --git a/src/frontends/android/app/build.gradle b/src/frontends/android/app/build.gradle index f71c383f5..fffd99f8c 100644 --- a/src/frontends/android/app/build.gradle +++ b/src/frontends/android/app/build.gradle @@ -30,7 +30,7 @@ def keystoreKeyPassword = envOr('KEY_PASSWORD', '') android { namespace = 'org.strongswan.android' - /* minSdk 23 flipped AGP's default to uncompressed .so (extractNativeLibs=false): + /* minSdk >= 23 flips AGP's default to uncompressed .so (extractNativeLibs=false): * the APK grew 12 -> 23 MB. Updates are downloaded over cellular, so keep * the libraries compressed as before. */ packaging { @@ -42,7 +42,7 @@ android { defaultConfig { applicationId "one.shx.strongswan.ext" compileSdk = 37 - minSdk = 23 + minSdk = 24 targetSdk = 36 versionCode 159 @@ -165,7 +165,7 @@ dependencies { implementation composeBom implementation 'androidx.compose.ui:ui' implementation 'androidx.compose.material3:material3:1.5.0-beta01' - /* adaptive-navigation-suite (NavigationSuiteScaffold) requires minSdk 23 */ + /* adaptive-navigation-suite (NavigationSuiteScaffold) requires minSdk 23+ (material3 1.5 requires 24) */ implementation 'androidx.compose.material3:material3-adaptive-navigation-suite:1.5.0-beta01' implementation 'androidx.compose.material:material-icons-extended' /* home screen widget (status + connect button) */ diff --git a/src/frontends/android/app/src/main/AndroidManifest.xml b/src/frontends/android/app/src/main/AndroidManifest.xml index a0e3cdd7c..8320bfa72 100644 --- a/src/frontends/android/app/src/main/AndroidManifest.xml +++ b/src/frontends/android/app/src/main/AndroidManifest.xml @@ -19,9 +19,6 @@ - - - diff --git a/src/frontends/android/docs/ui-ux-plan.md b/src/frontends/android/docs/ui-ux-plan.md index e25fbe373..9bc60403d 100644 --- a/src/frontends/android/docs/ui-ux-plan.md +++ b/src/frontends/android/docs/ui-ux-plan.md @@ -133,9 +133,9 @@ ## Редизайн 2.15 (ветка interface-ux-ui-2026): статус по факту -Этапы 0–4 выше устарели в части ограничений: minSdk уже 23, Expressive-тема включена. Что сделано: +Этапы 0–4 выше устарели в части ограничений: minSdk поднят до 24, Expressive-тема включена. Что сделано: -- **Тулчейн:** AGP 9.1.1, Gradle 9.3.1, Kotlin 2.2.21 (built-in Kotlin, `kotlin-android` убран), compileSdk 37 (targetSdk 36), Java 11, BOM 2026.09.00 (compose 1.12), **material3 1.5.0-beta01**. Библиотеки material3 1.5 объявляют minSdk 24: приложение держит 23 через `tools:overrideLibrary` в манифесте (на API 23 возможны сбои — риск принят). `proguard-android-optimize.txt` вместо non-optimize (AGP 9 отвергает старый файл). +- **Тулчейн:** AGP 9.1.1, Gradle 9.3.1, Kotlin 2.2.21 (built-in Kotlin, `kotlin-android` убран), compileSdk 37 (targetSdk 36), Java 11, BOM 2026.09.00 (compose 1.12), **material3 1.5.0-beta01**. Библиотеки material3 1.5 требуют minSdk 24, поэтому **minSdk поднят до 24** (Android 7.0); обходные `tools:overrideLibrary` не нужны. `proguard-android-optimize.txt` вместо non-optimize (AGP 9 отвергает старый файл). - **Тема (этап 1) ✅:** `MaterialExpressiveTheme` + `MotionScheme.expressive()`, тональная палитра с `surfaceContainer*`, токены `ShxSpacing`/`ShxShapes`, выбор темы системная/светлая/тёмная (`ShxThemeSettings.themeMode`), сплэш/окно/системные панели совпадают с Compose-поверхностью (`shx_*` в `colors.xml`). - **Компоненты ✅:** `ShxSectionCard`, `ShxListRow`, `ShxStatusPill`/`ShxConnectedPill`, `ShxEmptyState`, `ShxSnackbarHost`; переходы между вкладками — fade-through на motion scheme, «назад» с любой вкладки ведёт на «Подключение», `LoadingIndicator`/`LinearWavyProgressIndicator`, Snackbar вместо Toast в `ShxApp`, Настройках, форме профиля; хаптика подключения/отключения. - **«Подключение» ✅:** hero-кнопка с морфингом формы (круг → cookie), чип профиля с exit-IP + выбор профиля в bottom sheet (дублирующий список профилей убран), плитки трафика, один слот баннера (ошибка приоритетнее белого списка), «Доступность» свёрнута в сводку. Файл разбит на `home/*`. На ширине ≥ 840dp две колонки.