< browse all profiles
Expertise

Android

Description

Android developer can develop great applications for devices powered by the Android operating system. Android ecosystem is quite big, so pay attention to the application’s compatibility with multiple versions of Android and device types. If you wanna be a great specialist then always stay up to date about best practices and approaches.

Skills

Design for mobile

Expand/colapse
Developing for mobile requires specific design considerations.

Human interface Guidelines

The Human Interface Guidelines (“HIG”) offers in-depth information and UI resources for mobile platforms. The HIG is full of information that can help to create more compelling, intuitive, and beautiful experiences and design better apps.

Threading operations

Making adept use of threads can help to boost application performance. When an application is launched, it creates the first thread of execution, known as the “main” thread. The main thread is responsible for dispatching events to the appropriate user interface widgets as well as communicating with components from the system UI toolkit.

Saving and restoring state

If an app is stopped on a device, it can save its state and then restore the state when the app is launched again by the user.

Localization

Localisation is the process of customising an app to work in other languages other than the default.

Data protection

Data protection is a feature that is used to secure an app’s files and prevent unauthorised access to them.

UI automation

UI automation testing is a technique where testing processes are performed using an automation tool.

Human interface Guidelines
The Human Interface Guidelines (“HIG”) offers in-depth information and UI resources for mobile platforms. The HIG is full of information that can help to create more compelling, intuitive, and beautiful experiences and design better apps.
Threading operations
Making adept use of threads can help to boost application performance. When an application is launched, it creates the first thread of execution, known as the “main” thread. The main thread is responsible for dispatching events to the appropriate user interface widgets as well as communicating with components from the system UI toolkit.
Saving and restoring state
If an app is stopped on a device, it can save its state and then restore the state when the app is launched again by the user.
Localization
Localization is the process of customizing an app to work in other languages other than the default.
Data protection
Data protection is a feature that is used to secure an app’s files and prevent unauthorized access to them.

Deployment

Expand/colapse
Deployment is an important aspect of the software development process. Deployment is the mechanism through which applications, modules, updates, and patches are delivered from developers to users.

Device testing

Device testing is the process by which a device is tested (hardware or software) for its quality to see how well it meets the requirements for which it has been developed.

Testflight / Crashlytics / Adhoc

Mobile app distribution methods

Code signing

Code signing of an app assures users that it is from a known source and the app hasn’t been modified since it was last signed.

Developer portal (AppStore / Google Play)

A developer portal (or partner portal) is where developers can sign up, receive support and manage the apps submitted to the store.

Device testing
Device testing is the process by which a device is tested (hardware or software) for its quality to see how well it meets the requirements for which it has been developed.
Testflight / Crashlytics / Adhoc
Mobile app distribution methods.
Code signing
Code signing of an app assures users that it is from a known source and the app hasn’t been modified since it was last signed.
Developer portal (AppStore / Google Play)
A developer portal (or partner portal) is where developers can sign up, receive support and manage the apps submitted to the store.

Algorithms

Expand/colapse
A programming algorithm is a procedure or formula used for solving a problem.

Big O notation

Big O notation is a mathematical notation that describes the limiting behavior of a function when the argument tends towards a particular value or infinity.

Sort algorithms

Sorting is the most common and majorly used algorithms in mobile app development. The basic idea is to arrange the data or items in a definite pattern.

Search algorithms

Search algorithm is any algorithm which solves the search problem, namely, to retrieve information stored within some data structure.

Cryptography (RSA, AES)

The basic idea of encryption is to convert data into a form in which the original meaning is masked, and only those who are properly authorized can decipher it. The AES algorithm successively applies a series of mathematical transformations to each 128-bit block of data. RSA is an asymmetric algorithm that uses a publicly known key for encryption, but requires a different key, known only to the intended recipient, for decryption.

Big O notation
Big O notation is a mathematical notation that describes the limiting behavior of a function when the argument tends towards a particular value or infinity.
Sort algorithms
Sorting is the most common and majorly used algorithms in mobile app development. The basic idea is to arrange the data or items in a definite pattern.
Search algorithms
Search algorithm is any algorithm which solves the search problem, namely, to retrieve information stored within some data structure.
Cryptography (RSA, AES)
The basic idea of encryption is to convert data into a form in which the original meaning is masked, and only those who are properly authorized can decipher it. The AES algorithm successively applies a series of mathematical transformations to each 128-bit block of data. RSA is an asymmetric algorithm that uses a publicly known key for encryption, but requires a different key, known only to the intended recipient, for decryption.

