Cover Page
Title Page
Copyright Page
Dedication Page
About the Author
About the Reviewers
Acknowledgements
Preface
Errata
Table of Contents
1. Creating Hello World Project
Structure
Objectives
Creating a project from Android Studio Template
Introducing templates
Understanding files in the created project
AndroidManifest.xml
Java/
res/
build.gradle
gradle-wrapper.properties
gradle.properties
proguard-rules.pro
settings.gradle
local.properties
Creating a custom launcher icon
Creating android virtual device (AVD)
Running the Hello World application
Important tools to develop, debug, and improve Android application
Gradle
Logcat
Writing Logs
Android Lint
How to use Lint from Android Studio
Using Lint from command/terminal
Layout inspector and layout validator
Using Layout Inspector
Introducing Layout Validator
Memory profiler
Database Inspector
Modifying table from Database Inspector
Run query from Database Inspector and DAO
Conclusion
Points to remember
Multiple Choice Questions
Answers
Questions
Key Terms
2. Basics of Android Components
Structure
Objectives
Basic components of Android
Activity
Service
Broadcast receiver
Static broadcast receivers
Dynamic broadcast receivers
Content provider
Content resolver
Introducing Fragment and View
View
Fragment
Ways to show Fragments
Lifecycle of an Activity
Lifecycle of a Fragment
Introducing dimensions and screen sizes
Dimensions
Handling of screen sizes
Understanding different types of Layouts
LinearLayout
RelativeLayout
TableLayout
FrameLayout
ConstraintLayout
Choosing a better Layout for a design
GPU overdraw
Perfetto/Systrace
Basics of material design
Conclusion
Points to remember
Multiple Choice Questions
Answers
Questions
Key Terms
3. Architecture Patterns
Structure
Objectives
Understanding the need for an architecture pattern
Understanding clean architecture
Understanding SOLID principle
Single responsibility principle
Open-closed principle
Liskov’s substitution principle
Interface segregation principle
Dependency inversion principle
Understanding MVP
Points to remember:
Understanding MVP with code
Advantages of using MVP
Disadvantages of MVP
Understanding MVVM
Understanding MVVM with code
Using databinding
Advantages of using MVVM
Disadvantages of MVVM
MVVM with UseCases
Conclusion
Points to remember
Multiple Choice Questions
Answers
Questions
Key Terms
4. Developing Chat Application
Structure
Objectives
Gathering functional requirement
Creating user flow diagrams
Introducing server
Choosing better backend technology
Introducing BaaS
Introducing Firebase and its services
Adding Firebase to application
Step 1: Creating a Firebase project
Step 2: Registering the Android application with the Firebase project
Step 3: Adding Firebase configuration file to the Android project
Step 4: Adding Firebase SDKs to the app
Identifying and introducing Firebase services
Introducing Firebase Authentication
Introducing Firebase real-time database
Introducing Cloud Storage
Introducing FirebaseUI
Introducing Android Jetpack
Introducing RecyclerView
Understanding important classes of RecyclerView
Understanding how RecyclerView works
Introducing TabLayout and ViewPager
Understanding project structure of Chat app
Writing code for the first screen
Developing login screen
Developing of chat home screen
Developing contacts screen
Developing chat screen
Developing profile screen
Using of notifications
Conclusion
Points to remember
Multiple Choice Questions
Answers
Questions
Key Terms
5. Publishing the Application
Structure
Objectives
Introducing build variants
Customizing build configurations
Build types
Product flavors
Build variants
Creating release Keystore
Introducing R8 and Proguard
Renaming identifiers
Enabling of R8
Adding custom rules
Creating a distributable file (release application)
Creating a Google Play Store developer profile
Pricing the application
Understanding pricing strategy
Free
Freemium
Paid
Subscription plan
Getting screenshots for the application
Preparing Android app release checklist
Uploading application to the Play Store
Settings for paid applications
Creating App at Google Play console
Setting up your app
Publishing/releasing the application
Watching the number of installs
Updating application at Play Store
Conclusion
Points to remember
Multiple Choice Questions
Answers
Questions
Key Terms
6. Developing Video Sharing Application
Structure
Objectives
Gathering functional requirement
Creating user flow diagram
Introducing material UI components
Introducing BottomNavigationView
Introducing data storage in Android
Introducing files
Storage Access Framework (SAF)
Preferences
Database
Room
Creating CRUD for video sharing application
Creating database
Introducing repository pattern
Introduction
Package structure for repository pattern
Implementing the repository pattern
Introducing ExoPlayer
Dependencies for ExoPlayer
Understanding project structure
Developing home screen
Implementing the likes feature on clips
Implementing the share feature for clips
Implementing the comment feature on clips
Developing add clips screen
Conclusion
Points to remember
Multiple Choice Questions
Answers
Questions
Key Terms
7. Introduction to Game Development
Introduction
Structure
Objectives
Introducing game engine
Unity
Unreal engine
Buildbox
Solar2D
GameMaker Studio 2
Introducing Unity
Installing Unity
Creating Hello Unity project
Introduction to Unity workspace
Adding game objects to the project
Adding texture to objects
Adding Cube to the Scene
Adding bricks image file
Adding material object
Applying bricks image to material object
Applying bricks material object to the Cube
Introducing important terms in Unity
Introducing C# script
Creating an Android build
Conclusion
Points to remember
Multiple Choice Questions
Answers
Questions
Key Terms
8. Development of the First Game
Structure
Objectives
Introducing the project requirement
Creating the project
Adding game objects
Adding floor
Adding target objects
Adding blocks
Adding diamond
Adding the ball
Adding the bouncing effect to the ball
Creating ball pin object
Adding C# script
Adding ball to the game dynamically
Creating Prefab for ball
Modifying script to use ball prefab
Adding support for multiple screens
Conclusion
Points to remember
Multiple Choice Questions
Answers
Questions
Key Terms
9. Adding Support for Big Screens
Structure
Objectives
Introducing resources in Android
Understanding resources
Introducing different qualifiers
Qualifiers for drawables
Qualifiers for layouts
Qualifiers for values
Working with resources
Choosing the optimized image resource type
Raster Image
PNG
WebP
Vector image
Vector drawables
Designing and developing an app for Tablets
Introducing tablet-specific dimensions and layout qualifiers
Optimizing layouts for tablets
Preparing checklist for Tablet app quality
Developing apps for wearables and TV
Creating project for wearables
Creating an AVD for wearables
Creating project for TV
Declaring Leanback support
Declaring touchscreen not required
Creating an AVD for TV application
Conclusion
Points to remember
Multiple Choice Questions
Answers
Questions
Key Terms
10. Introducing Important Tools/Libs for Android
Structure
Objectives
Introducing Jetpack compose
Introducing Row
Introducing Column
Introducing Box
Introducing ConstraintLayout
Introducing App Bundles
Understanding benefits of App bundles
Introducing SafetyNet
SafetyNet Attestation API
SafetyNet Safe Browsing API
SafetyNet reCAPTCHA API
SafetyNet Verify Apps API
Introducing Hilt
Exploring dependency injection
Understanding benefits of dependency injection solutions
Adding dependency for Hilt
Introducing annotations in Hilt
Writing test cases with JUnit/Robolectric
Introducing test cases
Writing good test cases
Writing local test cases using JUnit
Introducing Espresso
Introducing Robolectric
Best practices to follow
Third-party libraries you should know
Choosing the right Android library
List of a few libraries
Conclusion
Points to remember
Multiple Choice Questions
Answers
Questions
Key Terms
Index
As an ambitious Kotlin programmer or Android developer, are you frequently baffled by the options available to do a specific task? Or why a single solution is superior to the others for doing this Android task?
And most importantly, how can you do Kotlin programming employing this superior alternative?
The book ‘Building Android Projects with Kotlin’ teaches you all you need to know to create an incredible Android application. It describes the fundamentals of Android, its components, and their purposes. This book also emphasizes the significance of clean code, modular code writing, and architectural patterns. It teaches the reader how to analyze the performance of a layout, how to select the best picture format and the fundamentals of multiscreen application development.
This book discusses the creation of chat applications, video-sharing applications, and video games. The book will discuss best practices, libraries, functional requirement collecting, and feature development while constructing and explaining the functionalities of these applications. A range of topics like Android fundamentals, layout and image optimization, practical development tools, writing clean code, multiscreen app development, creating chat apps, video sharing applications, and games will be learned throughout this book.
Develop the ability to write well-structured programs and modular codes.
Workaround ExoPlayer, Notifications, RecyclerView, ToolBar, Unity, Jetpack components, etc.
Explore and use Memory analyzer, Database analyzer, Logcat, and Layout Inspector.
Examine the design patterns and performance of various layout designs and optimize accordingly.
Create different designs for mobile and tablets in the same application.
Aspiring Android developers, Kotlin programmers, and mobile developers would benefit from reading this book by improving their writing skills and fully utilizing the benefits of Kotlin in their application development. However, before reading this book, it would be beneficial to know Kotlin.