Skip to content

DatepollSystems/WaiterRobot-Shared-Android

Repository files navigation

WaiterRobot logo

WaiterRobot

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 WaiterRobot App. The iOS app can be found here.

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

For local development the Android module directly depends on the local shared version (gradle project dependency). When releasing the published library version 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

The main branch contains the Package.swift file ready for local dev.

Short version

  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 folder, make sure to select "Remove References"!!! (otherwise the whole KMM project will be deleted locally)

Releasing

Android

Production release is triggered on push to main. The CI then builds the app and deploys it to the internal Track on Google Play. After testing the app then must be promoted to production manually from there. A tag in the form of android/major.minor.patch (e.g. android/1.0.0) is created. (see publishAndroid.yml)

Do not forget to bump the android version (version.properties) on the dev branch after a production release was made.

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

Shared

A release is triggered on push to main or develop (only when shared module changed). The CI then builds the shared Xcode Framework (Swift Package) and the shared Android library. Both artifacts are uploaded to the GitHub Package registry. A tag in the form of major.minor.patch ( e.g. 1.0.0) is created. (see publishShared.yml)

Unfortunately SPM does not support custom tag prefixes (e.g. shared/1.0.0) and kmmbridge does not support tag suffixes (without creating a custom release action). Therefor the currently the no shared identifier is added to the tag of shared releases.

Language, libraries and tools

Shared

Android

Further Resources and References