Android

Android

Native Android development in Kotlin and Java.

  • Technical leadership on native Android projects
  • Expertise in developing for the Android user experience including best practices for permissions, notifications, back button behaviour, and other UX
  • High attention to detail with regards to UI implementation and striving for pixel-perfect layouts on Android using XML views and/or Jetpack Compose, depending on the project
  • Architecting Jetpack Compose UIs to support previews with mock data, allowing us to develop UI quickly and build for happy and sad paths easily
  • Building Design Systems that support both light and dark appearance modes to support teams in building out views
  • Building White Label Android apps, enabling support for multiple themes from a single codebase
  • Building Android apps that support multiple flavours and build variants, e.g. Development, Staging and Production app flavors, as well as white labelling
  • Working with type-safe navigation in both XML and Jetpack Compose, and helping teams migrate older versions of Compose navigation to the newer, type-safe versions
  • Thorough understanding of the OAuth spec from a full stack perspective (backend, Android, web, iOS), including implementing OAuth 2.1 with PKCE authentication using AppAuth on Android
  • Extensive experience with Android SDK versions and have been building functionality to support down to Lollipop (and previously Jellybean)
  • Thorough understanding of the Android operating system and Android's explicit and implicit intent system to optimize speed of development and provide a user experience Android users are expecting
  • Building support for deep link functionality including deferred deep linking
  • Working with a variety of libraries and APIs including: Firebase; error trackers; networking libraries like Retrofit, Ktor, Volley; tracking libraries like Mixpanel; chat support SDKs like Intercom, etc.
  • Working with push notifications and allowing users to configure notifications based on type
  • Networking, including REST with JSON, web sockets, gRPC, and Protobuf
  • MVVM architecture with LiveData and architecture components
  • MVVM architecture with coroutines and flows
  • Reactive programming with Kotlin flows and LiveData with experience in Rx
  • Data persistence in SQLite with Room database and SQLDelight
  • Implementing asynchronous worker tasks with WorkManager
  • Building location-based functionality including "near me" functionality and working with maps
  • Building custom UI for audio/video recording
  • Building web view applications and enabling communication between the web view and native layer
  • Unit testing in Java and Kotlin, including with coroutines, JUnit (4 & 5), Mockk
  • Automated UI testing with Espresso and Appium
  • Setting up Android lint and Kotlin lint to ensure code style consistency in the project
  • Configuring build tasks with Gradle
  • CI/CD setup for running tests, lint and other tasks for Git workflows, as well as automating deployments and code signing for Firebase App Distribution and the Google Play Store
  • Building apps that use Kotlin Multiplatform Mobile to build apps in Kotlin for both Android and iOS

Below are some projects that use Android.

See all the other Technologies I work with.

Projects that use Android