Patterns

Expand/colapse
In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design.

Creational (abstract factory / factory / Builder / Singleton / Lazy / etc.)

Creational design patterns are concerned with the way of creating objects. These design patterns are used when a decision must be made at the time of instantiation of a class (i.e. creating an object of a class).

Structural (adapter / wrapper / Bridge / Decorator / Proxy / Fascade / etc.)

Structural design patterns focus on, how the classes inherit from each other and how they are composed of other classes. Structural patterns use inheritance to compose interface or implementations.

Behavioral (command / iterator / observer / template / etc.)

Behavioral design patterns have focused on the assignment of responsibilities between objects, or, encapsulating behavior in an object and delegating requests to it.

Architectural (DI / MVC / MVP / MVVM / Clean architecture)

Architecture design patterns have focused on the architecture of the application and how responsibilities between different modules/components can be defined based on requirements.

Creational (abstract factory / factory / Builder / Singleton / Lazy / etc.)
Creational design patterns are concerned with the way of creating objects. These design patterns are used when a decision must be made at the time of instantiation of a class (i.e. creating an object of a class).
Structural (adapter / wrapper / Bridge / Decorator / Proxy / Fascade / etc.)
Structural design patterns focus on, how the classes inherit from each other and how they are composed of other classes. Structural patterns use inheritance to compose interface or implementations.
Behavioral (command / iterator / observer / template / etc.)
Behavioral design patterns have focused on the assignment of responsibilities between objects, or, encapsulating behavior in an object and delegating requests to it.
Architectural (DI / MVC / MVP / MVVM / Clean architecture)
Architecture design patterns have focused on the architecture of the application and how responsibilities between different modules/components can be defined based on requirements.

Agile Methodologies / practices

Expand/colapse
Development methodologies and practices are about how to build your software.

Scrum

Scrum is a framework utilizing an agile mindset for developing, delivering, and sustaining complex products, with an initial emphasis on software development, although it has been used in other fields including research, sales, marketing and advanced technologies.

Kanban

Kanban is a workflow management method for defining, managing and improving services that deliver knowledge work. It aims to help visualize work, maximize efficiency, and improve continuously.

Iterative

The iterative model is a particular implementation of a software development life cycle (SDLC) that focuses on an initial, simplified implementation, which then progressively gains more complexity and a broader feature set until the final system is complete.

CI / CD

Continuous integration (CI) and continuous delivery (CD) is a set of operating principles, and collection of practices that enable mobile development teams to deliver code changes more frequently, reliably and automatically.

TDD

Test-driven development is a programming and testing practice that encourages developers to write better and more precise tests and code. For this, they write unit tests before the code of the respective functionality to ensure bug-free software and applications.

Code review

Code Review is a process that involves other software developers to review a particular engineer’s code in an effort to check its compliance with standards, identify errors, reveal discrepancies in the style of coding, and test the written code suitability for an objective set.

Scrum
Scrum is a framework utilizing an agile mindset for developing, delivering, and sustaining complex products, with an initial emphasis on software development, although it has been used in other fields including research, sales, marketing and advanced technologies.
Kanban
Kanban is a workflow management method for defining, managing, and improving services that deliver knowledge work. It aims to help visualize work, maximize efficiency, and improve continuously.
Iterative
The iterative model is a particular implementation of a software development life cycle (SDLC) that focuses on an initial, simplified implementation, which then progressively gains more complexity and a broader feature set until the final system is complete.
CI / CD
Continuous integration (CI) and continuous delivery (CD) is a set of operating principles, and collection of practices that enable mobile development teams to deliver code changes more frequently, reliably and automatically.
TDD
Test-driven development is a programming and testing practice that encourages developers to write better and more precise tests and code. For this, they write unit tests before the code of the respective functionality to ensure bug-free software and applications.

OOD principles

Expand/colapse
Object-oriented design is the process of planning a system of interacting objects for the purpose of solving a software problem.

SOLID

