added AGENTS.ms and docs for Android app

This commit is contained in:
wt committed 2026-09-08 13:03:31 +07:00
1 parent 896cc48128
commit 684ac58b73
8 files changed
+831

No files matched your search

+154
View File
@@ -0,0 +1,154 @@
# Разработка
## Toolchain
Текущая версия проекта:
- Android Studio Quail 1 (2026.1.1) или новее
- Gradle 8.13
- Android Gradle Plugin 8.13.0
- Kotlin 2.3.21
- Compose BOM 2026.06.00
- compileSdk 36
- minSdk 26
- Java 17 target
- Room 2.8.4
- Lifecycle 2.10.0
Проект не использует сторонние runtime-библиотеки вне стандартного Android/Jetpack stack.
## Запуск
Откройте `BalanceAndroid/` в Android Studio.
Затем:
1. Gradle Sync.
2. Установить Android SDK Platform 36.
3. Создать/подключить Android 8+ устройство или emulator.
4. Запустить configuration `app`.
## CLI
```bash
./gradlew test assembleDebug
```
Полная чистая проверка:
```bash
./gradlew clean test assembleDebug
```
Проверить JVM:
```bash
./gradlew --version
```
Используется Java 17–23; bytecode target — Java 17.
## SDK
Можно использовать:
```bash
export ANDROID_HOME="/path/to/Android/Sdk"
export ANDROID_SDK_ROOT="$ANDROID_HOME"
```
или `local.properties`:
```properties
sdk.dir=/home/USER/Android/Sdk
```
`local.properties` не должен попадать в Git.
## Unit tests
Тесты находятся в:
```text
app/src/test/
```
Основной текущий тестовый класс:
```text
FinanceMathTest
```
Тестируй отдельно:
- balance;
- period summary;
- adjustment exclusion;
- spending grouping;
- edge cases around period boundaries.
## Local development
Приложение работает без сервера. Локальные данные хранятся в Room.
Для Android Emulator host server:
```text
http://10.0.2.2:8080
```
Для физического Android device `localhost` указывает на сам телефон, поэтому нужен доступный по сети HTTPS endpoint.
## Application ID
Текущий пример:
```text
com.example.balanceandroid
```
Перед Google Play release замени его на уникальный production application ID.
## Release checklist
- [ ] Production applicationId.
- [ ] Release signing key.
- [ ] HTTPS server.
- [ ] Проверен backup/data extraction policy.
- [ ] Проверена миграция Room.
- [ ] Проверена background sync.
- [ ] Проверена авторизация и token refresh.
- [ ] Нет секретов в APK source/config.
- [ ] `./gradlew clean test assembleDebug` проходит.
## Troubleshooting
### Gradle не находит SDK
Проверь `ANDROID_HOME`, `ANDROID_SDK_ROOT` или `local.properties`.
### Неверная Java
Android Studio → Gradle JDK → Embedded JDK.
Нужна Java 17–23.
### Старый Gradle daemon
```bash
./gradlew --stop
./gradlew clean test assembleDebug
```
### Sync не работает
Проверь:
1. server URL;
2. HTTPS/local HTTP rule;
3. login/session;
4. network connection;
5. cursor/lastPush;
6. совместимость BalanceServer protocol.
### Данные не удаляются на другом устройстве
Убедись, что вызывается `FinanceDao.deleteTransaction/deleteCategory/deleteBudget`, а не `delete*Direct`.