Skip to content

Android version of the kellner.team app using Kotlin Multiplatform for code sharing. Also includes the shared code.

License

Notifications You must be signed in to change notification settings

DatepollSystems/WaiterRobot-Shared-Android

Repository files navigation

kellner.team logo

kellner.team

Lightning fast and simple gastronomy
Get it on Google Play

Android & Shared

This repository includes the Android app (androidApp) and the shared KMM module (shared) for the kellner.team App. The iOS app can be found here.

The shared module is published as an SPM package to the GitHub Package Registry. For this the KMMBridge tool is used.

iOS dev with local KMM module version

For a guide to use a local version of the KMM module see KMMBridge local dev spm

TLRD:

  1. ./gradlew spmDevBuild (must be run after each change in the KMM module)
  2. Drag the whole KMM project folder (top level git folder) into the WaiterRobot project in Xcode
  3. Start programming :)
  4. When finished delete the KMM project folder in Xcode, make sure to select "Remove References"!!! (otherwise the whole KMM project will be deleted locally)

Releasing

Android

Production release can be created with ./gradlew androidApp:release. This creates a tag in the form of android/major.minor.patch (e.g. android/1.0.0) and triggers the CI build. The version is taken from the version.properties file. The app is then automatically deployed to the internal track on Google Play. After the deployment is finished the version will be automatically bumped to the next patch version. The app must then be promoted to production manually from there after testing. When app is then approved by Google publish the approved changes and remove the pre-release flag on GitHub Releases. (see publishAndroidProd.yml)

It is also possible to create release a specific version. Just add the v parameter to the command e.g. ./gradlew androidApp:release -Pv=3.0.2. This will first bump the version to 3.0.2, then create a production release and then bump the version to the next patch version.

On each push to develop a lava (dev) build is triggered and published to internal track of the lava kellner.team app on Google Play. A tag in the form of android/major.minor.patch-lava-epochMinutes (e.g. android/1.0.1-lava-27935730) is created. (see publishAndroidLava.yml)

Shared

A release is triggered on each push to develop (only when the shared module changed). The CI then builds the shared Xcode Framework (Swift Package) and uploads it to the GitHub Package registry. A tag in the form of major.minor.patch (e.g. 1.0.0) is created. (see publishSharedSpm.yml)

The Android app directly depends on the shared version in the repository (gradle project dependency). -> Version is the same as the Android version itself. The iOS app depends on the released SPM package in the GitHub Package registry. -> Each iOS release depends on a specified shared version.

Language, libraries and tools

Shared

Android

Further Resources and References