SOLID is an acronym for five design principles in Object-Oriented software development intended to make software designs more understandable, flexible and maintainable.

Inversion of control (IoC)

Inversion of Control (IoC) is a design principle and is used to invert different kinds of controls in object-oriented design to achieve loose coupling.

SOLID
SOLID is an acronym for five design principles in Object-Oriented software development intended to make software designs more understandable, flexible and maintainable.
Inversion of control (IoC)
Inversion of Control (IoC) is a design principle and is used to invert different kinds of controls in object-oriented design to achieve loose coupling.

Java

Expand/colapse
Java is a great language to experience the full joys of Android App Development.

Data Types

Data types specify the different sizes and values that can be stored in the variable.

Class Loading, Linking, Initialization

The loading, linking, and initialization are the initial processes that Java Virtual Machine (JVM) commences as soon as a byte code, called the class file, is loaded into JVM for execution.

Class Instance Finalization

The class Object has a protected method called finalize; this method can be overridden by other classes. The particular definition of finalize that can be invoked for an object is called the finalizer of that object.

Exceptions

Exceptions are events that occur during the execution of programs that disrupt the normal flow of instructions.

I/O, Serialization

Java provides a mechanism, called object serialization where an object can be represented as a sequence of bytes that includes the object's data as well as information about the object's type and the types of data stored in the object. Classes ObjectInputStream and ObjectOutputStream are high-level streams that contain the methods for serializing and deserializing an object.

Generics

Generics are a facility of generic programming that were added to the Java programming language in 2004 within version J2SE 5.0.

Garbage Collection

Java garbage collection is the process by which Java programs perform automatic memory management.

Annotations

Java annotations are used to provide meta data for the Java code.

Lambda formalism

Lambda calculus is a formal system in mathematical logic for expressing computation based on function abstraction and application using variable binding and substitution.

Data Types
Data types specify the different sizes and values that can be stored in the variable.
Class Loading, Linking, Initialization
The loading, linking, and initialization are the initial processes that Java Virtual Machine (JVM) commences as soon as a byte code, called the class file, is loaded into JVM for execution.
Class Instance Finalization
The class Object has a protected method called finalize; this method can be overridden by other classes. The particular definition of finalize that can be invoked for an object is called the finalizer of that object.
Exceptions
Exceptions are events that occur during the execution of programs that disrupt the normal flow of instructions.
I/O, Serialization
Java provides a mechanism, called object serialization where an object can be represented as a sequence of bytes that includes the object's data as well as information about the object's type and the types of data stored in the object. Classes ObjectInputStream and ObjectOutputStream are high-level streams that contain the methods for serializing and deserializing an object.

Kotlin (Mobile Android profile)

Expand/colapse
Back in 2017, Google acknowledged Kotlin by making it the second official language of Android app development.

Nullable vs Not Nullable

Kotlin types system differentiates between references which can hold null (nullable reference) and which cannot hold null (non null reference).

Extension Functions

Kotlin provides an ability to extend a class with new functionality without having to inherit from the class or use design patterns such as Decorator.

Lambdas in Kotlin

Lambdas Expressions are essentially anonymous functions that can be treated as values

Synchronization

Java has the synchronized keyword, which can be applied to methods to ensure that only one thread at a time can access them.

Kotlin Extension Library

This library serves as a collection of various Kotlin extensions that simplifies developers life.

Android KTX library

Android KTX is a set of Kotlin extensions that are included with Android Jetpack and other Android libraries.

Data class

Data Classes represent simple classes used as data containers and do not encapsulate any additional logic.

Access modificators

Visibility modifiers are used to determine what other elements of code have access to the element being modified.

Anonymous objects

Anonymous objects can be used to define an implementation of an interface or an abstract class without creating a reusable implementation.

Nullable vs Not Nullable
Kotlin types system differentiates between references which can hold null (nullable reference) and which cannot hold null (non null reference).
Extension Functions
Kotlin provides an ability to extend a class with new functionality without having to inherit from the class or use design patterns such as Decorator.
Lambdas in Kotlin
Lambdas Expressions are essentially anonymous functions that can be treated as values.
Synchronization
Java has the synchronized keyword, which can be applied to methods to ensure that only one thread at a time can access them.
Kotlin Extension Library
This library serves as a collection of various Kotlin extensions that simplify developer's life.

