Skip to content
/ Mobile Public

The cutest mower robot app you'll ever need.

Notifications You must be signed in to change notification settings

Mow-E/Mobile

Repository files navigation

Mow-E Mobile

This is the mobile app for the Mow-E system developed for the Intelligent Mobile Systems course. It's a cross-platform mobile app developed with React Native.

Project Setup

  1. Install system-wide prerequisites
  2. Clone the repository
  3. Install dependencies: npm install, also npx pod-install if building the project for iOS

Run App on Mobile Device / Simulator

  1. Setup project and make sure that all dependencies are installed
  2. Make sure the device has developer options enabled and is set-up for running a react-native app
  3. Start metro in separate terminal: npm start or npx react-native start
  4. For iOS: npx react-native run-ios, run npx react-native run-ios -h for options like specific device/simulator names
  5. For Android: npx react-native run-android, run npx react-native run-android for options like specific device/simulator ids
  6. Important option to note for both platforms: --mode Debug / --mode Release installs and runs the respective version of the app, where Debug supports a connection to the metro dev server and hot reloads, while Release is a full build that stands and runs on its own

Development

Related External Tools and Repositories

Overview and Testing

The react-native based source lies in /src and the automated tests lie in /__tests__.

Nice-to-Know and Known Issues

  • In Debug mode nearly everything is logged. That's nice to see what's going on under the hood, but it also slows down performance drastically. Logs can be disabled, e.g. with the transform-remove-console babel plugin in /babel.config.js. This is automatically done for the Release mode, but when developing things like the WebSocket connection and the map one might want to disable logs, otherwise the app becomes unresponsive in Debug mode.
  • The map drawing is just a simple prototype feature and not fully stable. It might happen that the size of the map is not always updated as it should be or that the current position marker runs outside the current borders.
  • iOS and Android handle some displaying-related things differently, so there might be some differences or slight UI-bugs (very rarely).