Files
nonograms/MOBILE_DEPLOY.md
Grzegorz Kucmierz df336eeb8a
All checks were successful
Deploy to Production / deploy (push) Successful in 3s
docs: update deployment guide with signing instructions
2026-02-13 09:09:22 +01:00

157 lines
5.9 KiB
Markdown

# Publikacja Aplikacji Mobilnej (Android & iOS)
Aplikacja została skonfigurowana z użyciem **Capacitor**, co pozwala na wydanie jej jako natywnej aplikacji na Androida i iOS.
## Wymagania wstępne
1. **Node.js** (już masz).
2. **Android Studio** (dla Androida).
3. **Xcode** (dla iOS - tylko macOS).
4. Konta deweloperskie:
* **Google Play Console** (jednorazowa opłata $25).
* **Apple Developer Program** (roczna opłata $99).
## Struktura projektu
* `android/` - natywny projekt Androida.
* `ios/` - natywny projekt iOS.
* `dist/` - zbudowana aplikacja webowa (to, co widzi użytkownik).
* `assets/` - ikony i ekrany startowe (użyj `npx capacitor-assets generate` po zmianie plików tutaj).
## Codzienny workflow (aktualizacja kodu)
Za każdym razem, gdy zmienisz kod JS/Vue:
1. Zbuduj aplikację webową:
```bash
npm run build
```
2. Zsynchronizuj zmiany z projektami natywnymi:
```bash
npx cap sync
```
---
## Generowanie Certyfikatów (dla Ionic Appflow / CI/CD)
Jeśli używasz **Ionic Appflow** do budowania aplikacji w chmurze, musisz wygenerować i wgrać odpowiednie certyfikaty podpisywania.
### Android (Google Play)
Potrzebujesz pliku **Keystore (.jks lub .keystore)**.
1. **Opcja A (Terminal - jeśli masz Javę/JDK):**
Uruchom w terminalu:
```bash
keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-alias
```
* Zostaniesz poproszony o hasło do magazynu kluczy (zapamiętaj je!).
* Podaj dane (Imię, Organizacja itp.).
* Na koniec potwierdź (`yes`).
2. **Opcja B (Android Studio):**
* Otwórz projekt Androida w Android Studio (`npx cap open android`).
* Menu: **Build** -> **Generate Signed Bundle / APK**.
* Wybierz **Android App Bundle** -> Next.
* Pod polem "Key store path" kliknij **Create new...**.
* Wypełnij formularz (ścieżka, hasła, alias).
* Zakończ kreatora.
3. **W Appflow:**
* Wgraj wygenerowany plik `.jks`.
* Podaj:
* **Keystore Password**: hasło, które ustawiłeś.
* **Key Alias**: nazwa aliasu (np. `my-key-alias` lub to co wpisałeś).
* **Key Password**: hasło do klucza (zazwyczaj to samo co do keystore).
### iOS (App Store)
Potrzebujesz certyfikatu **.p12** oraz profilu **.mobileprovision**.
Wymagany jest dostęp do komputera Mac i konta Apple Developer.
1. **Certyfikat Dystrybucyjny (.p12):**
* Otwórz aplikację **Dostęp do pęku kluczy (Keychain Access)** na Macu.
* Menu: **Asystent certyfikatów** -> **Poproś urząd certyfikacji o certyfikat**.
* Wpisz swój email, wybierz "Zapisz na dysku" i kontynuuj -> Zapisz plik `.certSigningRequest` (CSR).
* Zaloguj się na [developer.apple.com](https://developer.apple.com).
* Idź do **Certificates, Identifiers & Profiles** -> **Certificates**.
* Kliknij **+**, wybierz **iOS Distribution (App Store and Ad Hoc)**.
* Wgraj swój plik CSR.
* Pobierz wygenerowany certyfikat `.cer`.
* Kliknij dwukrotnie w pobrany plik `.cer`, aby dodać go do Pęku kluczy.
* W Pęku kluczy znajdź ten certyfikat (np. "iPhone Distribution: Twoja Nazwa"), rozwiń go strzałką, aby widzieć "Klucz prywatny".
* Zaznacz **oba** (certyfikat i klucz prywatny), kliknij prawym -> **Eksportuj 2 rzeczy**.
* Zapisz jako plik `.p12` i ustaw hasło eksportu (zapamiętaj je!).
2. **Profil Aprowizacji (.mobileprovision):**
* Na [developer.apple.com](https://developer.apple.com) idź do **Profiles**.
* Kliknij **+**, wybierz **App Store** (pod Distribution).
* Wybierz App ID swojej aplikacji (musi pasować do Bundle ID w projekcie).
* Wybierz certyfikat, który przed chwilą stworzyłeś.
* Nazwij profil (np. "Nonograms App Store") i pobierz plik `.mobileprovision`.
3. **W Appflow:**
* Wgraj plik `.p12`.
* Wgraj plik `.mobileprovision`.
* Podaj hasło do pliku `.p12`.
---
## Android (Lokalnie)
### 1. Uruchomienie projektu
Otwórz projekt w Android Studio:
```bash
npx cap open android
```
### 2. Konfiguracja i Podpisywanie
W Android Studio:
1. Poczekaj na "Gradle Sync".
2. Zmień `applicationId` w `build.gradle` (Module: app) jeśli chcesz inną niż `pl.nonograms.app`.
3. Menu: **Build** -> **Generate Signed Bundle / APK**.
4. Wybierz **Android App Bundle**.
5. Stwórz nowy klucz (Keystore) i zapamiętaj hasła (bezpiecznie!).
6. Wygeneruj plik `.aab`.
### 3. Publikacja
1. Zaloguj się do [Google Play Console](https://play.google.com/console).
2. Utwórz nową aplikację.
3. Uzupełnij informacje (opis, screenshoty, polityka prywatności).
4. W sekcji "Production" prześlij wygenerowany plik `.aab`.
---
## iOS (Lokalnie)
### 1. Uruchomienie projektu
Otwórz projekt w Xcode:
```bash
npx cap open ios
```
### 2. Konfiguracja
W Xcode:
1. Kliknij "App" w drzewie plików po lewej.
2. W zakładce **Signing & Capabilities**:
* Wybierz swój "Team" (Twoje konto Apple ID).
* Upewnij się, że "Bundle Identifier" jest unikalny.
3. W zakładce **General**:
* Ustaw numer wersji (Version) i kompilacji (Build).
### 3. Publikacja
1. Wybierz urządzenie docelowe jako "Any iOS Device (arm64)".
2. Menu: **Product** -> **Archive**.
3. Po zakończeniu otworzy się "Organizer". Kliknij **Distribute App**.
4. Wybierz **App Store Connect** -> **Upload**.
5. Po przesłaniu, zaloguj się do [App Store Connect](https://appstoreconnect.apple.com), uzupełnij metadane i wyślij do recenzji.
---
## Ważne uwagi
* **Bezpieczny obszar (Notch):** Aplikacja ma ustawione `viewport-fit=cover`, ale upewnij się, że UI nie chowa się pod notchem (w CSS używaj `env(safe-area-inset-top)`).
* **Wstecz (Android):** Capacitor obsługuje przycisk wstecz sprzętowo, ale warto to przetestować.
* **Permissions:** Jeśli w przyszłości dodasz pluginy (np. kamerę), musisz dodać uprawnienia w `AndroidManifest.xml` i `Info.plist`.