How to Build Android Apps with Kotlin - Alex Forrester - E-Book

How to Build Android Apps with Kotlin E-Book

Alex Forrester

0,0
39,59 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.

Mehr erfahren.
Beschreibung

Looking to kick-start your app development journey with Android 13, but don’t know where to start? How to Build Android Apps with Kotlin is a comprehensive guide that will help jump-start your Android development practice.
This book starts with the fundamentals of app development, enabling you to utilize Android Studio and Kotlin to get started with building Android projects. You'll learn how to create apps and run them on virtual devices through guided exercises. Progressing through the chapters, you'll delve into Android's RecyclerView to make the most of lists, images, and maps, and see how to fetch data from a web service.
You'll also get to grips with testing, learning how to keep your architecture clean, understanding how to persist data, and gaining basic knowledge of the dependency injection pattern. Finally, you'll see how to publish your apps on the Google Play store.
You'll work on realistic projects that are split up into bitesize exercises and activities, allowing you to challenge yourself in an enjoyable and attainable way. You'll build apps to create quizzes, read news articles, check weather reports, store recipes, retrieve movie information, and remind you where you parked your car.
By the end of this book, you'll have the skills and confidence to build your own creative Android applications using Kotlin.

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB

Seitenzahl: 651

Veröffentlichungsjahr: 2023

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



How to Build Android Apps with Kotlin

Second Edition

A practical guide to developing, testing, and publishing your first Android apps

Alex Forrester Eran Boudjnah Alexandru Dumbravan Jomar Tigcal

BIRMINGHAM—MUMBAI

How to Build Android Apps with Kotlin

Second Edition

Copyright © 2023 Packt Publishing

All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.

Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the authors, nor Packt Publishing or its dealers and distributors, will be held liable for any damages caused or alleged to have been caused directly or indirectly by this book.

Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.

Group Product Manager: Rohit Rajkumar

Publishing Product Manager: Nitin Nainani

Content Development Editor: Abhishek Jadhav

Technical Editor: Simran Ali

Copy Editor: Safis Editing

Project Coordinator: Aishwarya Mohan

Proofreader: Safis Editing

Indexer: Manju Arasan

Production Designer: Joshua Misquitta

Marketing Coordinator: Nivedita Pandey

First published: February 2021

Second edition: May 2023

Production reference: 1210423

Published by Packt Publishing Ltd.

Livery Place

35 Livery Street

Birmingham

B3 2PB, UK.

ISBN 978-1-83763-493-4

www.packtpub.com

Dedicated to my wife Angela and daughter Catherine for all their love and support.

– Alex Forrester

To my endlessly supportive wife, Lea, for always being there for support. To my parents, Amos and Tirtsa, for spending some of their best years teaching and encouraging me. I could not have asked for better people in my life, so thank you all.

– Eran Boudjnah

Dedicated to Niki for her constant support.

– Alexandru Dumbravan

To my loving wife, Celine, for her support and encouragement. To my parents for all their sacrifices and for raising me well.

– Jomar Tigcal

Contributors

About the authors

Alex Forrester is an experienced software developer with more than 20 years of experience in mobile and web development and content management systems. He has worked with Android since 2010, creating flagship apps for blue-chip companies across a broad range of industries at Sky, The Automobile Association, HSBC, Discovery Channel, and O2. Alex lives in Hertfordshire with his wife and daughter. When he’s not developing, he likes rugby and running in the Chiltern hills.

Eran Boudjnah is a developer with over 20 years of experience in developing desktop applications, websites, interactive attractions, and mobile applications. He has worked with Android since 2011, developing apps and leading mobile teams for a wide range of clients, from start-ups (JustEat and Plume Design) to large-scale companies (Sky and HSBC) and conglomerates. He is passionate about board games (with a modest collection of a few hundred games) and has a Transformers collection he’s quite proud of. Eran lives in Brentwood, England, with Lea, his wife.

Alexandru Dumbravan is an Android developer with more than 10 years of experience building Android apps, focusing on fintech applications since 2016 when he moved to London. In his spare time, Alex enjoys video games, movies, and the occasional gym visit.