Core Android

Expand/colapse
Android provides a number of standard UI controls that enable a rich user experience. Designers and developers should thoroughly understand all of these controls.

Intents and intent filters

An Intent is a messaging object that can be used to request an action from another app component. When is used an implicit intent, the Android system finds the appropriate component to start by comparing the contents of the intent to the intent filters declared in the manifest file of other apps on the device.

Activities

An activity is the entry point for interacting with the user. It represents a single screen with a user interface.

Services

A Service is an application component that can perform long-running operations in the background.

Content providers

A content provider manages access to a central repository of data. A provider is part of an Android application, which often provides its own UI for working with the data.

Broadcast receiver

A broadcast receiver (receiver) is an Android component which allows you to register for system or application events. All registered receivers for an event are notified by the Android runtime once this event happens.

App Widgets

App Widgets are miniature application views that can be embedded in other applications (such as the Home screen) and receive periodic updates.

Processes and threads

A process is an executing instance of an application/program and A thread is a path of execution within a process.

App Resources

Resources are the additional files and static content that your code uses, such as bitmaps, layout definitions, user interface strings, animation instructions, and more.

Support libs

The support library allows you to use additional functionality.

Deeplinking

Deeplinks are a concept that help users navigate between the web and applications.

Instant app

Android instant apps are native Android apps, which users can experience and use on-the-fly, by simply tapping the URL, without the hassles of downloading the app.

App Shortcuts

Shortcuts can be displayed in a supported launcher and help users quickly start common or recommended tasks within the app.

Intents and intent filters
An Intent is a messaging object that can be used to request an action from another app component. When is used an implicit intent, the Android system finds the appropriate component to start by comparing the contents of the intent to the intent filters declared in the manifest file of other apps on the device.
Activities
An activity is the entry point for interacting with the user. It represents a single screen with a user interface.
Services
A Service is an application component that can perform long-running operations in the background.
Content providers
A content provider manages access to a central repository of data. A provider is part of an Android application, which often provides its own UI for working with the data.
Broadcast receiver
A broadcast receiver (receiver) is an Android component which allows you to register for system or application events. All registered receivers for an event are notified by the Android runtime once this event happens.

Animation & Graphics

Expand/colapse
Android provides a variety of powerful APIs for applying animation to UI elements and drawing custom 2D and 3D graphics.

View & Drawable animation

Drawable animation gives possibility to load a series of Drawable resources one after another to create an animation.

Canvas & drawables

The Android framework APIs provides a set 2D drawing APIs that allow to render own custom graphics onto a canvas or to modify existing Views to customize their look and feel.

OpenGL ES

OpenGL is a cross-platform graphics API that specifies a standard software interface for 3D graphics processing hardware. OpenGL ES is a flavor of the OpenGL specification intended for embedded devices.

Bitmaps

A bitmap is an object , which is an instance of the Bitmap Class. This class represents a 2d coordinate system. The coordinate system move to the right on the x axis, and to the bottom on the y axis.

Camera

The Android framework includes support for various cameras and camera features available on devices, allowing to capture pictures and videos in applications.

View & Drawable animation
Drawable animation gives a possibility to load a series of Drawable resources one after another to create an animation.
Canvas & drawables
The Android framework APIs provide a set 2D drawing APIs that allow to render own custom graphics onto a canvas or to modify existing Views to customize their look and feel.
OpenGL ES
OpenGL is a cross-platform graphics API that specifies a standard software interface for 3D graphics processing hardware. OpenGL ES is a flavor of the OpenGL specification intended for embedded devices.
Bitmaps
A bitmap is an object , which is an instance of the Bitmap Class. This class represents a 2d coordinate system. The coordinate system move to the right on the x axis, and to the bottom on the y axis.
Camera
The Android framework includes support for various cameras and camera features available on devices, allowing to capture pictures and videos in applications.

Data storage

Expand/colapse
Android provides several options for you to save persistent application data. The solution you choose depends on your specific needs, such as whether the data should be private to your application or accessible to other applications (and the user) and how much space your data requires.

Shared preferences

Shared Preferences allow to save and retrieve data in the form of key, value pair.

Internal / External storage

