com.google.firebase:firebase-bom:16.0.0The latest Firebase BoM version contains the latest versions of each
Firebase Android library available at the BoM's release.
For the library versions mapped to previous BoM versions, review the
release notes below.

Cloud Messaging version 17.4.0

The following Firebase Android SDKs have been updated with internal changes to
ensure functionality alignment with other SDK releases.

Firebase Common version 16.1.0

Realtime Database version 16.1.0

Cloud Storage version 16.1.0

Cloud Functions version 16.2.0

Update - February 08, 2019

Crashlytics version 2.9.9

Fixed bug that sometimes prevented Analytics events from being
automatically written to Crashlytics logs as "breadcrumbs".

Improved logging output when Crashlytics fails to initialize due
to missing build tools.

Updated Fabric dependency to 1.4.8

Update - February 7, 2019

A/B Testing version 17.1.0

Updated API to support the latest Remote Config update.

Invites version 16.1.0

Firebase Invites is now deprecated. For more details and
information about migrating to other Firebase products, refer to the
Invites migration page.

Cloud Firestore version 18.0.1

Fixed an issue where Cloud Firestore would crash if handling write
batches larger than 2 MB in size.

Cloud Firestore now recovers more quickly from long periods without
network access.

Dynamic Links version 16.1.7

Internal refactor.

Remote Config version 16.3.0

The Firebase Remote Config SDK requires the
Firebase Remote Config REST API. For Firebase projects created before
March 7, 2018, you must manually enable the REST API. For more information,
see our
Remote Config REST API user guide.

Refactored the implementation of Remote Config to improve SDK
stability and speed, and to remove the Google Play Services dependency.

Improved error logs and exception messages.

Updated the Android documentation to reflect that
Remote Config uses Locale to retrieve location information, similar to
iOS's use of countryCode.

Update - January 31, 2019

ML Kit Natural Language version 18.1.1

Initial release with support for the Language Identification API.

ML Kit Natural Language Identification Model version 18.0.2

Initial release of the Language Identification Model.

ML Kit Common version 16.2.3

No changes from previous version

ML Kit Model Interpreter version 17.0.3

No changes from previous version

ML Kit Vision version 19.0.2

No changes from previous version

Firebase Core version 16.0.7

Internal changes to ensure functionality alignment with other SDK
releases.

Analytics version 16.3.0

This release adds the ability for an app to specify that an event
logged while the app is in the background should be part of the current
session and that the session should be prolonged. Sessions now begin when the
app is foregrounded, and the setMinimumSessionDuration method is now
deprecated.

Ads version 17.1.3

Internal changes to ensure functionality alignment with other SDK
releases.

Update - January 30, 2019

ML Kit Common version 16.2.1

Added the FirebaseModelManager class for downloading and
managing custom models from the cloud. The class was previously defined
under package com.google.firebase.ml.custom.

Added FirebaseCloudModelSource and FirebaseLocalModelSource
classes for defining and registering custom cloud and local models. The
classes were previously defined under package
com.google.firebase.ml.custom.model.

ML Kit Model Interpreter version 17.0.1

Moved the FirebaseCloudModelSource and
FirebaseLocalModelSource classes for defining and registering custom models
to package com.google.firebase.ml.common.modeldownload.

Upgraded TensorFlowLite dependency from 1.10.1 to 1.12.0.

ML Kit Vision version 19.0.0

Unified and enhanced on-device and cloud Image Labeling API.

Update - January 25, 2019

Realtime Database version 16.0.6

Cloud Firestore version 18.0.0

The timestampsInSnapshotsEnabled setting is now enabled by
default. Timestamp fields that read from a DocumentSnapshot are now returned
as Timestamp objects instead of Date objects. This is a breaking change;
developers must update any code that expects to receive a Date object. See
FirebaseFirestoreSettings.Builder.setTimestampsInSnapshotsEnabled()
for more details.

Custom objects (POJOs) can now be passed in several ways: as a
field value in update(), within Map<> objects passed to set(), in array
transform operations, and in query filters.