Jomar Tigcal is an Android developer with over 14 years of experience in mobile and software development. He has worked on various stages of Android app development for small start-ups and large companies since 2012. Jomar has also given talks and conducted training and workshops on Android. In his free time, he likes running and reading. He lives in Vancouver, BC, Canada, with his wife Celine.

About the reviewers

Ed Holloway-George is an Android developer and Google Developer Expert originally from Oxford, England, but currently living in Nottingham. An Android developer for just over 10 years, Ed now works for ASOS as a lead developer having previously worked on well-known applications such as National Trust, My Oxfam, Snoop, Carling Tap, and more.

In his spare time, Ed can be found speaking at conferences, writing blog posts, and sharing pictures of his dog.

Guruprasad Bagade is a senior developer who has led teams and has over a decade of experience in mobile and software development. He has witnessed changes in Android development from Java to Kotlin with the most recent framework libraries. He primarily worked in the banking domain for Barclays and JP Morgan clients. He has hired everyone from freshers to experienced developers for organizations and helped set up teams while also publishing knowledge articles on Android on the internal portals of the various organizations where he has worked.

He has published technical research papers at the Institute of Electrical and Electronics Engineers (IEEE) and international and national conferences. He also contributes to open source projects. In his spare time, he keeps himself up to date with the latest technologies.

Table of Contents

Preface

Part 1: Android Foundation

1

Creating Your First App

Technical requirements

Creating an Android project with Android Studio

Exercise 1.01 – creating an Android Studio project for your app

Setting up a virtual device and running your app

Exercise 1.02 – setting up a virtual device and running your app on it

The Android manifest

Exercise 1.03 – configuring the Android manifest internet permission

Using Gradle to build, configure, and manage app dependencies

The project-level build.gradle file

The app-level build.gradle file

Exercise 1.04 – exploring how Material Design is used to theme an app

Android application structure

Exercise 1.05 – adding interactive UI elements to display a bespoke greeting to the user

Accessing Views in layout files

Further input validation

Activity 1.01 – producing an app to create RGB colors

Summary

2

Building User Screen Flows

Technical requirements

The Activity lifecycle

Exercise 2.01 – logging the Activity Callbacks

Saving and restoring the Activity state

Exercise 2.02 – saving and restoring the state in layouts

Exercise 2.03 – saving and restoring the state with Callbacks

Activity interaction with Intents

Exercise 2.04 – an introduction to Intents

Exercise 2.05 – retrieving a result from an Activity

Intents, Tasks, and Launch Modes

Exercise 2.06 – setting the Launch Mode of an Activity

Activity 2.01 – creating a login form

Summary

3

Developing the UI with Fragments

Technical requirements

The fragment lifecycle

onAttach

onCreate

onCreateView

onViewCreated

onActivityCreated

onStart

onResume

onPause

onStop

onDestroyView

onDestroy

onDetach

Exercise 3.01 – adding a basic fragment and the fragment lifecycle

Exercise 3.02 – adding fragments statically to an activity

Static fragments and dual-pane layouts

Exercise 3.03 – dual-pane layouts with static fragments

Dynamic fragments

Exercise 3.04 – adding fragments dynamically to an activity

Jetpack Navigation

Exercise 3.05 – adding a Jetpack navigation graph

Activity 3.01 – creating a quiz on the planets

Summary

4

Building App Navigation

Technical requirements

Navigation overview

Navigation drawer

Exercise 4.01 – creating an App with a navigation drawer

Bottom navigation

Exercise 4.02 – adding bottom navigation to your app

Tabbed navigation

Exercise 4.03 – using tabs for app navigation

Activity 4.01 – building primary and secondary app navigation

Summary

Part 2: Displaying Network Calls

5

Essential Libraries: Retrofit, Moshi, and Glide

Technical requirements

Introducing REST, API, JSON, and XML

Fetching data from a network endpoint

Exercise 5.01 – reading data from an API

Parsing a JSON response

Exercise 5.02 – extracting the image URL from the API response

