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

Android Development

  • In this lecture you will learn the basics of developing apps for Android devices. This includes the following topics listed below.
  • The lecture is designed for app development beginners who have good Java development skill (e.g. successfully passed the exam “Software Entwicklung 1 & Software Entwicklung 2” with a grade better than 2,3)
  • If you already have experiences in developing apps for Android and iOS, I would recommend you to visit the lecture “Spezielle Themen der mobilen Anwendungsentwicklung” (119645) where we do the more advanced stuff.
  • If you are interested in developing hybrid apps using web technologies and frameworks such as Ionic or Cordova you can visit the lecture “Mobile Web Applications” (119640).
Stuttgart Media University

1 About

1.1 Lecturer


1.2 Tutor

No Tutor yet

2 Contents

The lecture is split into a theoretical part, assignments and a practical part. The following list gives an overview (not complete) of the topics you will learn in these lectures. The assignments will help you to really understand and establish your knowledge.

2.1 Theoretical Part

Topics Slides
Introduction, lecture organization Organization
General mobile app development toolchain overview, native build process, version control systems (short Git introduction), testing tools, collaboration tools, continuous integration App-Development Toolchain
Introduction to the programming language Kotlin Kotlin Intro
Introduction (or refresher) to the versioning system Git Git Intro
Introduction to Android: System architecture, Android SDK basics, Android Studio introduction, ADM, ADB, Android Manifest, Android UI basics (composables, resources, etc.) Android Intro
Android component types overview, Activity, Application Context, Intent, WebView, Permissions, Excursion to Support Libraries, Android Security and UI reaction times Android Framework Basics
Implementing lists with LazyColumn Android Lists
Navigation Compose: NavController, NavHost, routes, back stack; Fragments as legacy Android Navigation
Services & Broadcast Receivers Services and Broadcast Receivers
Coroutines, suspend functions, Dispatchers, Flow & StateFlow, WorkManager Asynchronous Programming
SharedPreferences/DataStore, files, Room, MVVM with ViewModel, Repository and manual dependency injection Storage Options & App Architecture
Introduction to API calls and Serialization Android Networking
Testing (Compose UI tests, unit tests), pointers for the project categories (camera, sensors, maps, Bluetooth, animation), popular libraries, Android Automotive Android Excursion

3 Contents

3.1 Assignments

Assignments Slides
Assignment 1: Android Basics Assignment 1
Assignment 2: Introduction to LazyColumn Assignment 2
Assignment 3: Navigation Assignment 3
Assignment 4: Working with Room Assignment 4
Assignment 5: Introduction to API Calls and Image Loading Assignment 5

4 FAQ

  • Can I put my code in synchronized directories like Google Drive, OneDrive, Dropbox, etc.? No, this leads to issues with the Android Studio build process. Please use Git for version control and submitting your results.
  • My emulator or build process is not working: Please check if you have enough disk space, RAM and CPU power. If you are using Windows, please check if Hyper-V is disabled.
  • I have issues working with Git: Please check the Git Intro chapter.
  • I'm not sure with my submitted assignments: Make sure that you follow the folder structure described in the slides. You can verify the correct submission first by checking what's shown in GitLab, second if you clone the repo to a new fresh folder and Android Studio can build the project and third if the UI tests run through without any issues.
  • Please add a .gitignore file to the assignment projects. This ensures that only the files needed to build the apps are in your repository and no local properties or build outputs. Android Studio generates one for new projects; the starter projects already contain one. Reference: Android.gitignore.

5 FAQ

  • Which third party libraries can we use in the project? Everything from AndroidX/Jetpack (Navigation, Room, Lifecycle/ViewModel, DataStore, WorkManager, CameraX, ...) and the Kotlin standard library/kotlinx.coroutines is allowed, that is the platform. The "no third party libraries" rule concerns everything outside AndroidX and the Kotlin stdlib, with four exceptions: Retrofit, Gson, Coil and Google Maps.
  • Where do I put the OMDb API key for assignment 5? Into the file local.properties in the project root as OMDB_API_KEY=your_key. The build reads it into BuildConfig.OMDB_API_KEY. local.properties is ignored by Git, never commit the key (also not hard-coded in Kotlin code). Get a free key at https://www.omdbapi.com/apikey.aspx.
  • Which Android Studio / Gradle version? Use the current stable Android Studio. The starter projects use the Android Gradle Plugin 9.1 with Gradle 9.3 (Kotlin DSL and a version catalog in gradle/libs.versions.toml). If Android Studio offers to upgrade the AGP, you may accept, as long as the project still builds and the UI tests pass.

6 Notice

No liability assumed. As Android frameworks, programming languages (e.g. Kotlin) and development environments evolve very quickly, the lecture slides and assignments have to be constantly updated. Please bear with me, apologies for any inconvenience.

For ideas and any kind of comments please send me a message to nagelm@hdm-stuttgart.de.