Fixed an issue where if an app sent a write to the server, but the
app was shut down before a listener received the write, the app could crash.

In-App Messaging version 17.0.5

Users with restricted API keys can now use the SDK as expected.

In-App Messaging-display version 17.0.5

Users with restricted API keys can now use the SDK as expected.

Update - January 09, 2019

Remote Config version 16.1.3

Fixed an issue where Remote Config experiments were not
collecting results.

Update - December 22, 2018

Crashlytics version 2.9.8

Fixed bug with firebase_crashlytics_collection_enabled flag that
erroneously disabled data collection under some circumstances.

Update - December 19, 2018

Cloud Firestore version 17.1.5

Cloud Firestore now recovers more quickly from bad network states.

Improved performance for reading large collections.

Offline persistence now properly records schema downgrades. This is
a forward-looking change that allows you to safely downgrade from future SDK
versions to this version (v17.1.5). You can already safely downgrade versions
now depending on the source version. For example, you can safely downgrade
from v17.1.4 to v17.1.2 because there are no schema changes between those
versions. Related:
https://github.com/firebase/firebase-android-sdk/issues/134

Performance Monitoring version 16.2.3

Bug fixes.

Update - December 06, 2018

Authentication version 16.1.0

Added an API to customize the dynamic link domain that is used in
out-of-band email action flows.

Bug fixes and internal improvements.

Cloud Firestore version 17.1.4

Fixed a SQLite transaction-handling issue that occasionally masked
exceptions when Firestore closed a transaction that was never started. For
more information, see the issue report in GitHub.

Fixed a race condition that caused a SQLiteDatabaseLockedException
when an app attempted to access the SQLite database from multiple threads.

Update - December 03, 2018

The following Firebase Android SDKs have been updated to support internal
refactoring and bug fixes:

Analytics version 16.0.6

Dynamic Links version 16.1.5

Google Ads version 17.1.2

Invites version 16.0.6

Performance Monitoring version 16.2.2

Remote Config version 16.1.2

Update - November 29, 2018

Performance Monitoring version 16.2.1

SDK size is now smaller.

ML Kit Custom Model version 16.2.4

Bug fixes and internal improvements.

ML Kit Vision version 18.0.2

Face contour detection now only returns contours for the most prominent face.

The face tracking feature is disabled for contour-only detection in FAST mode.

Vision detectors no longer override finalize() method.

App Indexing version 17.1.0

Apps will need to bump their compileSdkVersion to 28 or higher.

Added Indexable.Metadata.Builder.setSliceUri(),
which gives developers the ability to provide dynamic and interactive search
results, Slices, in the Google
search app. Note that this method grants permission for the specified Uri to
Google Play Services (com.google.android.gms), to bind
to and cache the Slice, and to Google search app
(com.google.android.googlequicksearchbox), to render the Slice. The client
app can revoke Slice permissions to these packages at any time through SliceManager.revokeSlicePermission().

Update - November 9, 2018

General

Updated okhttp versions to 2.7.5 in Open sourced Firebase
libraries to fix potential vulnerabilities, as noted in GitHub Issue
https://github.com/firebase/firebase-android-sdk/issues/99

Update - November 2, 2018

Analytics version 16.0.5

This release includes minor bug fixes.

This release includes improvements to startup latency.

Dynamic Links version 16.1.3

Fixed an issue that caused short link creation to fail when creating
links through FirebaseDynamicLinks.getInstance().createDynamicLink().buildShortDynamicLink()
using Google Play Services 13.2.80 and FDL SDK 16.1.0. The issue only occurred
when creating shortening links from parameters, links created using
preconstructed long links from setLongLink() were unaffected. This fix also
addresses issues in newer versions of Google Play Services.

Update - October 25, 2018

General

Open sourced Firebase libraries are no longer distributed
proguarded.

google-services plugin 4.2.0

Improved support for instant-app projects.

Improved version checking mechanism.

Plugin is now Open Sourced at
https://github.com/google/play-services-plugins

Cloud Firestore version 17.1.2