Loading images from a remote URL

Exercise 5.03 – loading the image from the obtained URL

Activity 5.01 – displaying the current weather

Summary

6

Adding and Interacting with RecyclerView

Technical requirements

Adding RecyclerView to our layout

Exercise 6.01 – adding an empty RecyclerView to your main activity

Populating RecyclerView

Exercise 6.02 – populating your RecyclerView

Responding to clicks in RecyclerView

Exercise 6.03 – responding to clicks

Supporting different Item types

Exercise 6.04 – adding titles to RecyclerView

Swiping to remove Items

Exercise 6.05 – adding swipe to delete functionality

Adding items interactively

Exercise 6.06 – implementing an Add A Cat button

Activity 6.01 – managing a list of Items

Summary

7

Android Permissions and Google Maps

Technical requirements

Requesting permission from the user

Exercise 7.01 – requesting the location permission

Showing a map of the user’s location

Exercise 7.02 – obtaining the user’s current location

Map clicks and custom markers

Exercise 7.03 – adding a custom marker where the map was clicked

Activity 7.01 – creating an app to find the location of a parked car

Summary

8

Services, WorkManager, and Notifications

Technical requirements

Starting a background task using WorkManager

Exercise 8.01 – executing background work with the WorkManager class

Background operations noticeable to the user – using a Foreground Service

Exercise 8.02 – tracking your SCA’s work with a Foreground Service

Activity 8.01 – reminder to drink water

Summary

9

Building User Interfaces Using Jetpack Compose

Technical requirements

What is Jetpack Compose?

Exercise 9.01 – first Compose screen

Handling user actions

Exercise 9.02 – handling user inputs

Theming in Compose

Exercise 9.03 – applying themes

Adding Compose to existing projects

Activity 9.01 – first Compose app

Summary

Part 3: Testing and Code Structure

10

Unit Tests and Integration Tests with JUnit, Mockito, and Espresso

Technical requirements

Types of testing

JUnit

Android Studio testing tips

Mockito

Exercise 10.01 – testing the sum of numbers

Integration tests

Robolectric

Espresso

Exercise 10.02 – double integration

UI tests

Testing in Jetpack Compose

Exercise 10.03 – random waiting times

TDD

Exercise 10.04 – using TDD to calculate the sum of numbers

Activity 10.01 – developing with TDD

Summary

11

Android Architecture Components

Technical requirements

Android components background

ViewModel

Exercise 11.01 – shared ViewModel

Data streams

LiveData

Additional data streams

Room

Entities

DAO

Setting up the database

Third-party frameworks

Exercise 11.03 – making a little room

Activity 11.01 – a shopping notes app

Summary

12

Persisting Data

Technical requirements

Preferences and DataStore

SharedPreferences

Exercise 12.01 – wrapping SharedPreferences

DataStore

Exercise 12.02 – Preference DataStore

Files

Internal storage

External storage

FileProvider

The Storage Access Framework (SAF)

Asset files

Exercise 12.03 – copying files

Scoped storage

Camera and media storage

Exercise 12.04 – taking photos

Activity 12.01 – dog downloader

Summary

13

Dependency Injection with Dagger, Hilt, and Koin

Technical requirements

The necessity of dependency injection

Manual DI

Exercise 13.01 – manual injection

Dagger 2

Consumers

Providers

Connectors

Qualifiers

Scopes

Subcomponents

Exercise 13.02 – Dagger injection

Hilt

Exercise 13.03 – Hilt injection

Koin

Exercise 13.04 – Koin injection

Activity 13.01 – injected repositories

Summary

Part 4: Polishing and Publishing an App

14

Coroutines and Flow

Technical requirements

Using Coroutines on Android

Creating coroutines

Adding coroutines to your project

Exercise 14.01 – using coroutines in an Android app

Transforming LiveData

Exercise 14.02 – LiveData transformations

Using Flow on Android

Collecting Flows on Android

Creating Flows with Flow Builders

Using operators with Flows

Exercise 14.03 – using Flow in an Android application

