Getting Started with Android Development

You can complete all the Android-version of the labs in this course on the Android emulator, you don’t need a physical device. Labs 3 built on Jetpack Compose and require Android 13 (Tiramisu) (API Level 33) as the minimum SDK. If your phone cannot (yet) be upgraded to Android 13, you’d have to test these labs on the emulator, in which case, double check that your development host has enough resources (compute power, memory capacity, disk space) to host the emulator.

Minimum requirements?

Unfortunately I don’t have a minimum required host spec. The emulator ran fine on the following spec for the student reporting it:

whereas students with the following spec had trouble running the emulator:

COMPATIBILITY ISSUE:

Some vendors build more closely to Android hardware spec than others. Some phones are better provisioned than others. Some vendors add their own OS mods on top of Android, layering a new wrapper or changing the expected behavior of Android APIs. Given our limited resources, we have tested the labs only on plain Android APIs, as documented in the Android Developers web site. The last time anybody counted (2015), there were 24,000 different Android devices from 1,300 brands. Even Google doesn’t have the resources to evaluate compatibility on all of them. We know that the labs run on Google’s Pixel 4a or later phones. If you have phones from a different vendor, we cannot guarantee that your phone would be adequately provisioned, or built sufficiently to Google’s spec, to be able to run all of the labs. We can help you debug, but in the end the phone may simply be not up to spec. We simply don’t have the means (funds and time) to try out all available Android devices in the market to check for compatibility. Recall that all Android-version of the labs do run on the Android emulator, so you don’t need a physical device to complete the labs.

Languages

We will develop in Kotlin only, not Java. Google has switched to “Kotlin first” since Google I/O 2019 and Jetpack Compose requires Kotlin. For 3rd-party libraries and SDKs, Kotlin can co-exist seamlessly with Java. Android Studio automatically converts Java code pasted into a Kotlin file. You can also invoke Java to Kotlin conversion from Android Studio’s menu: Code > Convert Java File to Kotlin File.

The course does not support any cross-platform frameworks, including React Native and Flutter. All course projects must be built natively. If you are contemplating cross-platform mobile development, please consult our collection of articles on industry experiences with cross-platform solutions.

Developing Android app

We assume:

alternative IDEs

You can use a different IDE (such as VSCode or IntelliJ), though we’ll “support” only Android Studio.

Setting up Android Studio

Installation:

  1. Download Android Studio Jellyfish 2023.3.1. Install and launch.
  2. On the Welcome to Android Studio screen, choose More Actio... > SDK Manager (screenshot) check Android 13.0 (Tiramisu) or later SDK and click APPLY.

    Alternatively, choose Tools > SDK Manager once passed the Welcome screen.

  3. Staying in the SDK Manager, click on the SDK Tools tab and install Google Play Licensing Library (screenshot) if not already installed.
  4. Open up Android Studio’s Settings (or Preferences) pane, navigate to Editor > General [drop down] > Auto Import, then in the Kotlin section (not the Java section) at the bottom of the pane check Add unambiguous imports on the fly (screenshot). Do not check Optimize imports on the fly.

    On macOS, you can access the settings pane from the main menu, Android Studio > Settings (or Android Studio > Preferences). On Windows, from Android Studio’s Welcome screen, navigate to Customize > All settings... (screenshot) or access it from the main menu, File > Settings once you’re past the Welcome screen.

    With auto import enabled, as you enter code, Android Studio will automatically detect and determine which library you need to import. It will then prompt you to hit the Alt-Enter or Opt-Enter key combination to automatically import said library. Go ahead and import the suggested libraries.

    Sometimes, there are multiple library choices and Android Studio would have you choose. Most of the time the choice will be rather obvious (don’t choose the Audio library if you’re not implementing Audio, or do pick the one with the word compose if you’re using Jetpack Compose, for example). We will provide a full list of imports as an Appendix to each lab spec, so you can double check when in doubt. Or you could cut and paste all of the imports into your source files before any code. If you choose to do so, be sure that you do NOT check Optimize imports on the fly, otherwise Android Studio will automatically remove them all for being unused and therefore unnecessary.

Missing essential plugins error

On Windows, if Android Studio would not launch and complains of Corrupted Installation and Missing essential plugins, delete the file C:\Users\%USERNAME%\AppData\Roaming\AndroidStudio*\disabled_plugins.txt [thanks C. Goh F22].

To run your app on your physical device, see the Running and debugging on device section below. To use the Android emulator, see the Running and debugging on an emulator section below.

About Android Studio

For Android Studio to run a little faster:

Xcode theme

If you’re used to developing on Xcode and would like your Android Studio to have Xcode-like syntax highlighting, you can use an Xcode color scheme, which has Xcode-Dark Theme and Material Theme UI as dependencies. You may want to install the Xcode Keymap plugin also. If you use a Mac as your development host, you may want to install Android Tool for conveniently capturing device screenshots and screen recordings from your Mac.