Android provides two types of physical storage locations: internal storage and external storage. On most devices, internal storage is smaller than external storage. However, internal storage is always available on all devices, making it a more reliable place to put data on which an app depends.

SQLite Databases

On the Android platform, SQLite helps in creating independent databases for apps and helps to store and manage complex, structured app data.

Cloud Storage

Mobile cloud storage providers offer services that allow the user to create and organize files, folders, music, and photos, similar to other cloud computing models.

ORMs

Object-relational mapping (ORM) is a programming technique in which a metadata descriptor is used to connect object code to a relational database.

Shared preferences
Shared Preferences allow to save and retrieve data in the form of key, value pair.
Internal / External storage
Android provides two types of physical storage locations: internal storage and external storage. On most devices, internal storage is smaller than external storage. However, internal storage is always available on all devices, making it a more reliable place to put data on which an app depends.
SQLite Databases
On the Android platform, SQLite helps in creating independent databases for apps and helps to store and manage complex, structured app data.
Cloud Storage
Mobile cloud storage providers offer services that allow the user to create and organize files, folders, music, and photos, similar to other cloud computing models.
ORMs
Object-relational mapping (ORM) is a programming technique in which a metadata descriptor is used to connect object code to a relational database.

Google services

Expand/colapse
Google Play services powers a broad set of SDKs on Android to help you build your app, enhance privacy and security, engage users, and grow your business.

Push notifications

A push notification is a message that pops up on a mobile device.

Location and Maps

Android allows to integrate google maps in application. Any location, routes etc can be shown on the map.

Analytics

Analytics provides free, unlimited reporting in the app to measure user attribution and in-app activity such as screen views, events, in-app purchases, conversions, and more.

In-app Billing

With in-app billing, Android users are able to purchase additional content or features such as bonus levels, virtual money, power-ups or boosts, special characters and more from within the app itself.

Places

A Place encapsulates information about a physical location, including its name, address, and any other information we might have about it.

Location manager

LocationManager is the main class through which your application can access location services on Android.

Firebase

Firebase is a Backend-as-a-Service (Baas). It provides developers with a variety of tools and services to help them develop quality apps, grow their user base, and earn profit.

Push notifications
A push notification is a message that pops up on a mobile device.
Location and Maps
Android allows to integrate google maps in application. Any location, routes etc can be shown on the map.
Analytics
Analytics provides free, unlimited reporting in the app to measure user attribution and in-app activity such as screen views, events, in-app purchases, conversions, and more.
In-app Billing
With in-app billing, Android users are able to purchase additional content or features such as bonus levels, virtual money, power-ups or boosts, special characters and more from within the app itself.
Places
A Place encapsulates information about a physical location, including its name, address, and any other information we might have about it.

Multithreading

Expand/colapse
Developers multithread Android applications in order to improve their performance and usability. By spinning off processor- or resource-intensive tasks into their own threads, the rest of the program can continue to operate while these processor intensive tasks finish working.

Locks, Conditions, Atomics

Lock implementations provide more extensive locking operations than can be obtained using synchronized methods and statements. Conditions provide a means for one thread to suspend execution (to "wait") until notified by another thread that some state condition may now be true.

Manual Threads

A manual thread is any thread an application starts and controls itself.

Handlers & Loopers

Android Looper is a Java class within the Android user interface that together with the Handler class to process UI events such as button clicks, screen redraws and orientation switches.

Executors

Factory and utility methods for Executor, ExecutorService, ScheduledExecutorService, ThreadFactory, and Callable classes defined in this package.

Concurrent Collections

Besides Queues, this package supplies Collection implementations designed for use in multithreaded contexts: ConcurrentHashMap, ConcurrentSkipListMap, ConcurrentSkipListSet, CopyOnWriteArrayList, and CopyOnWriteArraySet.

Locks, Conditions, Atomics
Lock implementations provide more extensive locking operations than can be obtained using synchronized methods and statements. Conditions provide a means for one thread to suspend execution (to "wait") until notified by another thread that some state condition may now be true.
Manual Threads
A manual thread is any thread an application starts and controls itself.
Handlers & Loopers
Android Looper is a Java class within the Android user interface that together with the Handler class to process UI events such as button clicks, screen redraws and orientation switches.
Executors
Factory and utility methods for Executor, ExecutorService, ScheduledExecutorService, ThreadFactory, and Callable classes defined in this package.
Concurrent Collections
Besides Queues, this package supplies Collection implementations designed for use in multithreaded contexts: ConcurrentHashMap, ConcurrentSkipListMap, ConcurrentSkipListSet, CopyOnWriteArrayList, and CopyOnWriteArraySet.