Activity 14.01 – creating a TV Guide app

Summary

15

Architecture Patterns

Technical requirements

Getting started with MVVM

Binding data on Android with data binding

Exercise 15.01– using data binding in an Android project

Using Retrofit and Moshi

Implementing the Repository pattern

Exercise 15.02 – using Repository with Room in an Android project

Using WorkManager

Exercise 15.03 – adding WorkManager to an Android Project

Activity 15.01 – revisiting the TV Guide app

Summary

16

Animations and Transitions with CoordinatorLayout and MotionLayout

Technical requirements

Activity transitions

Adding activity transitions through XML

Adding activity transitions through code

Starting an activity with an activity transition

Exercise 16.01 – creating activity transitions in an app

Adding a shared element transition

Starting an activity with the shared element transition

Exercise 16.02 – creating the shared element transition

Animations with CoordinatorLayout

Animations with MotionLayout

Adding MotionLayout

Creating animations with MotionLayout

Exercise 16.03 – adding animations with MotionLayout

The Motion Editor

Debugging MotionLayout

Modifying the MotionLayout path

Exercise 16.04 – modifying the animation path with keyframes

Activity 16.01 – Password Generator

Summary

17

Launching Your App on Google Play

Preparing your apps for release

Versioning apps

Creating a keystore

Exercise 17.01 – creating a keystore in Android Studio

Storing the keystore and passwords

Signing your apps for release

Exercise 17.02 – creating a signed APK

Android app bundle

Exercise 17.03 – creating a signed app bundle

App signing by Google Play

Creating a developer account

Uploading an app to Google Play

Creating a store listing

Preparing the release

Rolling out a release

Managing app releases

Release tracks

Staged rollouts

Managed publishing

Activity 17.01 – publishing an app

Summary

Index

Other Books You May Enjoy

Preface

Android has ruled the app market for the past decade, and developers are increasingly looking to start building their own Android apps. How to Build Android Apps with Kotlin starts with the building blocks of Android development, teaching you how to use Android Studio, the integrated development environment (IDE) for Android, with the Kotlin programming language for app development.

Then, you’ll learn how to create apps and run them on virtual devices using guided exercises. You’ll cover the fundamentals of Android development, from structuring an app to building out the UI with activities, fragments, and various navigation patterns. Progressing through the chapters, you’ll delve into Android’s RecyclerView to make the most of displaying lists of data and become comfortable with fetching data from a web service and handling images.

You’ll then learn about mapping, location services, and the permissions model before working with notifications and how to persist data. Next, you’ll build user interfaces using Jetpack Compose. Moving on, you’ll get to grips with testing, covering the full spectrum of the test pyramid. You’ll also learn how Android Architecture Components (AAC) is used to cleanly structure your code and explore various architecture patterns and the benefits of dependency injection.

Coroutines and the Flow API are covered for asynchronous programming. The focus then returns to the UI, demonstrating how to add motion and transitions when users interact with your apps. Toward the end, you’ll build an interesting app to retrieve and display popular movies from a movie database, and then see how to publish your apps on Google Play.

By the end of this book, you’ll have the skills and confidence needed to build fully-fledged Android apps using Kotlin.

Who this book is for

If you want to build your own Android apps using Kotlin but are unsure of how to begin, then this book is for you. A basic understanding of the Kotlin programming language will help you grasp the topics covered in this book more quickly.

What this book covers

Chapter 1, Creating Your First App, shows how to use Android Studio to build your first Android app. Here, you will create an Android Studio project, understand what it’s made up of, and explore the tools necessary for building and deploying an app on a virtual device. You will also learn about the structure of an Android app.

Chapter 2, Building User Screen Flows, dives into the Android ecosystem and the building blocks of an Android application. Concepts such as activities and their lifecycle, intents, and tasks will be introduced, as well as restoring the state and passing data between screens or activities.

Chapter 3, Developing the UI with Fragments, teaches you the fundamentals of using fragments for the user interface of an Android application. You will learn how to use fragments in multiple ways to build application layouts for phones and tablets, including using the Jetpack Navigation component.