Changed how the SDK handles locally-updated documents while syncing those updates with Cloud Firestore servers. This can lead to slight behavior changes and may affect the SnapshotMetadata.hasPendingWrites() metadata flag.

Eliminated superfluous update events for locally cached documents that are known to lag behind the server version. Instead, the SDK buffers these events until the client has caught up with the server.

In-App Messaging version 17.0.3

Improved caching logic, added safeguards for cache expiration, and cleaned up API surface to prepare for open sourcing the In-App Messaging-display SDK.

In-App Messaging-display version 17.0.3

Improved caching logic, added safeguards for cache expiration, and cleaned up API surface to prepare for open sourcing.

ML Kit Vision version 18.0.1

Update - October 2, 2018

Realtime Database version 16.0.3

Fixed an initialization issue that prevented the Realtime Database
client from being initialized outside of Android's main thread.

Cloud Firestore version 17.1.1

Fixed an issue where the first get() call made after being offline could incorrectly return cached data without attempting to reach the backend.

Changed get() to only make one attempt to reach the backend before returning cached data, potentially reducing delays while offline.

Fixed an issue that caused Firebase to drop empty objects from calls to set(..., SetOptions.merge()).

Updated printf-style templates to ensure that they're compile time constants. Previously, some were influenced by error messages. When those error messages contained %p or other, related tokens, String.format() would throw an exception.

Some SDK errors that represent common mistakes, like permission errors or missing indexes, are automatically logged as warnings in addition to being surfaced via the API.

Update - September 18, 2018

Cloud Messaging version 17.3.2

Fixed an issue that would occasionally cause apps to crash with
Android Not Responding (ANR) errors when receiving a message.

Update - September 6, 2018

Firebase Instance ID version 17.0.1

Fixed a compatibility issue with Google Cloud Messaging (GCM)
libraries, apps using both could experience delayed messages, slow
performance, and even device-wide errors.

Realtime Database version 16.0.2

This release includes minor fixes and improvements.

Storage version 16.0.2

This release includes minor fixes and improvements.

Update - August 23, 2018

This release includes minor fixes and improvements to the following
SDKs:

firebase-core

firebase-crash

firebase-analytics

firebase-dynamic-links

firebase-invites

Update - August 22, 2018

In-App Messaging-display version 17.0.1

Fixed an issue where Firebase In-App Messaging and Firestore could not be included/built into the same app, because of an obfuscation collision.

In-App Messaging version 17.0.1

Fixed an issue where Firebase In-App Messaging and Firestore could not be included/built into the same app, because of an obfuscation collision.

Update - August 21, 2018

Cloud Messaging version 17.3.0

Incremented the version number to 17.3.0 due to internal SDK
changes. These changes do not affect client functionality, and developers
do not need to take any action.

Firestore will now recover from auth token expiration when the system clock is wrong.

Update - July 27, 2018

Cloud Firestore version 17.0.4

Fixed an issue where queries returned fewer results than they
should. The issue related to
improper caching,
so clients may use extra bandwidth the first time they launch with this
version of the SDK, as they re-download cleared cached data.

Performance Monitoring version 15.2.0

The incrementCounter() method of the Trace
class is now deprecated. Use the new incrementMetric() method instead.

SDK Update - May 2, 2018

General

Firebase Android SDKs now have independent version numbers, allowing for more
frequent, flexible updates.

If your app has a dependency on com.google.firebase:firebase-core:15.0.0 as
well as any of the following libraries:

com.google.android.gms:play-services-analytics

com.google.android.gms:play-services-appinvite

com.google.android.gms:play-services-tagmanager

com.google.firebase:firebase-analytics

com.google.firebase:firebase-crash

com.google.firebase:firebase-dynamic-links

com.google.firebase:firebase-messaging

You will need to update the version of the latter dependency to 15.0.2. This
addresses the issue where version 3.3.0 of the
Google Services Gradle plugin
reports: The library com.google.android.gms:play-services-measurement-base
is being requested by various other libraries at [[15.0.0,15.0.0],
[15.0.2,15.0.2]], but resolves to 15.0.2...