UI

Expand/colapse
Android provides a variety of pre-built UI components such as structured layout objects and UI controls that allow you to build the graphical user interface for your app. Android also provides other UI modules for special interfaces such as dialogs, notifications, and menus.

View hierarchy

A View inside another View creates an hierarchy, the outer view becomes the parent of the inner view and the inner view is its child.

Drawing events

Drawing Events. When a shape overlay is created, two events are fired: an {overlay}complete event; an overlaycomplete event.

Touch events

The Android standard View class support touch events. Android supports multiple pointers, e.g. fingers which are interacting with the screen.

ViewGroups (Layouts)

A ViewGroup is a special view that can contain other views. The ViewGroup is the base class for Layouts in Android, like LinearLayout, RelativeLayout, FrameLayout etc.

ListView / RecyclerView / ViewHolder

Android ListView is a view which groups several items and display them in vertical scrollable list. The RecyclerView is a widget that is more flexible and advanced version of GridView and ListView. It is a container for displaying large datasets which can be scrolled efficiently by maintaining limited number of views. A ViewHolder describes an item view and metadata about its place within the RecyclerView.

ViewPager

The ViewPager is the widget that allows the user to swipe left or right to see an entirely new screen.

Custom Views, Custom Layouts

Custom views - creating own views. A custom view is a subclass of View, or of any View subclass (such as Button), that extends or replaces its parent's functionality. Custom layout manager can be implemented by extending the ViewGroup class.

ActionBar / Toolbar

The ActionBar is a consistent navigation element that is standard throughout modern Android applications. ToolBar was introduced in Android Lollipop, API 21 release and is the spiritual successor of the ActionBar.

Contextual Action Mode

The contextual action mode displays action items that affect the selected content in a bar at the top of the screen and allows the user to select multiple items.

Dialog / DialogFragment

A dialog is a small window that prompts the user to make a decision or enter additional information. A dialog does not fill the screen and is normally used for modal events that require users to take an action before they can proceed. A DialogFragment is a special fragment subclass that is designed for creating and hosting dialogs.

Notifications

A notification is a message that Android displays outside the app's UI to provide the user with reminders, communication from other people, or other timely information from the app.

Animation Frameworks

Android supports powerful animations for both views and transitions between activities. There are three distinct animation frameworks for Android: Property Animations, View Animations, Transition Animations

LayoutTransition

This class enables automatic animations on layout changes in ViewGroup objects.

UI guidelines / Material design

User interface is everything that the user can see and interact with. Material is a design system created by Google to help teams build high-quality digital experiences

View hierarchy
A View inside another View creates a hierarchy, the outer view becomes the parent of the inner view and the inner view is its child.
Drawing events
Drawing Events. When a shape overlay is created, two events are fired: an {overlay}complete event; an overlaycomplete event.
Touch events
The Android standard View class supports touch events. Android supports multiple pointers, e.g. fingers which are interacting with the screen.
ViewGroups (Layouts)
A ViewGroup is a special view that can contain other views. The ViewGroup is the base class for Layouts in Android, like LinearLayout, RelativeLayout, FrameLayout etc.
ListView / RecyclerView / ViewHolder
Android ListView is a view which groups several items and display them in vertical scrollable list. The RecyclerView is a widget that is more flexible and advanced version of GridView and ListView. It is a container for displaying large datasets which can be scrolled efficiently by maintaining limited number of views. A ViewHolder describes an item view and metadata about its place within the RecyclerView.

Gradle

Expand/colapse
Android Studio uses Gradle, an advanced build toolkit, to automate and manage the build process, while allowing you to define flexible custom build configurations.

Simple build files

There are 3 main areas to this Android build file: apply plugin, buildscript, android.

Build Variant: Build Type + Product Flavor

When building an app, Gradle combines a product flavor configuration from each defined flavor dimension, along with a build type configuration, to create the final build variant.

BuildConfig

