Open menu with table of contents Application Development Toolchain
Logo of Stuttgart Media University for light theme Logo of Stuttgart Media University for dark theme
Android Development

Application Development Toolchain

Stuttgart Media University

1 Agenda

  • Tools Overview
  • Integrated Development Environments for Android
  • Native Build Process
  • Version Control Systems
  • Testing and Distribution Tools
  • Collaboration Tools
  • Continuous Integration

2 Basic Tools for App Development

Most of the tools provide nowadays combined services.

3 Android IDE

For Android app development it is strongly recommended to use Android Studio.

Android Studio (based on IntelliJ IDEA): https://developer.android.com/studio

Use the current stable release. The starter projects of the assignments are set up for Android Studio 2026.1 with the Android Gradle Plugin 9.1.

4 Android Studio contains

  • Editor with Kotlin and Compose support, Compose Preview, Layout Inspector, Profiler
  • SDK Manager: downloads platform versions (API levels), build tools and system images
  • Device Manager: creates and runs Android Virtual Devices (the emulator)
  • ADB (Android Debug Bridge): installs and debugs apps on devices and emulators
  • D8: the dexer, compiles .class files to Dalvik Executable (.dex) bytecode for the Android Runtime
  • R8: the shrinker, removes unused code and resources and obfuscates release builds (successor of ProGuard)
  • Gradle + Android Gradle Plugin (AGP): the build system. Build scripts are written in Kotlin (build.gradle.kts), library versions live in the version catalog gradle/libs.versions.toml
// app/build.gradle.kts: alias from the version catalog instead of a hard-coded coordinate
dependencies {
    implementation(libs.androidx.navigation.compose)
}

5 Native Build Process

center

6 Cross-Compilation

  • Different CPUs have different instruction sets
  • In order to run an application on a certain processor it has to be compiled to the machine code corresponding to the processors Application Binary Interface (ABI)

    center

7 Simulator & Emulator

  • Developing and deploying on the target device is time consuming
  • Debugging might be more difficult
  • Sometimes the target device is not available
  • Thus, development environments usually provide a simulator or emulator, e.g.:
  • XCode (iOS):
    • iPhone Simulator
  • Android SDK:
    • Android Emulator

8 Simulator vs. Emulator

Simulator Emulator
Software that imitates the behavior of a software system by providing the same set of interfaces as the simulated software Software that imitates the behavior of a computer device or other electronic system

9 Version Control System (VCS)

10 Why Version Control

  • Supports collaboration, i.e. development of source code in a team
  • Stores different versions of a software efficiently without using too much storage space
  • Keeps track and allows to restore older versions
  • Efficient backup tool for you work

11 Git Clients

  • Command line interface (git), works everywhere and is used in the Git Intro
  • Git clients for Mac & Windows
  • IDE integrations:
    • Android Studio
    • Visual Studio Code

12 Crash Reporting and Beta Delivery Tools

  • Google Play Console
  • Firebase App Distribution
    • Distributes debug/release builds to testers without the Play Store
  • Firebase Crashlytics
    • Supports Android, iOS and Unity
    • Curated crash reports
    • Analytics integration
  • Sentry
    • Crash and performance monitoring, can be hosted on own server
  • Legacy: Visual Studio App Center (retired March 2025), HockeyApp, Fabric (both merged into the tools above)

13 Collaboration Tools (examples)

  • Citrix Podio
    • Chat, App, Wiki, ...
  • Redmine
    • OpenSource
    • Wiki, activities, gantt, tickets,...
  • Atlassian Jira Software
    • Issue tracking, scrum support, code integration
    • Often used in larger companies
  • GitLab / GitHub
    • Issues, boards, wiki, merge/pull requests and CI in one tool

14 Continuous Integration (CI)

  • Development procedure where changes are integrated frequently into a repository
  • Principles
    • Maintain a code repository
    • Automate the build
    • Test the build automatically
    • Daily commit of every developer & build including test of every commit
      • Keep the build fast (otherwise it would take too long for CI)
      • Testing is done in a realistic but not productive environment (clone)
  • Automate deployment for user tests
    • Make it easy for developers & testers to access the latest builds and see the build results
    • Also called Continuous Delivery (CD)

15 Continuous Integration (CI)

  • Some advantages of CI
    • Bugs can be found and fixed immediately
    • Due to frequent builds, integration problems can be fixed at an early stage (reducing debug time)
    • Can increase code quality
  • Disadvantages of CI
    • Initial setup is time consuming
    • Good test-tools are required
  • Tools for CI
    • GitLab CI: built into GitLab (also the HdM GitLab), configured by a .gitlab-ci.yml in the repository
    • GitHub Actions: built into GitHub, workflows in .github/workflows/*.yml
    • Jenkins: OpenSource CI server written in Java (forked from Hudson), self-hosted

16 CI Example: GitLab CI

These slides are built and deployed by GitLab CI. The complete .gitlab-ci.yml of the lecture repository:

variables:
  GIT_SUBMODULE_STRATEGY: recursive

pages:
  stage: deploy
  image: node:alpine
  script:
    - sh master/build.sh
    - mv dist public
  artifacts:
    paths:
      - public
  only:
  - master
  • Every push to master starts a job in a Docker container (node:alpine), runs the build script and publishes the result as GitLab Pages
  • An Android job works the same way: an image with the Android SDK, ./gradlew test and ./gradlew assembleDebug as script, the APK as artifact

17 Summary

  • A mobile toolchain consists of IDE, SDK (emulator, debug bridge, platform libraries), VCS, testing/distribution tools and CI
  • Android Studio bundles the SDK tools; Gradle with the Android Gradle Plugin builds the app, D8 produces the .dex bytecode, R8 shrinks release builds
  • Apps are cross-compiled for the ABI of the target CPU; the emulator runs a full Android system image on your machine
  • Git is the VCS of this course, hosted on the HdM GitLab
  • CI builds and tests every commit automatically, GitLab CI and GitHub Actions are integrated into the hosting platform

18 Recap Questions

  • What are the benefit and drawbacks of a simulator vs. an emulator?
  • What is an ABI? Which tool makes use of this?
  • What is an instruction set?
  • What do D8 and R8 do in the Android build?
  • Explain the concept of continuous integration? What are the benefits?
  • Which file configures a GitLab CI pipeline and what does a job consist of?

Questions?