Page History
| Navitabs | ||
|---|---|---|
| ||
Indholdsfortegnelse
| Table of Contents |
|---|
Introduktion
Formål
Formålet med dette dokument, er at beskrive systemkrav og opsætning for udviklere på projektet. Desuden beskrive en række værktøjer, der hjælper med udviklingen, som er anvendt i projektet.
Sammenhæng med øvrige dokumenter
-
Udvikling
Krav for at bygge projektet
For at bygge projektet skal det åbnes i Android Studio (https://developer.android.com/studio - Projektet er senest udviklet og bygget med version 20222025.31.14) og derefter vil alle dependencies blive synkroniseret vha. gradle.
Appen bruger JDK 17 og Gradle 8.1.
NSP Header
I Android Studio (som er en variant af IntelliJ) skal man tilføje NSP's copyright header under Preferences → Editor → Copyright → Copyright Profiles.
...
spotless
├── copyright.kt
├── copyright.kts
└── copyright.xml
Tools
Projektet indeholder en række tools, der anvendes under udvikling.
Generering af strings.xml
Alle strings er oprettet i et Localizely projekt (Claus Leth Gregersen er owner på projektet): https://app.localizely.com/projects/3278b0a4-b1a5-4277-ba70-3159fb9dac9b/main/dashboard
...
| Code Block | ||||
|---|---|---|---|---|
| ||||
./localizely |
Hvis macOS afviser, at køre CLI applikationen, kan du gå til System Preferences -> Security & Privacy og trykke "Open Anyway". CLI'en er et custom lavet Rust værktøj, der anvendes indtil Localizely kommer med deres eget officielle CLI (skulle være klar i løbet af august 2021). Det er altså ikke signeret korrekt, hvorfor macOS advarer imod programmet.
Alle delte strings ligger i `shared`-modulet, som er inkluderet i alle andre moduler. Siden alle moduler har deres egen R-fil, kan den delte strings R-fil importeres ind i filen ved at bruge:
| Code Block | ||
|---|---|---|
| ||
import dk.nsp.mingraviditet.core.shared.R as sharedR |
Signering
For at bygge release udgaver til Google Play / Firebase, skal de signeres med MinGraviditets Keystore (MinGraviditetKeystore20211203.jks).
...
Signeringsnøglen og koder hertil ligger pt hos Jan Buchholdt (jbu) fra Trifork.
Konfiguration
Beskrivelse af de nuværende konfigurationer kan findes på Installationsvejledningen https://www.nspop.dk/pages/viewpage.action?pageId=121373687#GravidiDK(Android)Installationsvejledning-Indledning
Udvikleren vælger selv en flavor og en buildtype i Android Studio, som derefter kan bygges og køres. Under udvikling bruges debug buildtypen, da denne outputter logs i logcat.
...
Læs mere i projektets README.md
BuildLogic modulet
Projektet indeholder et vigtig gradle modul, som er med til at sætte alle android modulerne op på en ensartet måde; :build-logic.
...
I :convention er der også defineret appens minimum version, targetSdk, flavors og generelle kotlin & compose opsætning.
Versionering
Appen versioneres efter almindelig major.minor.patch (version code). Projektet er opdelt i moduler, så styring af disse er samlet i root project build.gradle.kts i de to properties navngivet versionName og versionCode .
Version name er tiltænkt man manuelt opdatere når man laver changes som er passende på en af de tre niveauer.
Version code bliver automatisk forhøjet for hvert commit på den pågældende branch
Tags
Releases af appen markeres med Git tags på formen release/major.minor.patch_versioncode
...
Denne regel er indbygget i vores lanes i Fastlane, som et pre-check for at kunne køre de lanes som uploader appen - Heraf grunden til at Fastlane er anbefalt til distribution.
Distribution
Fastlane
Hele processen med at bygge og uploade til Firebase er blevet automatiseret med værktøjet Fastlane (https://fastlane.tools/).
...
| Code Block | ||
|---|---|---|
| ||
Welcome to fastlane! Here's what your app is set up to do: +------------------------------------------------------------------------------------------------------------------------+ | Available lanes to run | +--------+-------------------------------+-------------------------------------------------------------------------------+ | Number | Lane Name | Description | +--------+-------------------------------+-------------------------------------------------------------------------------+ | 1 | android setGitTag | Add version tag to commit | | 2 | android bumpReleaseVersion | Bump, commit, tag and (optionally) push commit and tag | | 3 | android allUnitTests | | | 4 | android generateQaReports | Checks that git is in a correct state and we have a tag. Then generates Unit | | | | Test and Coverage reports | | 5 | android uploadForInternalTest | Upload Internal Test version to Firebase | | 6 | android uploadForGooglePlay | Build GooglePlay .aab and upload to Google Play (Takes the Service account | | | | json file path as a param) | | 0 | cancel | No selection, exit fastlane! | +--------+-------------------------------+-------------------------------------------------------------------------------+ Which number would you like to run? |
Lanes
bumpReleaseVersion
Kører 4 operationer
- Opdaterer version code ud fra antallet af commits (På tværs af repositoriets branches) og skriver det ind i root projects
./build.gradle.kts - Commiter koden
- Opretter et release tag i git
- Giver udvikleren valget om at pushe commitet og det oprettede tag til remote repository
Efter denne operation er kørt (såfremt man valgte at sige ja til pkt. 4), vil det commit man står på være klar til lave en release.
Release lanes
Der kan releases til Firebase vha uploadForInternalTest og til GooglePlay ved hjælp af uploadForGooglePlay
Release til Google Play
For at kunne release kræves det at man har adgang til Sundhedsdatastyrelsens Google Play projekt.
Projektet er opsat i Google Play til at benytte sig af app bundles (.aab).
...