This is the Varsom RegObs app version 4. It is based on code from version 3 but rewritten to Ionic 6.
- Installer node v18.10.x (.msi-fil for Windows) ** Ikke nyere eller eldre versjon**
- Sjekk at
npm --version
viser v8 Ikke nyere eller eldre versjon - Installer git
- Clone repo (
git clone https://github.com/NVE/regObs4.git
) - Install packages (
npm install
)
Run app in browser:
npm run start
npm run build (or ionic build)
npx cap sync android
npx cap run android
More info We use Capacitor (and not Cordova) to build the native app. A few tips on development environment setup on Windows:
- Android SDK and Gradle cache may give you authorization trouble if installed in your user profile folder.
- JDK is included with Android Studio, but you need to set JDK_HOME to the JDK folder location.
- An example of environment variables you need:
ANDROID_SDK_ROOT=C:\android\sdk
JDK_HOME=C:\Program Files\Android\Android Studio\jbr
- An example of search path that may work:
C:\android\sdk\tools\bin
C:\android\sdk\platform-tools
C:\android\sdk\emulator
C:\Program Files\Android\Android Studio\jbr\bin
- You have to uninstall the regular RegObs app from your phone in order to debug
- This may be helpful for device connection problems: More info
[More info] ionic-team/capacitor#2822
npm run build (or ionic build)
npx cap sync ios
npx cap open ios
npx cap open ios vil åpne prosjektet i Xcode. Kjør appen fra XCode.
Mer info om ionic utvikling for ios.
npm run build --production --device
TIP! if you run into "ERROR maximum call stack size exceeded" it's most probably a circular module dependency. If you build without aot, you might get a better error message:
ng build --aot=false
- For a release to trigger, the branch has to follow the naming convention
release/vx.x.x
. For examplerelease/v4.0.0
. Switch 4.0.0 with the version number you want to release.
git switch develop
git pull
git switch -c release/v4.0.0
- Commit changed files and push relase-branch.
git add .
git commit -m "Release v4.0.0"
git push release/v4.0.0
The build will be published to internal testers in Testflight and Google Play automatically.
You need to add release notes / what to test manually in Appstore connect and Google Play console after the build is published.
After the release is published, you need to update the version number in package.json
and package-lock.json
to the
next version, and merge the release branch to develop.
git switch develop
git pull
git merge release/v4.0.0
git switch -c task/update-version-to-4.0.1
npm run create-version-file
git add .
git commit -m "Update version to 4.0.1"
git push
Du trenger sertifikater for å bygge og publisere apper.
Apple-sertifikatene varer bare ett år av gangen.
Mer info om å lage Apple-sertifikater
Det er enklere å gjøre dette med en Mac, men det er også mulig å gjøre i Windows vha. openssl. Mer om dette under.
Vi har brukt openssl som følger med Git.
Det funket bra å kjøre openssl-kommandoene i bash-konsollet, som følger med Git. Bash ligger gjerne i mappa bin der du har installert Git. F.eks. C:\Program Files\Git\bin
.
- Gå til en en mappe du vil ha setifikatene i og start bash fra kommandolinja:
C:\Program Files\Git\bin\bash
. Kjør resten av openssl-kommandoene i bash-konsollet. - Generer privat nøkkel:
openssl genrsa -out apple-distribution-2024-11-27.key 2048
- Generer sertifikatforespørsel:
openssl req -new -key apple-distribution-2024-11-27.key -out apple-distribution-2024-11-27.csr
- Logg deg inn på https://developer.apple.com/account, gå til sertifikater og last opp sertifikatforespørsel. Last deretter ned sertifikatet. Jeg gjorde om navnet på sertifikatet til
apple-distribution-2024-11-27.cer
etter at jeg lastet det ned. - Mens du er inne på utvikler-sidene til Apple, lag også en distribusjonsprofil basert på sertifikatet og last den ned.
- Lag en pem-fil av sertifikatet:
openssl x509 -in apple-distribution-2024-11-27.cer -inform DER -out apple-distribution-2024-11-27.pem -outform PEM
- Konverter pem-fil til p12.fil:
openssl pkcs12 -legacy -export -inkey apple-distribution-2024-11-27.key -in apple-distribution-2024-11-27.pem -out apple-distribution-2024-11-27.p12
(legg inn et passord når du blir spurt)
- Last opp p12-fila og distribusjonsprofilen til Azure Devops, under Library / Secure Files.
- Lag en variabel som inneholder passordet til p12-fila under Library / Variable Groups
Navnet på de to filene og navnet på variabelen legger du inn i azure-pipelines-release.yml (se nedenfor).
Du må også endre disse filene i prosjektet:
File | Setting |
---|---|
azure-pipelines-release.yml | certSecureFile |
azure-pipelines-release.yml | provisioningProfileName |
azure-pipelines-release.yml | provProfileSecureFile |
project.pbxproj | PROVISIONING_PROFILE_SPECIFIER |
Vi har et åpent beta-test-program hvor eksterne testere kan melde seg inn ved å følge en link.
- For å rulle videre fra intern testing til beta, logg på https://play.google.com/console/
- Siste versjon av appen finner du under "Tester/Intern testing"
- Registrere release notes. Dette kan vi automatisere på sikt.
- Velg "Kopier utganven til et annet spor"
- Velg spor "Åpen testing"
- Gå gjennom evt. advarsler (da vi publiserte 4.4.6 var det 3 advarsler som vi ignorerte)
- Fullfør publisering
- For å rulle videre fra intern testing til beta, logg på https://appstoreconnect.apple.com/
- Velg Varsom under My Apps
- Velg TestFlight
- Under "Test information", legg inn release notes på begge språk
- Velg External Groups / Beta Testers
- Trykk på + under Builds, velg riktig versjon/build og Next
- Velg Submit for Review
Appene må produksjonssettes manuelt i i App Store og i Google Play
- Gå til https://appstoreconnect.apple.com/
- Bruk + øverst til venstre for "Opprett ny utgave". Pass på at du faktisk sender den til gjennomgang, det skal stå " waiting for review" i statusfeltet. Det kan ta et par dager før du får godkjent den nye versjonen.
- Oppdater versjonsnotater - engelsk og norsk
- Velg riktig bygg
- Når versjonen er godkjent, kan du sende den til produksjon
- For å rulle videre fra beta til produksjon, logg på https://play.google.com/console/
- Siste versjon av appen finner du under "Tester/Åpen testing"
- Velg "Kopier utgaven til et annet spor"
- Oppdater versjonsnotater hvis nødvendig - engelsk og norsk
- Pass på at 100% av brukerne får tilgang. Mulig du må endre andelen fra 20 til 100% etterpå.
Etter produksjonssetting, må release-greina flettes inn:
git flow release finish 'vX.Y.Z'
git push origin --tags
git push develop
git push master
We use eslint for linting and formatting. Rules are specified in .eslintrc.js.
To run lint manually and autofix, run:
npm run lint:fix
Installer npm-check-updates globalt og sjekk packages.json:
npm i -g npm-check-updates
ncu
NB! Cordova plugins må oppdateres ved å først slette dem og legge dem til på nytt:
ionic cordova plugin rm cordova-plugin-name
ionic cordova plugin add cordova-plugin-name
Bruk ng update for enklere migrering, se https://update.angular.io/
ng update
ncu -u
Check the api endpoint named "swagger" in ng-swagger-gen.json is the endpoint you like to base the models on. If you want to update based on changes on localhost you should change "swagger" property in ng-swagger-gen.json file
npm run generate-swagger-api-module
Revert changes in regobs-api.module.ts
Download new regions from [https://nedlasting.nve.no/gis/#].
- Select "Varslingsområder" -> "Snøskred"
- Format: GeoJson
- Coordinates: Geographic WGS84 (lat, lng)
- Area: "Landsdekkende"
Overwrite /assets/json/varslingsomraader.json
Download new json from [https://api01.nve.no/hydrology/forecast/landslide/test/api/Region/] Overwrite /assets/json/regions.json
The boarders are used to show warinings in current map view Download "Administrative enheter fylker (gjeldende)" area from [https://kartkatalog.geonorge.no/nedlasting]
- Select "Hele landet"
- Projection "UTM sone 33"
- Format GEOJSON
The file need to be simplified and converted to wgs84:
- Download mapshaper: npm install -g mapshaper
- Edit json file and remove all features except Fylker
- Simplify: mapshaper Basisdata-fylker.json -simplify 15% -o Basisdata-fylker-simple.json
- Reproject: mapshaper Basisdata-fylker-simple.json -proj from=EPSG:25833 wgs84 -o regions-simple-polygons.json
The json file will now be around 700KB and in wgs84 projection. Overwrite /assets/json/regions-simple-polygons.json
NB! Vi oversetter / oppdaterer norsk bokmål og engelsk direkte i dette prosjektet, mens alle andre språk hentes fra Lokalise og tas inn via Pull Requester
For hver commit til develop-branchen skal Lokalise automatisk hente endringer fra github. Hvis ikke dette fungerer kan en "pull" til Lokalise fra Github trigges manuelt fra Lokalise.
For å bruke script som går mot Lokalise trengs en api-key som kan opprettes under din bruker i Lokalise. Legg den i translations\lokalise-api-key.json
med innhold
{"apiKey": "..."}
For å lage en PR med endringer fra lokalise bruk
npm run translations:pr <translationKey>
der translationKey
er enten ios
eller web
.
NB! For å legge til et nytt språk, bruk dialog i xCode under App / Localizations.
Oversettelsene ligger under ios / App / App.
Oversettelsene ligger under src / assets / i18n.
I src/assets/json
ligger det fallback-data for nedtrekksmenyer og hjelpetekster. Disse kan oppdateres med
npm run translations:update-fallback
. Skriptet laster ned nye filer fra apiet.