Analytics version 15.0.2

Updates for auto-initialization and interoperability with other Firebase
libraries.

Authentication version 15.1.0

Updates for auto-initialization and interoperability with other Firebase
libraries.

Added the updateCurrentUser() method to the
FirebaseAuth
class, to allow copying
FirebaseUsers
from one instance to another.

Cloud Messaging version 15.0.2

Updates for auto-initialization and interoperability with other Firebase
libraries.

QuerySnapshot.getDocumentChanges()
now optionally takes a MetadataChanges enum. By default, metadata-only document changes are
suppressed in getDocumentChanges(), even when listening
to a query with MetadataChanges.INCLUDE.

Added the ability to control whether
DocumentReference.get()
and
Query.get()
should fetch from server only, cache only, or attempt server and fall back to
the cache. By default, both methods still attempt server and fall back to the
cache.

Cloud Firestore no longer ProGuards its dependencies, GRPC and
protobuf. As a result, if you use GRPC or protobuf independent of
Firestore, your app will now only include one copy of either library in its
final APK. If you don't use ProGuard, your app size will increase by roughly
1MB. You can avoid this increase by running ProGuard on your release builds to
remove unneeded methods. To learn how, see
Shrink Your Code and Resources.

Added a ServerTimestampBehavior enum to control how
DocumentSnapshots
return unresolved server timestamps.

Authentication

Cloud Messaging

Added the setAutoInitEnabled() and isAutoInitEnabled() methods to the FirebaseMessaging class to set and check whether FCM auto-initializes. Also added firebase_messaging_auto_init_enabled manifest metadata flag for setting auto-initialization preferences from the Android Manifest file.

Fixed a regression that caused custom notification icons to be rejected on Android 8.0.

Cloud Firestore

Firestore now cleanly shuts down idle write streams.

When the includeMetadataChanges option is enabled, snapshot listeners now receive an event, withsnapshot.metadata.isFromCache, if the SDK loses or regains its connection to the backend. The event is true when the connection is lost and false when it's regained.

DocumentSnapshot.getData() now returns null instead of throwing an exception when you use the method on non-existant documents. If you'd like to minimize number of null-checks in your code, use the new QueryDocumentSnapshot class instead.

Cloud Messaging

If your app crashes or doesn't respond, Firebase Cloud Messaging (FCM) now tries to redeliver missed messages after a short delay. This change is automatic, and doesn't require any updates to your code.

FirebaseInstanceIdInternalReceiver has been removed from the SDK's automatically-merged AndroidManifest. If you weren't using Gradle or its manifest automerging feature and were adding this receiver manually, you can now remove it.

Improved FCM token fetch logic so that the FCM token is now created faster and with less battery drain.

Dynamic Links

Fixed an undercounting issue where dynamic_link_app_open wasn't being logged to Google Analytics when the app was opened after being updated due to a link.

Test Lab

Adjusted the IP addresses used by Test Lab devices. If your app works with digital advertising providers, contact them to make sure their filters are up-to-date. For the new addresses, see Test Lab and mobile advertising.

App Indexing

The Firebase App Indexing API now sends updates for the on-device index
through broadcasts to apps instead of starting a service. This change
improves compatibility on Android O. See the
updated instructions to modify
your personal content indexing implementation.

Performance Monitoring

Performance Monitoring

Fixed a variety of minor issues, most of which relate to HTTP/S
network request monitoring.

Crash Reporting

Reduced the resources required to initialize Crash Reporting.

June 19, 2017

Test Lab

Game test loop and Robo test now support the
App Licensing
service offered by Google Play for apps in the production channel. To
successfully check licensing when testing your app with Test Lab, you must
publish your app to the production channel in the Play store. To test your
app in the alpha or beta channel using Test Lab, remove the licensing
check before uploading your app to Test Lab.

Firebase SDK for Android

Added the setProjectId() method to the FirebaseOptions class.
This method sets the Firebase project or Google Cloud project ID for an app.

