You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

Indholdsfortegnelse


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 - Version 4.2+) og derefter vil alle dependencies blive synkroniseret vha. gradle.

NSP Header

I Android Studio (som er en variant af IntelliJ) skal man huske at tilføje NSP's copyright header under Preferences → Editor → Copyright → Copyright Profiles. For at lave en generisk header som skifter copyright årstal, kan følgende template bruges:

NSP Header til IntelliJ
The MIT License
  
Original work sponsored and donated by The Danish Health Data Authority (http://www.sundhedsdatastyrelsen.dk)
  
Copyright (C) $today.year The Danish Health Data Authority (http://www.sundhedsdatastyrelsen.dk)
  
  
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
  
  
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
  
  
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Når dette er sat, vil alle filer i projektet få indsat headeren automatisk ved oprettelse af filen.


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

Localizely konfiguration er definieret i `localizely-cli.json` filen i roden er projektet og kan justeres med Localizely branches osv.

For at opdatere strings.xml filen med seneste opdateringer fra Localizely, skal man via CLI i roden af projektet køre:

Opdater strings.xml
./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 hjemmelavet 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.

Model generering via OpenAPI specifikationen

Alle modeller som snakker sammen med backenden bliver genereret ud fra backendens OpenAPI specifikation. Hvis udvikleren vil opdatere modellerne, er der lavet et autogenererings script til MacOS, som køres ved at anvende følgende script:

./generatemodels.sh

Når man kører ./generatemodels.sh, så vil alle disse dependencies blive tjekket, og hvis at en dependency mangler vil man blive guidet til hvilke kommandoer der skal bruges for at få dem hentet.

generatemodel.sh dependencies

openapi-generator (https://github.com/OpenAPITools/openapi-generator): Bruges til autogen af modeller ud fra speccen. OBS: Skal minimum være version 5.1.0

subversion (https://subversion.apache.org/packages.html): Bruges til at hente speccen ned lokalt

ktlint (https://github.com/pinterest/ktlint): Bruges til at formatere outputtet fra openapi-generator


Konfiguration

Beskrivelse af den nuværende konfiguration 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.

Alle bygge konfigurationer skal findes i projektets build.gradle filer. Der findes en build.gradle som deles af hele projektet og derunder findes der en build.gradle for hvert modul af appen (App, Api, Repo, Shared). 

Hvert modul har deres eget ansvarsområde, så api/build.gradle definerer f.eks. hvilke endpoints APIet skal ramme og app/buid.gradle sætter suffix på pakkenavnet, så det er muligt at have flere versioner af appen installeret på samme tid.

Distribution

Distribution af test apps til ThePerfectApp (TPA)

For at distribuere test apps til TPA, skal man bruges Release build-typen, som beskrevet under Installationsvejledning. Dette kræver at man har et signing certifikat fra app'ens KeyStore.

For at versionen bliver synlig for dem som ønsker at tilgå test-appen, skal versionsnummeret være højere end det forrige. Denne bliver automatisk inkrementeret for hvert commit der er i git og kan tjekkes ved at bruge kommandoen

git rev-list HEAD --count

Hvis versionsnummeret er lavere end den forrige version vil den blive gemt væk under "Browse all builds" og da TPA linket som set i installationsvejledningen kun bruger nyeste version, vil den aldrig kunne blive hentet 

Manuelt

Hvis man ønsker at uploade et byg manuelt, skal man lave et release-build af den variant man ønsker at uploade. Før dette gøres skal man have en bruger på insp.tpa.io med developer rettigheder.

Under siden Min Graviditet (Android) trykker man på Manage Project (oppe i højre hjørne) → Upload new build

Fastlane (anbefalet)

Hele processen med at bygge og uploade til TPA er blevet automatiseret med værktøjet Fastlane (https://fastlane.tools/).

Krav og installationsvejledninger kan findes på https://docs.fastlane.tools/getting-started/android/setup/#installing-fastlane

Ved at bruge kommandoen fastlane før man alle mulighede "lanes" frem, som også kan kaldes eksplicit; f.eks. "fastlane uploadTpa"

fastlane

[09:47:30]: Welcome to fastlane! Here's what your app is set up to do:
+--------+-----------------------+-----------------------------------------+
|                          Available lanes to run                          |
+--------+-----------------------+-----------------------------------------+
| Number | Lane Name             | Description                             |
+--------+-----------------------+-----------------------------------------+
| 1      | android test          | Runs all the tests                      |
| 2      | android uploadDevelop | Upload develop version to TPA           |
| 3      | android uploadMock    | Upload mock version to TPA              |
| 4      | android uploadTpa     | Upload all versions of the app to TPA   |
| 5      | android deploy        | Deploy a new version to the Google Play |
| 0      | cancel                | No selection, exit fastlane!            |
+--------+-----------------------+-----------------------------------------+


Release

-



  • No labels