Chapter 4, Building App Navigation, goes through the different types of navigation in an application. You will learn about navigation drawers with sliding layouts, bottom navigation, and tabbed navigation.

Chapter 5, Essential Libraries: Retrofit, Moshi, and Glide, gives you an insight into how to build apps that fetch data from a remote data source with the use of the Retrofit library and the Moshi library to convert data into Kotlin objects. You will also learn about the Glide library, which loads remote images into your app.

Chapter 6, Adding and Interacting with RecyclerView, introduces the concept of building lists and displaying them with the help of the RecyclerView widget.

Chapter 7, Android Permissions and Google Maps, presents the concept of permissions and how to request them from the user in order for your app to execute specific tasks, as well as introducing you to the Maps API.

Chapter 8, Services, WorkManager, and Notifications, details the concept of background work in an Android app and how you can have your app execute certain tasks in a way that is invisible to the user, as well as covering how to show a notification of this work.

Chapter 9, Building User Interfaces Using Jetpack Compose, shows how Jetpack Compose works, how to apply styles and themes, and how to use Jetpack Compose in projects started with layout files.

Chapter 10, Unit Tests and Integration Tests with JUnit, Mockito, and Espresso, teaches you about the different types of tests for an Android application, what frameworks are used for each type of test, and the concept of test-driven development.

Chapter 11, Android Architecture Components, provides an insight into components from the Android Jetpack libraries, such as ViewModel, which will help separate the business logic from the user interface code. We will then look at how we can use observable data streams such as LiveData to deliver data to the user interface. Finally, we will look at the Room library to analyze how we can persist data.

Chapter 12, Persisting Data, shows you the various ways to store data on a device, from SharedPreferences to files. The Repository concept will also be introduced, giving you an idea of how to structure your app in different layers.

Chapter 13, Dependency Injection with Dagger, Hilt, and Koin, explains the concept of dependency injection and the benefits it provides to an application. Frameworks such as Dagger, Hilt, and Koin are introduced to help you manage your dependencies.

Chapter 14, Coroutines and Flow, introduces you to doing background operations and data manipulations with coroutines and Flow. You’ll also learn about manipulating and displaying data using Flow operators and LiveData transformation.

Chapter 15, Architecture Patterns, explains the architecture patterns you can use to structure your Android projects to separate them into different components with distinct functionality. These make it easier for you to develop, test, and maintain your code.

Chapter 16, Animations and Transitions with CoordinatorLayout and MotionLayout, discusses how to enhance your apps with animations and transitions with CoordinatorLayoutand MotionLayout.

Chapter 17, Launching Your App on Google Play, concludes this book by showing you how to publish your apps on Google Play: from preparing a release to creating a Google Play Developer account, and finally launching your app.

To get the most out of this book

Each great journey begins with a humble step. Before we can do awesome things in Android, we need to be prepared with a productive environment. In this section, we will see how to do that.

Minimum hardware requirements

For an optimal learning experience, we recommend the following hardware configuration:

Processor: Intel Core i5 or equivalent or higherMemory: 8 GB RAM or moreStorage: 8 GB available space minimum

Software requirements

You’ll also need the following software installed in advance:

OS: 64-bit Windows 8/10/11, macOS, or 64-bit LinuxAndroid Studio Electric Eel or higher

Installation and setup

Before you start this book, you will need to install Android Studio Electric Eel (or higher), which is the software you will be using throughout the chapters. You can download Android Studio from https://developer.android.com/studio.

On macOS, launch the DMG file and drag and drop Android Studio into the Applications folder. Once this is done, open Android Studio. On Windows, launch the EXE file. If you’re using Linux, unpack the ZIP file into your preferred location. Open your Terminal and navigate to the android-studio/bin/ directory and execute studio.sh.

Next, the Data Sharing dialog will pop up; click either the Send usage statistics to Google button or the Don’t send button to disable sending anonymous usage data to Google:

The Data Sharing dialog

In the Welcome dialog, click the Next button to start the setup:

The Welcome dialog