Android Studio panes

TIPS:

different screenshots

Depending on your version of Android Studio, the screenshots in our documentations may not look exactly the same as what you see on screen. If you are completely lost and cannot make sense of the screenshots, please consult the teaching staff.

See also Google’s Meet Android Studio for a thorough reference.

Running and debugging

On device

To enable USB debugging, on your Android phone tap on Settings > About Phone > Build Number seven times (and click your heels three times?) to enable the Developer options. Turn Developer options on and then turn on Settings > System > Developer Options. Turn on both Use developer options and USB debugging (and optionally Wireless debugging).

Android Studio supports WiFi pairing for debugging, which you activate using a QR code. If you don’t want to use a QR code, you can connect your device to Android Studio over WiFi using the plug-in ADB Wi-Fi which requires your phone to be connected by USB cable to be paired initially.

If you prefer to debug over a USB cable without WiFi, connect your device to your laptop. Android Studio should automatically recognize your device and use it to run your app. Click play to build and run.

See the Android Developers site for explanation of the remaining Developer options, though you can safely skip it at this point, except to turn on Stay awake.

On an emulator

  1. Start the Device Manager from Tools > Device Manager on Android Studio’s main menu bar.
  2. The left pane should open up on Android Studio. On the left pane, click Device Manager > Virtual > CREATE DEVICE “button” (screenshot).
  3. Pick a Phone device listed with “Play Store” enabled and click NEXT (screenshot).

    Be sure to pick a device listed with “Play Store” enabled, otherwise your emulator will not work for labs 2 and 4. At the time of writing, only Pixel 4 emulator is listed with Play Store enabled for Android 13.

    by modifying config.ini

    You can also enable Play Store manually for your device of choice by following the instructions in this stackoverflow article.

  4. Choose a system image. Choose EXACTLY API Level 33 (Release name: Tiramisu). Choose a system image listed with “(Google APIs)”. Click on the word Download next to Tiramisu in the Release Name column and then click FINISH and NEXT when done (screenshot).
  5. In the next screen, set Graphics: to Hardware - GLES 2.0 and click FINISH (screenshot).
  6. Close the AVD Manager screen
Developer option on emulator

There shouldn’t be a need to turn on the Developer option on the emulator for any of the labs in this course, but in case you do need to turn it on, tap on Settings > About Phone > Build Number seven times and set Settings > System > Developer options > Use developer options on [thanks R. Ma F22].

If your Android emulator terminated unexpectedly and you have non-ASCII characters in your username, follow this stackoverflow answer to store your emulator on a path with only ASCII characters [thanks Zhou T., W22].

Back in Android Studio, make sure your virtual device is selected in the box next to the green play button (screenshot).

To run your app

  1. Hit the green play button
  2. Play button changes icon to reload icon
  3. To see the log, choose from the main menu View > Tools Window > Logcat
  4. Click the stop button (seven positions to the right of the play button) on Android Studio to close the app (not the emulator)

To debug:

  1. Instead of the play button, hit the bug button
  2. To view the debug output, choose from the main menu View > Tools Window > Debug (this menu item shows up only when you’re debugging a process)

Running the labs on the Android emulator

If you have problem running the emulator, check out Troubleshooting and known issues for Android Emulator and system images.

Chatter and Images

There is no special set up necessary to run the basic Chatter lab (lab0) and the Images lab. The virtual camera on the emulator captures a stock scene for both photos and videos.

Looks like videos captured on the emulator can only be played back on Android. In particular, we cannot play them back on iOS devices nor on QuickTime Player (incompatibility with the narrowband H.264 codec used?).

To use the emulator with the other labs, you need to access its Extended controls: click on the ... at the bottom of the right menu bar (screenshot).

Audio

To record audio on the Android emulator, click the Microphone item on the extended controls menu and enable Virtual microphone uses host audio input (screenshot).

Due to privacy concern, this option must be set every time you restart the emulator.

On macOS, both recording and playing back audio on the Android emulator work fine. If you’re having problem, rebooting the emulator (hold down on the power button on the emulator) may fix it.

On other OS/platforms, the quality of the recorded audio will depend on the quality of your computer’s mic. Playing back audio also would depend on the quality of your audio and speaker systems. Your mileage may vary.

Also double check that the virtual microphone is turned on and volume on the emulator is cranked up.

ARCore

To use the Android emulator with ARCore, please check out Installing ARCore on Android Emulator.

OpenGL ES

If your project builds on OpenGL ES, you may want to check out:

Publishing an Android app

GooglePlay’s Testing Tracks can be used for beta testing (even A/B test).

To publish your app, follow Google’s Publish your app instructions.

References

Publishing an Android app


Prepared for EECS 441 by Alexander Wu, Mark Wassink, Yibo Pi, and Sugih Jamin Last updated: May 23th, 2024