Build-ovanie Ionic (ver.6) aplikácie pre Google Store
Tags: ionic, gradle, capacitor, android
Published: 2023-02-22 11:33:28

V nasledujúcom postupe je ukázané ako vybuild-ovať Ionic (ver.6) aplikáciu až do podoby vhodnej na publikovanie v Google PlayStore.

1. Príprava Ionic aplikácie a nastavení:

Projekt Ionic aplikácie mám fyzicky umiestnený v nejakom lokálnom adresári, napr.:
```
C:\Projects\Ionic\Ionic6App_(verX)\
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/te5yys1kgqu0cf2r7jft.PNG)
V tejto Ionic aplikácii (nejakým spôsobom) využívam Capacitor geolokačný plugin.

Prvým krokom je pridanie príslušnej platformy (android, ios, ...) do projektu Ionic aplikácie. Vykonať to spustením príkazu (v prípade pridania platformy "android"):
```
ionic capacitor add android
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i69c5bc1uo68jntsq6yi.PNG)
Zbehnutím tohto príkazu je vytvorený v projekte nový adresár "android" s príslušným obsahom:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gzddks127v25o44f8d8c.PNG)

Ak si potrebujem zistiť aké verzie jednotlivých nástrojov a knižníc aktuálne v projekte používam, spustiť príkaz:
```
ionic info
```
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jopbk000srj51griuqoq.PNG)
zistiť verziu knižnice Cordova (rovnako ako novší "Capacitor" sprostredkúva natívne funkcionality mobilného zariadenia):
```
cordova -v
```
Na build-ovanie Ionic aplikácie potrebujem mať zinštalovaný IDE "Android Studio" a tiež nástroj "Gradle" a (samozrejme) Javu.
Zistím si ešte verziu aktuálne dostupného "Gradle" nástroja:
```
gradle -v
```
a verziu Javy:
```
java -version
```
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j61kf20vrye2x0zqd9fs.PNG)

Ďalším krokom je nastavenie vyžiadania povolení vo vybuild-ovanej aplikácii (to je to, ak si spustím potom hotovú, nainštalovanú aplikáciu už na mobilnom zariadení, tak ma požiada o povolenie využívať napr.polohu zariadenia, prístup na galériu, fotoaparát, atď.). Toto nastavenie musim doplniť v súbore projektu:
```
...\android\app\src\main\AndroidManifest.xml
```
kde je potrebné v časti "Permissions" pridať nasledujúce:

```
    ...
    <!-- Geolocation API -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-feature android:name="android.hardware.location.gps" />
    <!-- Network API -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    ...
```
Teraz si nastaviť verziu kódu aplikácie - každý ďalší release, ktorý publikujem na Google Store/Play musí mať rozdielný kód kódu. Toto nastaviť/zeditovať v súbore:
```
...\android\app\build.gradle
```
asi takto:

```
android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    defaultConfig {
        applicationId "eu.bigoo.pocasicko"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 5
        versionName "4.1"
        ...
```
parameter "versionName" je informácia, ktorá sa zobrazí pre používateľov aplikácie, a parameter "versionCode" je interné číslo pre release manažment v Google.

Posledným nastavením je zmena parametrov "minSdkVersion", "compileSdkVersion", "targetSdkVersion" a "cordovaAndroidVersion" opäť v súbore:
```
...\android\app\build.gradle
```
resp.v súbore:
```
...\android\variables.gradle
```
asi takto:
```
ext {
    minSdkVersion = 26
    compileSdkVersion = 33
    targetSdkVersion = 33
    ...
    cordovaAndroidVersion = '10.1.1'
}
```
Poznámka: Info o tom akú verziu použiť možno nájsť na [tu](https://apilevels.com/) resp.[tu](https://cordova.apache.org/docs/en/11.x/guide/platforms/android/).
Týmto by sme mali mať všetko pripravené na spustenie procesu build-ovania Ionic aplikácie.

2. Build-ovanie aplikácie:

Spusiť príkaz:
```
ionic capacitor build
```
je potrebné vybrať platformu, pre ktorú chcem vybuild-ovať aplikáciu (v mojom prípade je to "android"):

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/898y0ctg5o5yzelyvh8v.PNG)
build-ovaním projektu, vytvorí sa ďalší nový adresár "www":

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ihykb867v8259kfiwhgx.PNG)
a spustí sa "Android Studio" do ktorého sa naload-uje projektová adresárova štruktúra aj s celým obsahom:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3e462uh5lsfif8oluoax.PNG)

V "Android Studio" sa cez menu "SDK Manager" v zobrazenom okne "Settings", v záložke "SDK Platforms" pozrieť aké verzie/platformy android-u mám k dispozícii (a prípadne si doinštalovať ďalšie potrebné):

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jic7xq7d12u4nbeqtv3i.PNG)
a v záložke "SDK Tools", ktoré nástroje mám:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hkyjeb729bkfgxvuk1cs.PNG)
Teraz si v "Android Studio" cez menu "File - Project structure", v zobrazenom dialogu "Project structure" v časti "Modules" pozrieť v záložke "Properties", prípadne ešte nastaviť parametre "Compile Sdk Version", "Source compatibility", "Target compatibility" (ktoré sme už nastavovali predtým v konfiguračnom súbore):

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2i2yhn8746xa4xuresrl.PNG)
a v záložke "Default config" skontrolovať/nastaviť parametre verzie kódu a ďalšie:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b74bacy47ru1a00scufa.PNG)
A teraz spustiť samotný build-ovací proces - cez menu "Build - Generate Signed Bundle/APK ..." a otvorí sa dialog "Generate Signed Bundle or APK", kde v prvom kroku vybrať verziu:
```
Android App Bundle
```
čo je formát, ktorý je najnovšie podporovaný samotným Google Store/Play deployment manažmentom.
V ďalšom kroku nastaviť požadované parametre:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o4zk4tsljaods7ohekvn.PNG)
Nasleduje výber vybuild-ovanej varianty aplikácie:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e7moj518rlwwzzd838v2.PNG)
a konečne spustiť build-ovací proces cez [Create].
Po nejakej chvíli, a ak všetko zbehne v poriadku:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f57thxddfiooxxzjn80i.PNG)
a v adresári:
```
...\android\app\release\
```
sa objaví súbor "app-release.aab", ktorý odporúčam premenovať na názov aplikácie, napr."Ionic6App.aab".
Tento súbor je pripravený na vypublikovanie na GoogleStore/Play.
...