Analytics

The AppMeasurementJobService class is now available. It
provides a [JobService](https://developer.android.com/reference/android/app/job/JobService.html)
to Analytics.

Analytics now supports analytics for Android Instant Apps.
Specifically, instant apps will log a first_visit event instead of a
first_open event and a first_visit_time event instead of a
first_open_time event.

The following events is now reserved as part of the integration
of Analytics with AdMob : ad_impression, ad_click,
ad_query ad_exposure, adunit_exposure, and ad_activeiew.

The screen_view event is now reserved and is logged as a result of screen-tracking. To learn more about screen-tracking, see Track Screenviews.

Authentication

Firebase Authentication Using Phone Numbers is now available!

Added the getPhoneNumber() and updatePhoneNumber() methods to the FirebaseUser class, and also added the getPhoneNumber() method to the UserInfo class. These methods get and update the phone numbers of users.

Added the PhoneAuthCredential, PhoneAuthProvider, PhoneAuthProvider.ForceResendingToken, and PhoneAuthProvider.OnVerificationStateChangedCallbacks classes to support authentication using phone numbers.

Added the getIdToken()method to the FirebaseUser class. This
method gets an Authentication ID token for the user, and replaces the
getToken()method, which is now deprecated.

Added the reauthenticateAndRetrieveData()method to the
FirebaseUser class. This method re-authenticates a user and returns the
profile data for that user's account.

Added the AdditionalUserInfo class. This class provides storage
for ID provider-specific user data for the following ID providers: Facebook,
GitHub, Twitter and Google.

Added the getAdditionalUserInfo() method to the AuthResult
class. This method returns ID provider-specific user data contained in an
AdditionalUser object.

Added the FirebaseAuth.IdTokenListener class. This class
creates a listener that is called when the ID token changes, such as when a user
signs in or signs out.

Added the addIdTokenListener() and removeIdTokenListener()
methods to the FirebaseAuth class. These methods register or unregister
FirebaseAuth.IdTokenListener objects.

Added the FirebaseAuthEmailException class. This class
represents an exception that results from attempting to send an email message
using Firebase Authentication.

Added the OAuthProvider class. This class represents the login
authentication provider for a generic OAuth2 provider.

Crash Reporting

Added the isCrashCollectionEnabled() method to the
FirebaseCrash class. This method determines whether Crash Reporting is
enabled or disabled.

Added the setCrashCollectionEnabled() method to the
FirebaseCrash class. This method enables or disables Crash Reporting.

App Indexing

The AndroidAppUri class is now available in the
com.google.firebase.appindexing package. This class also exists in the
deprecated com.google.android.gms.appindexing package.

Added the AggregateRatingBuilder, GeoShapeBuilder,
LocalBusinessBuilder, PostalAddressBuider, ReservationBuilder and
RestaurantBuilder classes. These classes construct various types of
Indexable objects. To learn more about the data contained in these
Indexable objects, see
AggregateRating,
GeoShape,
LocalBusiness,
PostalAddress,
Reservation, and
Restaurant.

Added the aggregateRatingBuilder(), geoShapeBuilder(),
localBusinessBuilder(), postalAddressBuilder(), reservationBuilder()
and restaurantBuilder() methods to the Indexables class. These methods
create various types of Indexable objects.

Dynamic Links

Added the DynamicLink and DynamicLink.Builder classes.
These classes are used for constructing Dynamic Links, with a set of methods
for setting various types of Dynamic Link parameters. Also added the following related classes:

DynamicLink.IosParameters and DynamicLink.IosParameters.Builder

DynamicLink.AndroidParameters and DynamicLink.AndroidParameters.Builder

DynamicLink.GoogleAnalyticsParameters and DynamicLink.GoogleAnalyticsParameters.Builder

DynamicLink.ItunesConnectAnalyticsParameters and DynamicLink.ItunesConnectAnalyticsParameters.Builder

DynamicLink.SocialMetaTagParameters and DynamicLink.SocialMetaTagParameters.Builder

Added the FirebaseDynamicLinks class. This class provides
access to Dynamic Links that are received by an app at launch.

Added the ShortDynamicLink, ShortDynamicLink.Suffix,and
ShortDynamicLink.Warning classes. These classes provide short dynamic
links, an option for generating short dynamic link URLs, and warnings
related to short Dynamic Links.

Invites

Added the FirebaseAppInvite class. This class replaces the
AppInvite
class, which is now deprecated.

For games that use the
SurfaceView
class, frames per second (fps) are also measured.

Firebase Test Lab now has beta support for testing Android games
created using game frameworks (for example, Unity) if those games include
game test loops. To learn more, see
Firebase Test Lab Game Test Loops.

Cloud Messaging

Added support for Android O notification channels. Android
clients can specify a default
notification channel
in the application manifest
which will be used if the downstream message does not contain a
notification_channel parameter.

Cloud Messaging

The Firebase Android SDK (v10.2.1) includes updates to provide
compatibility with Android O Developer Preview 1. The most significant updates
are internal changes to the Firebase Cloud Messaging (FCM) libraries
and a change in the guaranteed lifecycle of FCM callbacks to 10
seconds, after which Android O considers such callbacks eligible for
termination. For more information on handling FCM messages on
Android O, see
The Firebase Blog.

Test Lab

Low-resolution medium DPI (MDPI) virtual devices are now
available in Test Lab. You can run Robo test and instrumentation
tests on your app more quickly with the Test Lab generic low-resolution
MDPI phone virtual device than with other virtual devices. The MDPI virtual
device is available on API levels 23, 24 and 25. To use this device from the
gcloud command-line interface, use the NexusLowRes model ID.

Crash Reporting

The Crash Reporting gradle plugin for Android version 1.0.5
is now available. This update adds the ability to specify Gradle properties
to use when uploading a ProGuard mapping file, and also removes the
requirement to use a google-services.json file in your app. To learn more,
see
Uploading ProGuard Mapping Files with Gradle.

The Firebase console now lets you select the specific device
and Android API level combinations to use when testing your app. This makes
it easy to focus your testing; for example, when you are validating a bug
fix.

December 15, 2016

The Crash Reporting gradle plugin for Android is now
available. This plugin simplifies the process of uploading ProGuard mapping
files for the deobfuscation of stack traces. To learn more, see
Uploading ProGuard Mapping Files with Gradle.

Analytics

Increased the maximum length of event names and parameter name
to 40 characters, and the maximum length of string parameter values to 100
characters.

Authentication

Added APIs to support out-of-band codes that can be used to
reset passwords, verify identity using email, and recover access to email.
To learn more, see the API reference documentation for the
ActionCodeResult
and
FirebaseAuthActionCodeException
classes.

Firebase Test Lab

Test Lab provides virtual devices running the latest build of
Android 7.1 Preview. You can run tests on these devices as often as you
need, at no cost, until the end of the Developer Preview in December. To
learn more, see
Test the Android 7.1 Preview with Firebase Test Lab.

App Indexing

The new Firebase App Indexing SDK lets apps add a personal
content index and log user actions, in addition to making your app
discoverable by Google Search. To use the new App Indexing SDK, update
your Gradle dependency to com.google.firebase:firebase-appindexing:10.0.0.
For more information, see the
Firebase App Indexing Introduction
and the
Firebase App Indexing API Reference.

Cloud Messaging

Fixed an issue that caused extra alarms to be incorrectly set,
resulting in crashes with Too Many Alarms in the stack trace on some
Samsung devices.

Analytics

Added screen tracking support. Each app's current Activity
is automatically tracked. The current screen is tracked with the
firebase_screen_class parameter with every logged event, which provides
valuable context. In addition to automatic screen tracking, you can manually
track screens using the
FirebaseAnalytics#setCurrentScreen
method. This adds the firebase_screen parameter to every event logged
while those screens are visible to app users.

Cloud Messaging

Improved the reliability of message delivery to Android Wear
devices that are paired with an iOS device.