At build time, Gradle generates the BuildConfig class so the app code can inspect information about the current build.

Building and Tasks

Gradle models its builds as Directed Acyclic Graphs (DAGs) of tasks (units of work). What this means is that a build essentially configures a set of tasks and wires them together — based on their dependencies — to create that DAG. Once the task graph has been created, Gradle determines which tasks need to be run in which order and then proceeds to execute them.

Custom plugins

A Gradle plugin packages up reusable pieces of build logic, which can be used across many different projects and builds.

APK splits

Gradle can create separate APKs that contain only code and resources specific to each density or ABI.

Dependencies, Android Libraries and Multi-project setup

Dependencies refer to the things that supports in building the project. An Android library is structurally the same as an Android app module. It can include everything needed to build an app, including source code, resource files, and an Android manifest. A multi-project build in Gradle consists of one root project, and one or more subprojects.

Simple build files
There are 3 main areas to this Android build file: apply plugin, buildscript, android.
Build Variant: Build Type + Product Flavor
When building an app, Gradle combines a product flavor configuration from each defined flavor dimension, along with a build type configuration, to create the final build variant.
BuildConfig
At build time, Gradle generates the BuildConfig class so the app code can inspect information about the current build.
Building and Tasks
Gradle models its builds as Directed Acyclic Graphs (DAGs) of tasks (units of work). What this means is that a build essentially configures a set of tasks and wires them together — based on their dependencies — to create that DAG. Once the task graph has been created, Gradle determines which tasks need to be run in which order and then proceeds to execute them.
Custom plugins
A Gradle plugin packages up reusable pieces of build logic, which can be used across many different projects and builds.

Instruments / tools

Expand/colapse
Android developers need to stay productive to create better quality apps at record speed.

Android Profiler

The Android Profiler tools provide real-time data to understand how the app uses CPU, memory, network, and battery resources.

Allocation Tracker

The allocation tracker is a tool provided by Android that records an app's memory allocations and lists all allocated objects for the profiling cycle with their call stack, size, and allocating code.

GPU profiler/debugger

The GPU Debugger helps to analyze and debug OpenGL ES apps. It lets to inspect the GPU state and helps to understand what caused a specific rendering outcome.

Hierarchy viewer

Hierarchy Viewer is a tool built into Android Device Monitor that allows to measure the layout speed for each view in the layout hierarchy. It can help to find performance bottlenecks caused by the structure of the view hierarchy.

Lint

Lint is a code scanning tool provided by the Android Studio to identify, suggest and correct the wrong or the risky code present in the project.

ADB

Android Debug Bridge (ADB) is a utility of command prompt for multi purpose that helps to get access to Android devices.

Android Device Monitor

Android Device Monitor is a stand-alone tool that provides a graphical user interface for several Android application debugging and analysis tools.

Proguard

Proguard is free Java class file shrinker, optimizer, obfuscator, and preverifier. It detects and removes unused classes, fields, methods, and attributes.

Android Profiler
The Android Profiler tools provide real-time data to understand how the app uses CPU, memory, network, and battery resources.
Allocation Tracker
The allocation tracker is a tool provided by Android that records an app's memory allocations and lists all allocated objects for the profiling cycle with their call stack, size, and allocating code.
GPU profiler/debugger
The GPU Debugger helps to analyze and debug OpenGL ES apps. It lets to inspect the GPU state and helps to understand what caused a specific rendering outcome.
Hierarchy viewer
Hierarchy Viewer is a tool built into Android Device Monitor that allows to measure the layout speed for each view in the layout hierarchy. It can help to find performance bottlenecks caused by the structure of the view hierarchy.
Lint
Lint is a code scanning tool provided by the Android Studio to identify, suggest and correct the wrong or the risky code present in the project.

Google-Android Technologies

Expand/colapse
Google believes technology should play a helpful role in people's lives.

Android Wearable

Wear OS apps run directly on a watch, giving you access to hardware such as sensors and the GPU. Wearable apps are similar to other apps that use the Android SDK, but differ in design and functionality.

Android Things

Android Things let to experiment with building smart, connected device applications.

Android TV

Android TV is a smart TV operating system based on Android and developed by Google for television sets, digital media players, set-top boxes, and soundbars.

Bluetooth / NFC