In the Install Type dialog, select Standard to install the recommended settings. Then, click the Next button:

The Install Type dialog

In the Select UI Theme dialog, choose your preferred IDE theme—either Light or Darcula (dark theme)—then click the Next button:

The Select UI Theme dialog

In the Verify Settings dialog, review your settings and then click the Finish button. The setup wizard downloads and installs additional components, including the Android SDK:

The Verify Settings dialog

Once the download finishes, you can click the Finish button. You are now ready to create your Android project.

If you are using the digital version of this book, we advise you to type the code yourself or access the code from the book’s GitHub repository (a link is available in the next section). Doing so will help you avoid any potential errors related to the copying and pasting of code.

Download the example code files

You can download the example code files for this book from GitHub at https://github.com/PacktPublishing/How-to-Build-Android-Apps-with-Kotlin-Second-Edition. If there’s an update to the code, it will be updated in the GitHub repository.

We also have other code bundles from our rich catalog of books and videos available at https://github.com/PacktPublishing/. Check them out!

Download the color images

We also provide a PDF file that has color images of the screenshots and diagrams used in this book. You can download it here: https://packt.link/vnOCn.

Conventions used

There are a number of text conventions used throughout this book.

Code in text: Indicates code words in text, database table names, folder names, filenames, file extensions, pathnames, dummy URLs, user input, and Twitter handles. Here is an example: “You can find it in the main project window under MyApplication | app | src | main.”

A block of code is set as follows:

<resources>     <string name="app_name">My Application</string> </resources>

When we wish to draw your attention to a particular part of a code block, the relevant lines or items are set in bold:

<?xml version="1.0" encoding="utf-8"?> <resources>     <string name="app_name">My Application</string>    <string name="first_name_text">First name:</string>    <string name="last_name_text">Last name:</string> </resources>

Bold: Indicates a new term, an important word, or words that you see onscreen. For instance, words in menus or dialog boxes appear in bold. Here is an example: “Click Finish and your virtual device will be created.”

Tips or important notes

Appear like this.

Get in touch

Feedback from our readers is always welcome.

General feedback: If you have questions about any aspect of this book, email us at [email protected] and mention the book title in the subject of your message.

Errata: Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you have found a mistake in this book, we would be grateful if you would report this to us. Please visit www.packtpub.com/support/errata and fill in the form.

Piracy: If you come across any illegal copies of our works in any form on the internet, we would be grateful if you would provide us with the location address or website name. Please contact us at [email protected] with a link to the material.

If you are interested in becoming an author: If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, please visit authors.packtpub.com.

Share your thoughts

Once you’ve read How to Build Android Apps with Kotlin, Second Edition, we’d love to hear your thoughts! Please select https://www.amazon.in/review/create-review/error?asin=1837634939 for this book and share your feedback.

Your review is important to us and the tech community and will help us make sure we’re delivering excellent quality content.

Download a free PDF copy of this book

Thanks for purchasing this book!

Do you like to read on the go but are unable to carry your print books everywhere?

Is your eBook purchase not compatible with the device of your choice?

Don’t worry, now with every Packt book you get a DRM-free PDF version of that book at no cost.

Read anywhere, any place, on any device. Search, copy, and paste code from your favorite technical books directly into your application.

The perks don’t stop there, you can get exclusive access to discounts, newsletters, and great free content in your inbox daily

Follow these simple steps to get the benefits:

Scan the QR code or visit the link below

https://packt.link/free-ebook/9781837634934

Submit your proof of purchaseThat’s it! We’ll send your free PDF and other benefits to your email directly

Part 1: Android Foundation

This first part introduces the user to Android Studio, the integrated development environment (IDE) used for Android development, and then guides them through the building blocks of Android development. It’s a comprehensive overview of the Android framework, working through guided exercises that reinforce the learning objectives so this knowledge can be retained.

We will cover the following chapters in this section:

Chapter 1, Creating Your First AppChapter 2, Building User Screen FlowsChapter 3, Developing the UI with FragmentsChapter 4, Building App Navigation