Skip to content

Commit 248e35f

Browse files
committed
cli
1 parent 677d4df commit 248e35f

11 files changed

Lines changed: 938 additions & 477 deletions

File tree

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,14 @@ python -m spritePro.cli --preview main.py --platform kivy --screen tablet-landsc
256256
python -m spritePro.cli --list-screen-presets
257257
```
258258

259+
Быстрая Android/APK-сборка через CLI:
260+
261+
```bash
262+
python -m spritePro.cli --android .
263+
python -m spritePro.cli --android . --android-mode release
264+
python -m spritePro.cli --android . --android-mode spec
265+
```
266+
259267
### Что уже работает
260268

261269
- desktop runtime через `pygame`

docs/building.md

Lines changed: 71 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,69 @@ s.run(
281281
- собирать проект лучше внутри Linux filesystem/WSL home, а не из Windows-диска
282282
- на Android нужно заранее продумать ассеты, ориентацию экрана и touch-управление
283283

284+
### Быстрый путь через `spritePro.cli`
285+
286+
Если проект уже имеет `main.py`, самый удобный путь теперь такой:
287+
288+
```bash
289+
python -m spritePro.cli --android .
290+
```
291+
292+
Что делает команда:
293+
294+
- находит `main.py` в проекте
295+
- создаёт `buildozer.spec`, если его ещё нет
296+
- подставляет базовые настройки для Android build
297+
- включает типичные расширения файлов из проекта: код, `assets/images`, `assets/audio`, `scenes`, JSON, шрифты и другие файлы по расширению
298+
- на Linux/WSL сразу запускает `buildozer android debug`
299+
300+
Если нужен только `buildozer.spec`, без запуска сборки:
301+
302+
```bash
303+
python -m spritePro.cli --android . --android-mode spec
304+
```
305+
306+
Если хотите перегенерировать `buildozer.spec` под значения SpritePro:
307+
308+
```bash
309+
python -m spritePro.cli --android . --android-mode spec --android-refresh-spec
310+
```
311+
312+
Release APK:
313+
314+
```bash
315+
python -m spritePro.cli --android . --android-mode release
316+
```
317+
318+
AAB для Google Play:
319+
320+
```bash
321+
python -m spritePro.cli --android . --android-mode aab
322+
```
323+
324+
Часто полезные override-параметры:
325+
326+
```bash
327+
python -m spritePro.cli --android . --android-title "My Game" --android-package-name mygame --android-package-domain com.example --android-orientation landscape
328+
python -m spritePro.cli --android . --android-permission INTERNET
329+
```
330+
331+
Что генерируется по умолчанию:
332+
333+
- `requirements = python3,kivy,pygame,pymunk,spritepro`
334+
- `source.dir = .`
335+
- `source.include_exts` включает картинки, аудио, JSON, шрифты, `.kv`, `.atlas`
336+
- `source.exclude_dirs` убирает `.git`, `.venv`, `build`, `dist` и другие служебные папки
337+
338+
Это удобно для проектов, созданных через `spritePro.cli --create`, потому что их структура уже соответствует ожидаемому шаблону:
339+
340+
- `main.py`
341+
- `assets/images`
342+
- `assets/audio`
343+
- `scenes`
344+
345+
Если у вас hybrid-режим через `s.run_kivy_hybrid(...)` или `s.create_kivy_widget(...)`, команда та же самая. Для упаковки Android это обычное `Kivy`-приложение с вашим `main.py`.
346+
284347
### Минимальный сценарий сборки Android
285348

286349
1. Подготовьте проект игры с точкой входа `main.py`
@@ -312,7 +375,7 @@ s.run(
312375
)
313376
```
314377

315-
### Buildozer
378+
### Напрямую через Buildozer
316379

317380
`Buildozer` ставится и запускается внутри Linux/WSL-окружения.
318381

@@ -340,6 +403,12 @@ orientation = landscape
340403
fullscreen = 1
341404
```
342405

406+
Эта ручная схема нужна, если:
407+
408+
- вы не хотите использовать `spritePro.cli --android`
409+
- у вас уже есть свой настроенный `buildozer.spec`
410+
- вы хотите тонко контролировать Android-конфиг вручную
411+
343412
Если вы тестируете не опубликованный `spritepro`, а локально модифицированную версию, заранее проверьте, как именно библиотека попадёт в Android build:
344413

345414
- либо используйте опубликованный пакет `spritepro`
@@ -370,6 +439,7 @@ buildozer android release
370439
- проверяйте производительность на реальном устройстве
371440
- избегайте слишком тяжёлых текстур и большого количества частиц
372441
- для локального мультиплеера по Wi-Fi проверьте права сети и доступность IP хоста
442+
- если используете hybrid `Kivy` UI, проверьте отдельно и размеры внешнего layout, и размеры встроенной игровой области
373443

374444
### iOS
375445

docs/kivy_hybrid.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,50 @@ HybridApp().run()
274274

275275
---
276276

277+
## Сборка APK для hybrid-режима
278+
279+
Для Android hybrid-режим собирается так же, как и обычный `Kivy` full-screen запуск. Отдельного special-case здесь нет: упаковщик смотрит только на ваш `main.py`.
280+
281+
Если в `main.py` используется:
282+
283+
- `s.run(..., platform="kivy")`
284+
- `s.run_kivy_hybrid(...)`
285+
- `s.create_kivy_widget(...)` внутри собственного `Kivy App`
286+
287+
то общий Android flow остаётся тем же.
288+
289+
### Быстро через CLI
290+
291+
```bash
292+
python -m spritePro.cli --android .
293+
python -m spritePro.cli --android . --android-mode release
294+
python -m spritePro.cli --android . --android-permission INTERNET
295+
```
296+
297+
### Напрямую через Buildozer
298+
299+
```bash
300+
buildozer init
301+
buildozer android debug
302+
```
303+
304+
Если hybrid-приложение использует сеть, не забудьте добавить:
305+
306+
```ini
307+
android.permissions = INTERNET
308+
```
309+
310+
Если у вас в интерфейсе есть внешние `Kivy`-экраны и встроенный игровой виджет, перед сборкой особенно полезно проверить:
311+
312+
- что layout не ломается на portrait/landscape
313+
- что `game_widget` получает ожидаемый размер
314+
- что `s.WH` и `s.WH_C` внутри игровой области совпадают с ожиданиями
315+
- что внешние `Kivy`-кнопки и внутриигровой touch не конфликтуют
316+
317+
Подробный общий гайд по Android-сборке: [building.md](building.md)
318+
319+
---
320+
277321
## Готовый demo
278322

279323
В репозитории есть пример:

docs/mobile.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,3 +284,7 @@ python spritePro/demoGames/kivy_hybrid_demo.py
284284
Для отдельного hybrid-сценария с внешним `Kivy` UI смотрите:
285285

286286
- `spritePro.demoGames.kivy_hybrid_demo`
287+
288+
Для быстрой Android-сборки через CLI и ручного `Buildozer` смотрите:
289+
290+
- [building.md](building.md)

0 commit comments

Comments
 (0)