Book description
A simple approach to developing Android applications using Android Studio Arctic Fox Essentials and Kotlin
Key Features
- The latest Material Design components to build modern user interface designs
- Step-by-step instruction to building view model-based apps and modern user interface designs using the Jetpack architecture and the latest material design components
- Coding practice with the Kotlin programming language, including multi-threaded Kotlin code using Coroutines
Book Description
Android Studio is an Integrated Development Environment based on the JetBrains IntelliJ IDEA. It offers developers a unique platform to design and develop Android apps using various developer tools. Fully updated for Android Studio Arctic Fox, the goal of this book is to teach the skills necessary to develop Android-based applications using the Kotlin programming language.
This book begins with an outline of the steps necessary to set up an Android development and testing environment, followed by an introduction to programming in Kotlin which includes data types, control flow, functions, lambdas, and object-oriented programming. An overview of Android Studio covers areas such as tool windows, the code editor, and the layout editor tool. An introduction to the architecture of Android is followed by an in-depth look at the design of Android applications and user interfaces using the Android Studio environment.
Early chapters detail Android architecture components such as view models, lifecycle management, Room database access, the Database Inspector, app navigation, live data, and data binding. More advanced topics such as intents are also covered, as are touch screen handling, gesture recognition, and the recording and playback of audio. This edition of the book also covers printing, transitions, cloud-based file storage, and foldable device support.
The concepts of material design are also discussed in detail, including the use of floating action buttons, Snackbars, tabbed interfaces, card views, navigation drawers, and collapsing toolbars. Other key features of Android Studio Arctic Fox and Android taught in this book include the Layout Editor, the ConstraintLayout and ConstraintSet classes, MotionLayout Editor, view binding, constraint chains, barriers, and direct reply to notifications. Chapters also explore more advanced features of Android Studio such as app links, dynamic delivery, Gradle build configuration, and submitting apps to the Google Play developer console.
What you will learn
- Install and configure Android Studio on Windows, macOS, and Linux
- Design complex, responsive user interface layouts
- Understand Android architecture and app lifecycle
- Integrate SQLite databases and the Android Room persistence library
- Divide large apps into dynamic feature modules
- Monitor app performances using the Android studio profiler tool
Who this book is for
This book is for anyone who wants to learn Android application development, such as existing Android developers who want to upgrade their skills and step into the Kotlin ecosystem. To get the most from this book, you should have some previous programming experience. You will be required to download Android Studio and the Android SDK for this course, so make sure you have access to a Windows, Mac, or Linux system and some creative app ideas to develop.
Table of contents
- 1. Introduction
-
2. Setting up an Android Studio Development Environment
- 2.1 System Requirements
- 2.2 Downloading the Android Studio Package
- 2.3 Installing Android Studio
- 2.4 The Android Studio Setup Wizard
- 2.5 Installing Additional Android SDK Packages
- 2.6 Making the Android SDK Tools Command-line Accessible
- 2.7 Android Studio Memory Management
- 2.8 Updating Android Studio and the SDK
- 2.9 Summary
-
3. Creating an Example Android App in Android Studio
- 3.1 About the Project
- 3.2 Creating a New Android Project
- 3.3 Creating an Activity
- 3.4 Defining the Project and SDK Settings
- 3.5 Modifying the Example Application
- 3.6 Modifying the User Interface
- 3.7 Reviewing the Layout and Resource Files
- 3.8 Adding the Kotlin Extensions Plugin
- 3.9 Adding Interaction
- 3.10 Summary
-
4. Creating an Android Virtual Device (AVD) in Android Studio
- 4.1 About Android Virtual Devices
- 4.2 Creating a New AVD
- 4.3 Starting the Emulator
- 4.4 Running the Application in the AVD
- 4.5 Running on Multiple Devices
- 4.6 Stopping a Running Application
- 4.7 Supporting Dark Theme
- 4.8 Running the Emulator in a Tool Window
- 4.9 AVD Command-line Creation
- 4.10 Android Virtual Device Configuration Files
- 4.11 Moving and Renaming an Android Virtual Device
- 4.12 Summary
- 5. Using and Configuring the Android Studio AVD Emulator
- 6. A Tour of the Android Studio User Interface
- 7. Testing Android Studio Apps on a Physical Android Device
-
8. The Basics of the Android Studio Code Editor
- 8.1 The Android Studio Editor
- 8.2 Splitting the Editor Window
- 8.3 Code Completion
- 8.4 Statement Completion
- 8.5 Parameter Information
- 8.6 Parameter Name Hints
- 8.7 Code Generation
- 8.8 Code Folding
- 8.9 Quick Documentation Lookup
- 8.10 Code Reformatting
- 8.11 Finding Sample Code
- 8.12 Live Templates
- 8.13 Summary
- 9. An Overview of the Android Architecture
- 10. The Anatomy of an Android Application
- 11. An Introduction to Kotlin
-
12. Kotlin Data Types,Variables and Nullability
- 12.1 Kotlin Data Types
- 12.2 Mutable Variables
- 12.3 Immutable Variables
- 12.4 Declaring Mutable and Immutable Variables
- 12.5 Data Types are Objects
- 12.6 Type Annotations and Type Inference
- 12.7 Nullable Type
- 12.8 The Safe Call Operator
- 12.9 Not-Null Assertion
- 12.10 Nullable Types and the let Function
- 12.11 Late Initialization (lateinit)
- 12.12 The Elvis Operator
- 12.13 Type Casting and Type Checking
- 12.14 Summary
- 13. Kotlin Operators and Expressions
- 14. Kotlin Control flow
-
15. An Overview of Kotlin Functions and Lambdas
- 15.1 What is a Function?
- 15.2 How to Declare a Kotlin Function
- 15.3 Calling a Kotlin Function
- 15.4 Single Expression Functions
- 15.5 Local Functions
- 15.6 Handling Return Values
- 15.7 Declaring Default Function Parameters
- 15.8 Variable Number of Function Parameters
- 15.9 Lambda Expressions
- 15.10 Higher-order Functions
- 15.11 Summary
-
16. The Basics of Object Oriented Programming in Kotlin
- 16.1 What is an Object?
- 16.2 What is a Class?
- 16.3 Declaring a Kotlin Class
- 16.4 Adding Properties to a Class
- 16.5 Defining Methods
- 16.6 Declaring and Initializing a Class Instance
- 16.7 Primary and Secondary Constructors
- 16.8 Initializer Blocks
- 16.9 Calling Methods and Accessing Properties
- 16.10 Custom Accessors
- 16.11 Nested and Inner Classes
- 16.12 Companion Objects
- 16.13 Summary
- 17. An Introduction to Kotlin Inheritance and Subclassing
- 18. An Overview of Android View Binding
- 19. Understanding Android Application and Activity Lifecycles
- 20. Handling Android Activity State Changes
- 21. Android Activity State Changes by Example
- 22. Saving and Restoring the State of an Android Activity
- 23. Understanding Android Views, View Groups and Layouts
-
24. A Guide to the Android Studio Layout Editor Tool
- 24.1 Basic vs. Empty Activity Templates
- 24.2 The Android Studio Layout Editor
- 24.3 Design Mode
- 24.4 The Palette
- 24.5 Design Mode and Layout Views
- 24.6 Night Mode
- 24.7 Code Mode
- 24.8 Split Mode
- 24.9 Setting Attributes
- 24.10 Transforms
- 24.11 Tools Visibility Toggles
- 24.12 Converting Views
- 24.13 Displaying Sample Data
- 24.14 Creating a Custom Device Definition
- 24.15 Changing the Current Device
- 24.16 Layout Validation (Multi Preview)
- 24.17 Summary
- 25. A Guide to the Android ConstraintLayout
-
26. A Guide to Using ConstraintLayout in Android Studio
- 26.1 Design and Layout Views
- 26.2 Autoconnect Mode
- 26.3 Inference Mode
- 26.4 Manipulating Constraints Manually
- 26.5 Adding Constraints in the Inspector
- 26.6 Viewing Constraints in the Attributes Window
- 26.7 Deleting Constraints
- 26.8 Adjusting Constraint Bias
- 26.9 Understanding ConstraintLayout Margins
- 26.10 The Importance of Opposing Constraints and Bias
- 26.11 Configuring Widget Dimensions
- 26.12 Design Time Tools Positioning
- 26.13 Adding Guidelines
- 26.14 Adding Barriers
- 26.15 Adding a Group
- 26.16 Working with the Flow Helper
- 26.17 Widget Group Alignment and Distribution
- 26.18 Converting other Layouts to ConstraintLayout
- 26.19 Summary
- 27. Working with ConstraintLayout Chains and Ratios in Android Studio
- 28. An Android Studio Layout Editor ConstraintLayout Tutorial
- 29. Manual XML Layout Design in Android Studio
-
30. Managing Constraints using Constraint Sets
- 30.1 Kotlin Code vs. XML Layout Files
- 30.2 Creating Views
- 30.3 View Attributes
-
30.4 Constraint Sets
- 30.4.1 Establishing Connections
- 30.4.2 Applying Constraints to a Layout
- 30.4.3 Parent Constraint Connections
- 30.4.4 Sizing Constraints
- 30.4.5 Constraint Bias
- 30.4.6 Alignment Constraints
- 30.4.7 Copying and Applying Constraint Sets
- 30.4.8 ConstraintLayout Chains
- 30.4.9 Guidelines
- 30.4.10 Removing Constraints
- 30.4.11 Scaling
- 30.4.12 Rotation
- 30.5 Summary
- 31. An Android ConstraintSet Tutorial
- 32. A Guide to using Apply Changes in Android Studio
- 33. An Overview and Example of Android Event Handling
- 34. Android Touch and Multi-touch Event Handling
- 35. Detecting Common Gestures Using the Android Gesture Detector Class
-
36. Implementing Custom Gesture and Pinch Recognition on Android
- 36.1 The Android Gesture Builder Application
- 36.2 The GestureOverlayView Class
- 36.3 Detecting Gestures
- 36.4 Identifying Specific Gestures
- 36.5 Installing and Running the Gesture Builder Application
- 36.6 Creating a Gestures File
- 36.7 Creating the Example Project
- 36.8 Extracting the Gestures File from the SD Card
- 36.9 Adding the Gestures File to the Project
- 36.10 Designing the User Interface
- 36.11 Loading the Gestures File
- 36.12 Registering the Event Listener
- 36.13 Implementing the onGesturePerformed Method
- 36.14 Testing the Application
- 36.15 Configuring the GestureOverlayView
- 36.16 Intercepting Gestures
- 36.17 Detecting Pinch Gestures
- 36.18 A Pinch Gesture Example Project
- 36.19 Summary
- 37. An Introduction to Android Fragments
-
38. Using Fragments in Android Studio - An Example
- 38.1 About the Example Fragment Application
- 38.2 Creating the Example Project
- 38.3 Creating the First Fragment Layout
- 38.4 Migrating a Fragment to View Binding
- 38.5 Adding the Second Fragment
- 38.6 Adding the Fragments to the Activity
- 38.7 Making the Toolbar Fragment Talk to the Activity
- 38.8 Making the Activity Talk to the Text Fragment
- 38.9 Testing the Application
- 38.10 Summary
- 39. Modern Android App Architecture with Jetpack
-
40. An Android Jetpack ViewModel Tutorial
- 40.1 About the Project
- 40.2 Creating the ViewModel Example Project
- 40.3 Reviewing the Project
- 40.4 Designing the Fragment Layout
- 40.5 Implementing the View Model
- 40.6 Associating the Fragment with the View Model
- 40.7 Modifying the Fragment
- 40.8 Accessing the ViewModel Data
- 40.9 Testing the Project
- 40.10 Summary
- 41. An Android Jetpack LiveData Tutorial
- 42. An Overview of Android Jetpack Data Binding
-
43. An Android Jetpack Data Binding Tutorial
- 43.1 Removing the Redundant Code
- 43.2 Enabling Data Binding
- 43.3 Adding the Layout Element
- 43.4 Adding the Data Element to Layout File
- 43.5 Working with the Binding Class
- 43.6 Assigning the ViewModel Instance to the Data Binding Variable
- 43.7 Adding Binding Expressions
- 43.8 Adding the Conversion Method
- 43.9 Adding a Listener Binding
- 43.10 Testing the App
- 43.11 Summary
- 44. An Android ViewModel Saved State Tutorial
- 45. Working with Android Lifecycle-Aware Components
- 46. An Android Jetpack Lifecycle Awareness Tutorial
- 47. An Overview of the Navigation Architecture Component
-
48. An Android Jetpack Navigation Component Tutorial
- 48.1 Creating the NavigationDemo Project
- 48.2 Adding Navigation to the Build Configuration
- 48.3 Creating the Navigation Graph Resource File
- 48.4 Declaring a Navigation Host
- 48.5 Adding Navigation Destinations
- 48.6 Designing the Destination Fragment Layouts
- 48.7 Adding an Action to the Navigation Graph
- 48.8 Implement the OnFragmentInteractionListener
- 48.9 Adding View Binding Support to the Destination Fragments
- 48.10 Triggering the Action
- 48.11 Passing Data Using Safeargs
- 48.12 Summary
-
49. An Introduction to MotionLayout
- 49.1 An Overview of MotionLayout
- 49.2 MotionLayout
- 49.3 MotionScene
- 49.4 Configuring ConstraintSets
- 49.5 Custom Attributes
- 49.6 Triggering an Animation
- 49.7 Arc Motion
- 49.8 Keyframes
- 49.9 Time Linearity
- 49.10 KeyTrigger
- 49.11 Cycle and Time Cycle Keyframes
- 49.12 Starting an Animation from Code
- 49.13 Summary
-
50. An Android MotionLayout Editor Tutorial
- 50.1 Creating the MotionLayoutDemo Project
- 50.2 ConstraintLayout to MotionLayout Conversion
- 50.3 Configuring Start and End Constraints
- 50.4 Previewing the MotionLayout Animation
- 50.5 Adding an OnClick Gesture
- 50.6 Adding an Attribute Keyframe to the Transition
- 50.7 Adding a CustomAttribute to a Transition
- 50.8 Adding Position Keyframes
- 50.9 Summary
- 51. A MotionLayout KeyCycle Tutorial
- 52. Working with the Floating Action Button and Snackbar
-
53. Creating a Tabbed Interface using the TabLayout Component
- 53.1 An Introduction to the ViewPager2
- 53.2 An Overview of the TabLayout Component
- 53.3 Creating the TabLayoutDemo Project
- 53.4 Creating the First Fragment
- 53.5 Duplicating the Fragments
- 53.6 Adding the TabLayout and ViewPager2
- 53.7 Creating the Pager Adapter
- 53.8 Performing the Initialization Tasks
- 53.9 Testing the Application
- 53.10 Customizing the TabLayout
- 53.11 Summary
- 54. Working with the RecyclerView and CardView Widgets
-
55. An Android RecyclerView and CardView Tutorial
- 55.1 Creating the CardDemo Project
- 55.2 Modifying the Basic Activity Project
- 55.3 Designing the CardView Layout
- 55.4 Adding the RecyclerView
- 55.5 Adding the Image Files
- 55.6 Creating the RecyclerView Adapter
- 55.7 Initializing the RecyclerView Component
- 55.8 Testing the Application
- 55.9 Responding to Card Selections
- 55.10 Summary
- 56. A Layout Editor Sample Data Tutorial
- 57. Working with the AppBar and Collapsing Toolbar Layouts
-
58. An Android Studio Primary/Detail Flow Tutorial
- 58.1 The Primary/Detail Flow
- 58.2 Creating a Primary/Detail Flow Activity
- 58.3 Modifying the Primary/Detail Flow Template
- 58.4 Changing the Content Model
- 58.5 Changing the Detail Pane
- 58.6 Modifying the WebsiteDetailFragment Class
- 58.7 Modifying the WebsiteListFragment Class
- 58.8 Adding Manifest Permissions
- 58.9 Running the Application
- 58.10 Summary
- 59. An Overview of Android Intents
-
60. Android Explicit Intents – A Worked Example
- 60.1 Creating the Explicit Intent Example Application
- 60.2 Designing the User Interface Layout for MainActivity
- 60.3 Creating the Second Activity Class
- 60.4 Designing the User Interface Layout for SecondActivity
- 60.5 Reviewing the Application Manifest File
- 60.6 Creating the Intent
- 60.7 Extracting Intent Data
- 60.8 Launching SecondActivity as a Sub-Activity
- 60.9 Returning Data from a Sub-Activity
- 60.10 Testing the Application
- 60.11 Summary
-
61. Android Implicit Intents – A Worked Example
- 61.1 Creating the Android Studio Implicit Intent Example Project
- 61.2 Designing the User Interface
- 61.3 Creating the Implicit Intent
- 61.4 Adding a Second Matching Activity
- 61.5 Adding the Web View to the UI
- 61.6 Obtaining the Intent URL
- 61.7 Modifying the MyWebView Project Manifest File
- 61.8 Installing the MyWebView Package on a Device
- 61.9 Testing the Application
- 61.10 Summary
-
62. Android Broadcast Intents and Broadcast Receivers
- 62.1 An Overview of Broadcast Intents
- 62.2 An Overview of Broadcast Receivers
- 62.3 Obtaining Results from a Broadcast
- 62.4 Sticky Broadcast Intents
- 62.5 The Broadcast Intent Example
- 62.6 Creating the Example Application
- 62.7 Creating and Sending the Broadcast Intent
- 62.8 Creating the Broadcast Receiver
- 62.9 Registering the Broadcast Receiver
- 62.10 Testing the Broadcast Example
- 62.11 Listening for System Broadcasts
- 62.12 Summary
-
63. An Introduction to Kotlin Coroutines
- 63.1 What are Coroutines?
- 63.2 Threads vs Coroutines
- 63.3 Coroutine Scope
- 63.4 Suspend Functions
- 63.5 Coroutine Dispatchers
- 63.6 Coroutine Builders
- 63.7 Jobs
- 63.8 Coroutines – Suspending and Resuming
- 63.9 Returning Results from a Coroutine
- 63.10 Using withContext
- 63.11 Coroutine Channel Communication
- 63.12 Summary
- 64. An Android Kotlin Coroutines Tutorial
- 65. An Overview of Android Services
-
66. Implementing an Android Started Service – A Worked Example
- 66.1 Creating the Example Project
- 66.2 Designing the User Interface
- 66.3 Creating the Service Class
- 66.4 Adding the Service to the Manifest File
- 66.5 Starting the Service
- 66.6 Testing the IntentService Example
- 66.7 Using the Service Class
- 66.8 Creating the New Service
- 66.9 Launching the Service
- 66.10 Running the Application
- 66.11 Using a Coroutine for the Service Task
- 66.12 Summary
- 67. Android Local Bound Services – A Worked Example
-
68. Android Remote Bound Services – A Worked Example
- 68.1 Client to Remote Service Communication
- 68.2 Creating the Example Application
- 68.3 Designing the User Interface
- 68.4 Implementing the Remote Bound Service
- 68.5 Configuring a Remote Service in the Manifest File
- 68.6 Launching and Binding to the Remote Service
- 68.7 Sending a Message to the Remote Service
- 68.8 Summary
-
69. An Android Notifications Tutorial
- 69.1 An Overview of Notifications
- 69.2 Creating the NotifyDemo Project
- 69.3 Designing the User Interface
- 69.4 Creating the Second Activity
- 69.5 Creating a Notification Channel
- 69.6 Creating and Issuing a Notification
- 69.7 Launching an Activity from a Notification
- 69.8 Adding Actions to a Notification
- 69.9 Bundled Notifications
- 69.10 Summary
- 70. An Android Direct Reply Notification Tutorial
-
71. Foldable Devices and Multi-Window Support
- 71.1 Foldables and Multi-Window Support
- 71.2 Using a Foldable Emulator
- 71.3 Entering Multi-Window Mode
- 71.4 Enabling and using Freeform Support
- 71.5 Checking for Freeform Support
- 71.6 Enabling Multi-Window Support in an App
- 71.7 Specifying Multi-Window Attributes
- 71.8 Detecting Multi-Window Mode in an Activity
- 71.9 Receiving Multi-Window Notifications
- 71.10 Launching an Activity in Multi-Window Mode
- 71.11 Configuring Freeform Activity Size and Position
- 71.12 Summary
-
72. An Overview of Android SQLite Databases
- 72.1 Understanding Database Tables
- 72.2 Introducing Database Schema
- 72.3 Columns and Data Types
- 72.4 Database Rows
- 72.5 Introducing Primary Keys
- 72.6 What is SQLite?
- 72.7 Structured Query Language (SQL)
- 72.8 Trying SQLite on an Android Virtual Device (AVD)
- 72.9 The Android Room Persistence Library
- 72.10 Summary
- 73. The Android Room Persistence Library
-
74. An Android TableLayout and TableRow Tutorial
- 74.1 The TableLayout and TableRow Layout Views
- 74.2 Creating the Room Database Project
- 74.3 Converting to a LinearLayout
- 74.4 Adding the TableLayout to the User Interface
- 74.5 Configuring the TableRows
- 74.6 Adding the Button Bar to the Layout
- 74.7 Adding the RecyclerView
- 74.8 Adjusting the Layout Margins
- 74.9 Summary
-
75. An Android Room Database and Repository Tutorial
- 75.1 About the RoomDemo Project
- 75.2 Modifying the Build Configuration
- 75.3 Building the Entity
- 75.4 Creating the Data Access Object
- 75.5 Adding the Room Database
- 75.6 Adding the Repository
- 75.7 Modifying the ViewModel
- 75.8 Creating the Product Item Layout
- 75.9 Adding the RecyclerView Adapter
- 75.10 Preparing the Main Fragment
- 75.11 Adding the Button Listeners
- 75.12 Adding LiveData Observers
- 75.13 Initializing the RecyclerView
- 75.14 Testing the RoomDemo App
- 75.15 Using the Database Inspector
- 75.16 Summary
- 76. Accessing Cloud Storage using the Android Storage Access Framework
-
77. An Android Storage Access Framework Example
- 77.1 About the Storage Access Framework Example
- 77.2 Creating the Storage Access Framework Example
- 77.3 Designing the User Interface
- 77.4 Adding the Activity Launchers
- 77.5 Creating a New Storage File
- 77.6 Saving to a Storage File
- 77.7 Opening and Reading a Storage File
- 77.8 Testing the Storage Access Application
- 77.9 Summary
-
78. Video Playback on Android using the VideoView and MediaController Classes
- 78.1 Introducing the Android VideoView Class
- 78.2 Introducing the Android MediaController Class
- 78.3 Creating the Video Playback Example
- 78.4 Designing the VideoPlayer Layout
- 78.5 Downloading the Video File
- 78.6 Configuring the VideoView
- 78.7 Adding the MediaController to the Video View
- 78.8 Setting up the onPreparedListener
- 78.9 Summary
- 79. Android Picture-in-Picture Mode
- 80. An Android Picture-in-Picture Tutorial
- 81. Making Runtime Permission Requests in Android
-
82. Android Audio Recording and Playback using MediaPlayer and MediaRecorder
- 82.1 Playing Audio
- 82.2 Recording Audio and Video using the MediaRecorder Class
- 82.3 About the Example Project
- 82.4 Creating the AudioApp Project
- 82.5 Designing the User Interface
- 82.6 Checking for Microphone Availability
- 82.7 Initializing the Activity
- 82.8 Implementing the recordAudio() Method
- 82.9 Implementing the stopAudio() Method
- 82.10 Implementing the playAudio() method
- 82.11 Configuring and Requesting Permissions
- 82.12 Testing the Application
- 82.13 Summary
- 83. Printing with the Android Printing Framework
-
84. An Android HTML and Web Content Printing Example
- 84.1 Creating the HTML Printing Example Application
- 84.2 Printing Dynamic HTML Content
- 84.3 Creating the Web Page Printing Example
- 84.4 Removing the Floating Action Button
- 84.5 Removing Navigation Features
- 84.6 Designing the User Interface Layout
- 84.7 Accessing the WebView from the Main Activity
- 84.8 Loading the Web Page into the WebView
- 84.9 Adding the Print Menu Option
- 84.10 Summary
-
85. A Guide to Android Custom Document Printing
- 85.1 An Overview of Android Custom Document Printing
- 85.2 Preparing the Custom Document Printing Project
- 85.3 Creating the Custom Print Adapter
- 85.4 Implementing the onLayout() Callback Method
- 85.5 Implementing the onWrite() Callback Method
- 85.6 Checking a Page is in Range
- 85.7 Drawing the Content on the Page Canvas
- 85.8 Starting the Print Job
- 85.9 Testing the Application
- 85.10 Summary
- 86. An Introduction to Android App Links
- 87. An Android Studio App Links Tutorial
-
88. An Android Biometric Authentication Tutorial
- 88.1 An Overview of Biometric Authentication
- 88.2 Creating the Biometric Authentication Project
- 88.3 Configuring Device Fingerprint Authentication
- 88.4 Adding the Biometric Permission to the Manifest File
- 88.5 Designing the User Interface
- 88.6 Adding a Toast Convenience Method
- 88.7 Checking the Security Settings
- 88.8 Configuring the Authentication Callbacks
- 88.9 Adding the CancellationSignal
- 88.10 Starting the Biometric Prompt
- 88.11 Testing the Project
- 88.12 Summary
-
89. Creating, Testing and Uploading an Android App Bundle
- 89.1 The Release Preparation Process
- 89.2 Android App Bundles
- 89.3 Register for a Google Play Developer Console Account
- 89.4 Configuring the App in the Console
- 89.5 Enabling Google Play App Signing
- 89.6 Creating a Keystore File
- 89.7 Creating the Android App Bundle
- 89.8 Generating Test APK Files
- 89.9 Uploading the App Bundle to the Google Play Developer Console
- 89.10 Exploring the App Bundle
- 89.11 Managing Testers
- 89.12 Rolling the App Out for Testing
- 89.13 Uploading New App Bundle Revisions
- 89.14 Analyzing the App Bundle File
- 89.15 Summary
- 90. An Overview of Android Dynamic Feature Modules
-
91. An Android Studio Dynamic Feature Tutorial
- 91.1 Creating the DynamicFeature Project
- 91.2 Adding Dynamic Feature Support to the Project
- 91.3 Designing the Base Activity User Interface
- 91.4 Adding the Dynamic Feature Module
- 91.5 Reviewing the Dynamic Feature Module
- 91.6 Adding the Dynamic Feature Activity
- 91.7 Implementing the launchIntent() Method
- 91.8 Uploading the App Bundle for Testing
- 91.9 Implementing the installFeature() Method
- 91.10 Adding the Update Listener
- 91.11 Using Deferred Installation
- 91.12 Removing a Dynamic Module
- 91.13 Summary
- 92. An Overview of Gradle in Android Studio
- Index
Product information
- Title: Android Studio Arctic Fox Essentials - Kotlin Edition
- Author(s):
- Release date: October 2021
- Publisher(s): Packt Publishing
- ISBN: 9781803247458
You might also like
book
Android Studio 4.2 Development Essentials - Kotlin Edition
A hands-on guide to developing Android applications using Android Studio 4.2 and Kotlin Key Features Design …
book
Android Studio 4.2 Development Essentials - Java Edition
Developing Android applications using Android Studio 4.2, Java, and Android Jetpack Key Features Design complex and …
book
Learn Android Studio 3 with Kotlin: Efficient Android App Development
Build Android apps using the popular and efficient Android Studio 3 suite of tools, an integrated …
book
Beginning Android Programming with Android Studio, Fourth Edition
A hands-on introduction to the latest release of the Android OS and the easiest Android tools …