NFC is a technology that enables Bluetooth devices to establish wireless communication with each other by simply touching the devices together.

Android Wearable
Wear OS apps run directly on a watch, giving you access to hardware such as sensors and the GPU. Wearable apps are similar to other apps that use the Android SDK, but differ in design and functionality.
Android Things
Android Things let to experiment with building smart, connected device applications.
Android TV
Android TV is a smart TV operating system based on Android and developed by Google for television sets, digital media players, set-top boxes, and soundbars.
Bluetooth / NFC
NFC is a technology that enables Bluetooth devices to establish wireless communication with each other by simply touching the devices together.

Third parties libraries

Expand/colapse
The most important benefit of using third party libraries is that it saves you time as you do not need to develop the functionality that the library provides. Instead, you can focus on the core business logic of your app.

RxJava

RxJava is a Java VM implementation of ReactiveX a library for composing asynchronous and event-based programs by using observable sequences.

Dagger 2

Dagger 2 is dependency injection framework. It is based on the Java Specification Request (JSR) 330. It uses code generation and is based on annotations. The generated code is very relatively easy to read and debug.

OkHttp

OkHttp is a third-party library developed by Square for sending and receive HTTP-based network requests.

Retrofit

Retrofit is type-safe REST client for Android and Java which aims to make it easier to consume RESTful web services.

Volley/Glide/Picasso

Volley is an HTTP library that makes networking for Android apps easier and most importantly, faster. Glide is an Image Loader Library for Android developed by bumptech and is a library that is recommended by Google. Picasso is an image library for Android. It's created and maintained by Square, and caters to image loading and processing.

Jackson, Gson, SimpleXML

Jackson is a high-performance JSON processor for Java. Gson is a Java library that can be used to convert Java Objects into their JSON representation. It can also be used to convert a JSON string to an equivalent Java object. Simple is a high performance XML serialization and configuration framework for Java. Its goal is to provide an XML framework that enables rapid development of XML configuration and communication systems.

RxJava
RxJava is a Java VM implementation of ReactiveX a library for composing asynchronous and event-based programs by using observable sequences.
Dagger 2
Dagger 2 is dependency injection framework. It is based on the Java Specification Request (JSR) 330. It uses code generation and is based on annotations. The generated code is very relatively easy to read and debug.
OkHttp
OkHttp is a third-party library developed by Square for sending and receive HTTP-based network requests.
Retrofit
Retrofit is type-safe REST client for Android and Java which aims to make it easier to consume RESTful web services.
Volley/Glide/Picasso
Volley is an HTTP library that makes networking for Android apps easier and most importantly, faster. Glide is an Image Loader Library for Android developed by bumptech and is a library that is recommended by Google. Picasso is an image library for Android. It's created and maintained by Square, and caters to image loading and processing.

Testing

Expand/colapse
Users interact with your app on a variety of levels, from pressing a button to downloading information onto their device. Accordingly, you should test a variety of use cases and interactions as you iteratively develop your app.

Unit tests

By creating and running unit tests against the code, it can be verified that the logic of individual units is correct. Running unit tests after every build helps quickly catch and fix software regressions introduced by code changes to the app.

Instrumentation tests

Instrumentation test provides a special test execution environment as launched via the am instrument command, where the targeted application process is restarted and initialized with basic application context, and an instrumentation thread is started inside the application process VM.

Mockito

Mockito is a mocking framework, JAVA-based library that is used for effective unit testing of JAVA applications.

Espresso

Espresso is a testing framework for Android to make it easy to write reliable user interface tests. Espresso automatically synchronizes test actions with the user interface of the application.

Unit tests
By creating and running unit tests against the code, it can be verified that the logic of individual units is correct. Running unit tests after every build helps quickly catch and fix software regressions introduced by code changes to the app.
Instrumentation tests
Instrumentation test provides a special test execution environment as launched via the am instrument command, where the targeted application process is restarted and initialized with basic application context, and an instrumentation thread is started inside the application process VM.
Mockito
Mockito is a mocking framework, JAVA-based library that is used for effective unit testing of JAVA applications.
Espresso
Espresso is a testing framework for Android to make it easy to write reliable user interface tests. Espresso automatically synchronizes test actions with the user interface of the application.
we are loading comments...
Join discussion