- [Fix] Fix closing cursor after deleting old records.
- [Improvement] Use java.security.Random instead of java.util.Random.
- [Fix] Synchronize the timestamp used for minidump attachments with the crash log's timestamp.
- [Fix] Add RECEIVER_EXPORTED flag for install receiver.
- [Fix] Add FLAG_ALLOW_UNSAFE_IMPLICIT_INTENT flag for broadcast pending intent.
- [Internal] Add
dataResidencyRegion
option.
- [Improvement] Support updates using AAB file uploaded to the portal.
- [Fix] Fix SDK crash if the
ConnectivityManager.getNetworkInfo
method call throws an exception.
- [Fix] Fix Concurrent Modification Exception in DefaultChannel on setNetworkRequestsAllowed.
- [Improvement] Migrate from Maven Dcendents to Maven Publish plugin.
- [Fix] Fix NPE in Distribute module on resume distribute workflow when showing update setup failed dialog.
- [Fix] Fix ignoring maximum storage size limit in case logs contain large payloads.
- [Feature] Add requesting notifications permission for Android 13 (notifications are used to inform about downloading/installing status if an application is in background)
- [Fix] Fix crash when SDK is started from overridden
Application.attachBaseContext
.
- [Fix] Fix crash when storage is encrypted during direct boot. Please note that settings and pending logs database are not shared between regular and device-protected storage.
- [Improvement] Remove optional
SYSTEM_ALERT_WINDOW
permission that was required to automatically restart the app after installing the update. - [Improvement] Add fallback to the old ACTION_INSTALL_PACKAGE installation method if the update cannot be installed by
PackageInstaller
API (e.g. when MIUI optimizations block installation). - [Fix] Fix possible crash on resume event before initialization.
- [Fix] Fix clicks on the download completion notification.
- [Fix] Fix ANR on installing large packages.
- [Fix] Fix cancellation handling of confirmation dialog for mandatory updates.
- [Fix] Fix strict mode issues.
- [Fix] Add exception null check for
Crashes.trackError
API.
- [Fix] Fix checking a new release if the application was already updated before.
- [Fix] Fix superfluous register/unregister receiver for installing new release.
- [Fix] Fix show custom in-app update dialog after opening release details.
- [Fix] Add missing
Distribute.addStores
API.
- [Fix] Fix print logs with
ASSERT
level. - [Fix] Fix a crash during trying to get
startServiceLog
from the database after upgrading App Center SDK from the old versions.
- [Fix] Fix missing required flag on Android 31 API for
PendingIntent
which is used for starting the process of installing a new release. - [Known issue] After the first in-app update App Center doesn't indicate the next releases. Use a workaround to avoid this issue.
- [Breaking change] Remove
AppCenter.setCustomProperties
API. - [Fix] Remove
android.support.test.InstrumentationRegistry
string that caused an error when checking applications on availability of android support libraries. - [Feature] Add
AppCenter.setCountryCode(string)
API to set the country code manually.
- [Feature] Increase the interval between sending logs from 3 to 6 seconds for the backend load optimization.
- [Feature] Add
Analytics.enableManualSessionTracker
andAnalytics.startSession
APIs for tracking session manually. - [Feature] Add
AppCenter.setLogger
API to set custom logger.
- [Feature] Remove the download manager task if the download doesn't start within 10 seconds.
- [Feature] Replace installing a new release using the deprecated intent action ACTION_INSTALL_PACKAGE with the
PackageInstaller
API. - [Feature] Add sumcheck on the downloaded file before starting the install process.
- [Fix] Fix a crash after discarding the installation if the download of a new release was interrupted in the previous application start and resumed in the current one.
- [Feature] Add
Distribute.addStores(stores)
API for adding local stores or installers which should allow in-app updates. - [Feature] Improved
AES
token encryption algorithm usingEncrypt-then-MAC
data authentication approach.
- [Fix] Fix a rare deadlock case when a new version starts downloading and at the same moment the download status is checked.
- [Fix] Fix passing pending intent flag for a completed download notification on Android lower then 23 API.
- [Fix] Remove old support libraries for compatibility with apps without enabled Jetifier tool.
- [Feature] Add a
AppCenter.setNetworkRequestsAllowed(bool)
API to block any network requests without disabling the SDK.
- [Fix] Fix crash during downloading a new release when
minifyEnabled
settings istrue
. - [Fix] Add a missing tag
android:exported
to the manifest required for Android 12.
- [Fix] Fix
onNoReleaseAvailable
callback signature.
- [Fix] Fix
NullPointerException
occurring when settings dialog was intended to be shown, but there is no foreground activity at that moment. - [Fix] Fix a crash when download manager application was disabled.
- [Fix] Fix showing the title in the push notification while downloading a new release.
- [Fix] Fix formatting of stack trace in the
ErrorReport
. - [Fix] Fix setting
userId
value in NDK crashes before sending.
- [Fix] Fix removing throwable files after rewriting error logs due to small database size.
- [Feature] Add
onNoReleaseAvailable
callback to DistributeListener. - [Fix] Fix a crash when the app is trying to open the system settings screen from the background.
- [Fix] Fix browser opening when using a private distribution group on Android 11.
- [Breaking change] Bumping the minimum Android SDK version to 21 API level (Android 5.0), because old Android versions do not support root certificate authority used by App Center and would not get CA certificates updates anymore.
- [Feature] Convert the
saveUncaughtException
method to public and return error log identifier when calling it.
App Center Push has been removed from the SDK and will be retired on December 31st, 2020. As an alternative to App Center Push, we recommend you migrate to Azure Notification Hubs by following the Push Migration Guide.
- [Fix] Fix sending attachments with a
null
text value.
- [Fix] Fix an
IncorrectContextUseViolation
warning when calculating screen size on Android 11. - [Fix] All SQL commands used in SDK are presented as raw strings to avoid any possible static analyzer's SQL injection false alarms.
- [Fix] Fix Distribute can't get updates for Realme devices which use Realme UI.
App Center Distribute Play is a package with stubbed APIs for Distribute module to avoid Google Play flagging the application for malicious behavior. It must be used only for build variants which are going to be published on Google Play. See the public documentation for more details about this change.
- [Fix] Fix possible delays in UI thread when queueing a large number of events.
- [Fix] Fix checking updates when application switches from background to foreground if the SDK was started after
onCreate
callback.
- [Fix] Remove the multiple attachments warning as that is now supported by the portal.
- [Fix] Change minidump filter to use file extension instead of name.
- [Fix] Fix removing minidump files when the sending crash report was discarded.
- [Feature] Automatically check for update when application switches from background to foreground (unless automatic checks are disabled).
- [Fix] Fix checking for updates after disabling the Distribute module while downloading the release.
- [Feature] Add a
disableAutomaticCheckForUpdate
API that needs to be called before SDK start in order to turn off automatic check for update. - [Feature] Add a
checkForUpdate
API to manually check for update. - [Fix] Fix not checking updates on public track if it was ignored on error while initializing in-app update for private track.
App Center Auth is retired and has been removed from the SDK.
App Center Data is retired and has been removed from the SDK.
- [Fix] Fix infinite recursion when handling encryption errors.
- [Fix] Fix incorrect app version when an NDK crash is sent after updating the app.
- [Behavior change] Change the path to the minidump directory to use a subfolder in which the current contextual data (device information, etc.) is saved along with the .dmp file.
- [Feature] Add
setUpdateTrack
(andgetUpdateTrack
) method to be able to explicitly set eitherUpdateTrack.PRIVATE
orUpdateTrack.PUBLIC
update track. By default, a public distribution group is used. Breaking change: To allow users to access releases of private groups you now need to migrate your application to callDistribute.setUpdateTrack(UpdateTrack.PRIVATE)
before the SDK start. Please read the documentation for more details. - [Fix] Avoid opening browser to check for sign-in information after receiving an SSL error while checking for app updates (which often happens when using a public WIFI).
- [Fix] When in-app update permissions become invalid and need to open browser again, updates are no longer postponed after sign-in (if user previously selected the action to postpone for a day).
- [Fix] Fix a possible deadlock when activity resumes during background operation for some
Distribute
public APIs likeDistribute.isEnabled()
.
- [Fix] Validate error attachment size to avoid server error or out of memory issues (using the documented limit which is 7MB).
- [Feature] Add the
Crash.trackError
method to send handled errors (with optional properties and attachments).
- [Fix] Fix an in-app update caching issue, where the same version was installed constantly after the 1st successful update (or also if the download was canceled).
- [Fix] Fix a crash and improve logging when downloading an update fails on Android 5+.
- [Behavior change] Deprecate and remove insecure implementation of
ErrorReport.getThrowable()
, which now always returnsnull
. Use the newErrorReport.getStackTrace()
as an alternative.
- [Fix] Reduced retries on Data-related operations to fail fast and avoid the perception of calls "hanging".
- [Fix] Downloading in-app update APK file has been failing on Android 4.x since TLS 1.2 has been enforced early September. The file is now downloaded using HTTPS direct connection when running on Android 4 instead of relying on system's download manager.
- [Breaking change] If your
minSdkVersion
is lower than19
, Android requires theWRITE_EXTERNAL_STORAGE
permission to store new downloaded updates. Please refer to the updated documentation site for detailed instructions. This is related to the download fix.
- [Feature] App Center Auth logging now includes MSAL logs.
- [Fix] Redirect URIs are now hidden in logs.
- [Feature] Catch "low memory warning" and provide the API to check if it has happened in last session:
Crashes.hasReceivedMemoryWarningInLastSession()
.
- [Fix] Fix confusing information log about the availability of the Firebase SDK.
- [Fix] Fix sending the push installation log after delayed start.
- [Fix] Remove unsecure UUID fallback when UUID generation theorically fails, in reality it never fails.
- [Fix] Check for running in App Center Test will now work when using AndroidX instead of the support library.
- [Feature] Add
AppCenter.isRunningInAppCenterTestCloud
to provide method to check if the application is running in Test Cloud.
- [Fix] The in memory cache of error reports is now cleared when disabling Crashes.
- [Feature] Add support for offline list of documents.
- [Feature] Change the default time-to-live (TTL) from 1 day to infinite (never expire).
- [Fix] Fix
isExpired
method inLocalDocument
for incorrect handling of theTimeToLive.INFINITE
value. - [Feature] Add
ReadOptions
parameter to thelist
API. - [Feature] Serialize
null
document values. - [Fix] Fix declaring
gson
as a build time dependency instead of runtime. - [Fix] Allow null for
ReadOptions
andWriteOptions
parameters.
- [Fix] Handle incorrect usage of
AppCenter.setLogUrl
API to provide readable error message. - [Fix] Fix decrypting values that have been stored for more than a year (such as the in-app update token).
- [Feature] Support setting latency of sending events via
Analytics.setTransmissionInterval
.
- [Feature] Expose the ID Token and Access Token (as raw JWT format) in the
UserInformation
object returned from the sign-in method. - [Fix] Fix missing proguard rules so that the app does not have to specify them.
- [Fix] Fix crash on silently refreshing token if initialization of MSAL fails.
- [Fix] Fix sign-in before start auth service never ends and blocks every next try.
- [Breaking change] The
UserInformation
class has been moved from theappcenter
module to theappcenter-auth
module and must now be imported asimport com.microsoft.appcenter.auth.UserInformation
.
- [Fix] Fix an issue where invalid characters in the document ID are accepted at creation time but causing errors while trying to read or delete the document. The characters are
#
,\
,/
,?
, and all whitespaces.
- [Fix] Fix a crash that could sometimes occur while processing native crash reports.
- [Feature] Add
Distribute.setEnabledForDebuggableBuild(boolean)
method to allow in-app updates in debuggable builds. - [Fix] Fix duplicate in-app update dialog when restarting (or switching) activity quickly after clicking download. Also fixes a crash when choosing "Ask me in a day" in the duplicate dialog.
- [Fix] Fix a crash that could occur when downloading the update with a customized dialog and then calling
Distribute.notifyUserConfirmation(UpdateAction.POSTPONE)
right after callingDistribute.notifyUserConfirmation(UpdateAction.UPDATE)
. - [Fix] Fix a crash that could occur while trying to open the browser on some devices.
- [Fix] Update Firebase dependency and AppCenter push logic to avoid a runtime issue with the latest Firebase messaging version 18.0.0.
Version 2 of the App Center SDK includes two new modules: Auth and Data.
App Center Auth is a cloud-based identity management service that enables developers to authenticate application users and manage user identities. The service integrates with other parts of App Center, enabling developers to leverage the user identity to view user data in other services and even send push notifications to users instead of individual devices.
The App Center Data service provides functionality enabling developers to persist app data in the cloud in both online and offline scenarios. This enables you to store and manage both user-specific data as well as data shared between users and across platforms.
- [Feature] After calling
Auth.signIn
, the next crashes are associated with anaccountId
corresponding to the signed in user. This is a different field than theuserId
set byAppCenter.setUserId
. CallingAuth.signOut
stops theaccountId
association for the next crashes.
- [Fix] Fix in-app updates not working on new Samsung devices.
- [Feature] After calling
Auth.signIn
, the push installation is associated to the signed in user with anaccountId
and can be pushed by using theaccountId
audience. This is a different field than theuserId
set byAppCenter.setUserId
. The push installation is also updated on callingAuth.signOut
to stop the association. - [Fix] Fix updating push installation when setting or unsetting the user identifier by calling
AppCenter.setUserId
.
- [Fix] Fix network connection state tracking issue, which prevented sending data in some restricted networks.
- [Fix] Fix possible deadlock on changing network connection state.
- [Fix] Fix in-app updates not working on devices using Xiaomi MIUI from versions 10 and above.
- [Fix] The SDK normally disables storing and sending logs when SQLite is failing instead of crashing the application. New SQLite APIs were introduced in version 1.9.0 and the new API exceptions were not caught, this is now fixed.
- [Fix] Fix exception if we receive deep link intent with setup failure before
onStart
. - [Fix] Fix checking updates for applications installed on corporate-owned single-use devices.
- [Fix] Fix TLS 1.2 configuration for some specific devices running API level <21. The bug did not affect all devices running older API levels, only some models/brands, and prevented any data from being sent.
- [Fix] Extend the current session instead of starting a new session when sending events from the background. Sessions are also no longer started in background by sending an event or a log from another service such as push, as a consequence the push registration information will be missing from crash events information.
- [Fix] Fix issue with forcing Chrome to open links when other browsers are the default.
- [Feature] Allow users to set userId that applies to crashes, error and push logs. This feature adds an API, but is not yet supported on the App Center backend.
- [Fix] Do not delete old logs when trying to add a log larger than the maximum storage capacity.
- [Fix] Fix error detection of
setMaxStorageSize
API if database uses custom page size. - [Fix] Fix minimum storage size verification to match minimum possible value.
- [Fix] Fix disabling logging of network state changes according to
AppCenter.getLogLevel
. - [Fix] Fix logs duplication on unstable network.
- [Fix] Fix a bug where crash data file could leak when the database is full.
- [Fix] Fix push foreground listener after re-enabling push service.
- [Feature] Add API to specify event persistence priority.
- [Fix] Preventing stack overflow crash while reading a huge throwable file.
- [Feature] Add a
setMaxStorageSize
API which allows setting a maximum size limit on the local SQLite storage. Previously, up to 300 logs were stored of any size. The default value is 10MB. - [Security] To enforce TLS 1.2 on all HTTPS connections the SDK makes, we are dropping support for API level 15 (which supports only TLS 1.0), the minimum SDK version thus becomes 16. Previous versions of the SDK were already using TLS 1.2 on API level 16+.
- [Bug fix] Fix validating and discarding
NaN
and infinite double values when callingsetCustomProperties
.
- [Feature] Add
pause
/resume
APIs which pause/resume sending Analytics logs to App Center. - [Feature] Add support for typed properties. Note that these APIs still convert properties back to strings on the App Center backend. More work is needed to store and display typed properties in the App Center portal. Using the new APIs now will enable future scenarios, but for now the behavior will be the same as it is for current event properties.
- [Feature] Preparation work for a future change in transmission protocol and endpoint for Analytics data. There is no impact on your current workflow when using App Center.
- [Fix] Fix a bug where some initialize operations were executed twice.
- [Fix] Fix a bug where device information could be null when reading the error report client side.
- [Fix] Fix a crash that could happen when starting the application.
- [Feature] Preparation work for a future change in transmission protocol and endpoint for Analytics data. There is no impact on your current workflow when using App Center.
- [Feature] Preparation work for a future change in transmission protocol and endpoint for Analytics data. There is no impact on your current workflow when using App Center.
The Firebase messaging SDK is now a dependency of the App Center Push SDK to be able to support Android P and also prevent features to break after April 2019 based on this announcement.
You need to follow some migration steps after updating the SDK to actually use Firebase instead of the manual registration mechanism that we are providing. The non Firebase mechanism still works after updating the SDK but you will see a deprecation message, but this will not work on Android P devices until you migrate.
After updating the app to use Firebase, you will also no longer see duplicate notifications when uninstalling and reinstalling the app on the same device and user.
- [Feature] Preparation work for a future change in transmission protocol and endpoint for Analytics data. There is no impact on your current workflow when using App Center.
- [Improvement] Enable TLS 1.2 on API levels where it's supported but not enabled by default (API level 16-19, this became a default starting API level 20). Please note we still support Android API level 15 and it uses TLS 1.0.
- [Improvement] Gzip is used over HTTPS when request size is larger than 1.4KB.
- [Fix] Fix a crash when disabling a module at the same time logs are sent.
- [Fix] Fix pretty print JSON in Android P when verbose logging is enabled.
- [Feature] Enable reporting C/C++ crashes when Google Breakpad is used in the application (Google Breakpad is not distributed by App Center). Please note that there is still work to be done to stabilize this feature in App Center. Stay tuned with our Changelog to get updates on NDK crashes support.
- [Fix] Fix a crash when network state changes at same time as SDK initializing.
- [Fix] Fix crashes when trying to detect we run on instrumented test environment.
- [Fix] Fix a deadlock when setting wrapper SDK information or setting log url while other channel operations performed such as when Crashes is starting.
- [Fix] Fix reporting crash when process name cannot be determined.
- [Fix] Fix notification text being truncated when large and now supports multi-line.
- [Improvement] Analytics now allows a maximum of 20 properties by event, each property key and value length can be up to 125 characters long.
- [Feature] Configure default notification icon and color using meta-data.
- [Fix] Fixes the google.ttl field being considered custom data.
- [Fix] Fixes push notification not displayed if Google Play Services too old on the device.
- [Fix] Don't crash the application when invalid notification color is pushed.
- [Feature] Add Session statistics for distribution group.
- [Feature] Use tester app to enable in-app updates if it's installed.
- [Feature] Add reporting of downloads for in-app update.
- [Improvement] Add distribution group to all logs that are sent.
- [Fix] Fix events association with crashes.
- [Fix] Fix network state detection.
- [Fix] Don't retry sending logs on HTTP error 429.
- [Fix] Some logs were not sent or discarded correctly on AppCenter enabled/disabled state changes.
- [Improvement] Increase attachment file size limit from 1.5MB to 7MB.
- [Fix] Fix a crash on Android 8.0 (exact version, this does not happen in 8.1) where having an adaptive icon (like launcher icon) would cause crash of the entire system U.I. on push. On Android 8.0 we replace the adaptive icon by a placeholder icon (1 black pixel) to avoid the crash, starting Android 8.1 the adaptive icon is displayed without fallback.
- [Feature] SDK modules can be skipped from being started automatically without code modification during instrumented tests. The SDK now reads
APP_CENTER_DISABLE
variable fromInstrumentationRegistry.getArguments()
and will not start any module if the value isAll
or will just skip starting the services described by a comma separated list of the services to exclude from being started. Valid service names for the variable areAnalytics
,Crashes
,Distribute
orPush
. The modules are always started if instrumentation context is not available (like when you build and launch your application normally).
- [Fix] Fix a crash when sending an attachment larger than 1.4MB. The SDK is still unable to send large attachments in this release but now it does not crash anymore. An error log is printed instead.
- [Improvement] Allow wrapper SDKs such as Xamarin to report a managed exception (for example for .NET stack traces) while still saving the exception for client side report as Java Throwable (so the original exception can be read from client side after restart by using the SDK).
- [Improvement] Updated translations.
- [Improvement] Users with app versions that still use Mobile Center can directly upgrade to versions that use this version of App Center, without the need to reinstall.
-
[Improvement] The Firebase SDK dependency is now optional. If Firebase SDK is not available at runtime, the push registers and generate notifications using only App Center SDK. The Firebase application and servers are still used whether the Firebase SDK is installed into the application or not.
- The SDK is still compatible with
apply plugin: 'com.google.gms.google-services'
andgoogle-services.json
, but if you don't use Firebase besides App Center, you can replace that plugin and the json file by a call toPush.setSenderId
beforeAppCenter.start
. The Sender ID can be found on the Cloud Messaging tab of your Firebase console project settings (same place as the Server Key). - The SDK is still compatible with
"com.google.firebase:firebase-messaging:$version"
lines. But if you don't use Firebase besides App Center, you can now remove these dependencies.
- The SDK is still compatible with
This version contains breaking changes due to the renaming from Mobile Center to App Center. In the unlikely event there was data on the device not sent prior to the update, that data will be discarded.
- The SDK has been rebranded from Mobile Center to App Center. Please follow the migration guide to update from an earlier version of Mobile Center SDK.
- [Fix] The view release notes button was not correctly hidden when no release notes were available.
- [Fix] Added missing translations for failed to enable in-app update dialog title and buttons. The main message however is not localized yet as it's extracted from a REST API text response.
- [Known issue] When updating an application that uses Mobile Center SDK using the in-app update dialog to an application version that uses AppCenter SDK version, the browser will be re-opened and will fail. User will need to re-install the application from the App Center portal.
- Localize in-app update texts, see this folder for a list of supported languages.
- When in-app updates are disabled because of side-loading, a new dialog will inform user instead of being stuck on a web page. Dialog actions offer ignoring in-app updates or following a link to re-install from the portal. This new dialog has texts that are not localized yet.
- Fix a bug where a failed version check could trigger reopening the browser in failure to enable in-app updates.
- Add
MobileCenter.getSdkVersion()
API to check Mobile Center SDK version at runtime.
-
[Feature] New feature that allows to share your applications to anyone with public link.
-
[MISC] When you update to this release, there will be potential data loss if an application installed with previous versions of MobileCenter SDK on devices that has pending logs which are not sent to server yet at the time of the application is being updated.
- Truncate event name and properties automatically instead of skipping them.
- Russian localization for in-app update texts.
Fix a regression in in-app updates from version 0.11.0 where we could show unknown sources dialog on Android 8 if targeting older versions and unknown sources enabled.
Actually in that scenario, we can't detect if unknown sources are enabled and will just skip that dialog, system dialog will be shown at install time instead.
This release focuses on fixing strict mode issues (including Android 8 ones).
Since strict mode checks if you spend time reading storage on U.I. thread we had to make the following APIs asynchronous and is thus a breaking change:
{AnyClass}.isEnabled()
MobileCenter.getInstallId()
Crashes.hasCrashedInLastSession()
Those APIs returns a MobileCenterFuture
object that is used to monitor the result, you can either use get()
or thenAccept(MobileCenterConsumer)
to either block or get the result via callback.
For symmetry purpose, {AnyClass}.setEnabled(boolean)
also return a MobileCenterFuture
object but most users don't need to monitor the result of the operation (consistency of calls sequence is guaranteed even if you don't wait for the change to be persisted).
Also Crashes.getLastSessionCrashReport
was already asynchronous but signature changed to use the new MobileCenterFuture
object.
MobileCenterFuture
is similar to Java 8 CompletableFuture
but works on Java 7 on any API level and has limited number of methods and does not throw exceptions (and executes the thenAccept
callback in the U.I. thread).
- Fix a bug on Android 8 where network state could be detected as disconnected while network is available.
- Fix showing unknown sources warning dialog on Distribute on Android 8.
- Update Firebase SDK dependencies in Push to 11.0.2 to avoid conflict with Firebase recent getting started instructions.
- Update internal crash code to make it more compatible with Xamarin.Android and possibly future wrapper SDKs.
- Add
MobileCenter.setCustomProperties
API to segment audiences. - Fix push and distribute notifications on Android 8 when targeting API level 26.
- Add a new method
Push.checkLaunchedFromNotification
to use inonNewIntent
iflaunchMode
of the activity is not standard to fix push listener when clicking on background push and recycling the activity. - Fix crashing when calling
{AnyService}.isEnabled()
/ orsetEnabled
beforeMobileCenter.start
, now always return false before start. - Fix a bug where 2 sessions could be reported at once when resuming from background.
Add getErrorAttachments
callback to CrashesListener.
Fix a memory leak in HTTP client.
- Add network state debug logs.
- Add push module relying on Firebase to push notifications to the users of your application.
This version contains bug fixes, improvements and new features.
-
[Misc] Events have some validation and you will see the following in logs:
-
An error if the event name is null, empty or longer than 256 characters (event is not sent in that case).
-
A warning for invalid event properties (the event is sent but without invalid properties):
- More than 5 properties per event (in that case we send only 5 of them and log warnings).
- Property key null, empty or longer than 64 characters.
- Property value null or longer than 64 characters.
-
- [Feature] New Distribute listener to provide an ability of in-app update customization.
- [Feature] New default update dialog with release notes view.
- [Bug fix] Fix a crash when failing to download a mandatory update while showing progress dialog.
- [Bug fix] Fix duplicate update dialog when a new release is detected after restarting and processing the current update.
- [Bug fix] Fix a crash that could happen when application going to background while progress dialog on mandatory update download was displayed.
- [Bug fix] Fix a bug where progress dialog could be stuck at 100%.
- [Improvement] Offline cache for update dialog.
- [Feature] New service called
Distribute
to enable in-app updates for your Mobile Center builds. - [Improvement] The improvement to wait up to 5 seconds for flushing logs to storage on crash is now active even if the Crashes feature is not used.
- [Bug fix]
401
HTTP errors (caused by invalidappSecret
) were retried as a recoverable error. They are now considered unrecoverable. - [Misc] A new log is sent to server when
MobileCenter
is started with the list ofMobileCenter
services that are used in the application. - [Misc] Renamed
setServerUrl
tosetLogUrl
.
Breaking change: Remove Crashes APIs related to attachments as it's not supported by backend yet.
- Most of the crash processing is now happening on a background thread when the application restarts, solving multiple strict mode policy issues.
- As a consequence, the
getLastSessionCrashReport
is now an asynchronous function with a callback (breaking change).
- As a consequence, the
- Fix Proguard configuration inside the main AAR file, no Proguard configuration required on application side.
- Fix a race condition crash inside HTTP channel management when counting pending logs.
- Fix other race conditions in HTTP channel management that could lead to inconsistent behavior.
- Fix crash when the default ASyncTask thread pool is saturated when sending HTTP logs (now retries later).
StackOverflowError
throwable object for client side inspection is now truncated to256
frames.- App secret is now obfuscated in logs when setting verbose log level.
- Threads where crash callbacks are executed is now documented with the support annotations and the behavior is now consistent (either always UI thread or always worker thread depending on the callback).
- Fix a bug where
CrashesListener.onBeforeSending
orCrashesListener.onSendingFailed
could not be called. - Truncate
StackOverFlowError
to 256 frames (128 at start and 128 at end) to allow them being reported. - Retry more https errors due to transient ssl failures when the client or server connectivity is bad.
- On crash, wait 5 seconds for local storage to flush other pending events to disk so that they are not lost.
- Fix empty text attachment being sent along with a binary only attachment.
- Fix logs when enabling or disabling MobileCenter.
- Fix debug logs for user confirmation callbacks.
- Add possibility to add raw stack trace for Xamarin.
- Fix/improve SDK logging.
- Don't validate appSecret against UUID format anymore (server validates appSecret).
- Allow wrapper SDK such as Xamarin to store additional crash data file.
- Rename
initialize
toconfigure
inMobileCenter
methods and logs. - Fix null pointer exception when disabling a service during an HTTP call.
- Rename Sonoma to MobileCenter.
- Fix a bug that caused crashes to be sent twice if calling Crashes.setEnabled(true) while already enabled.
- New logs in assert level for successful SDK initialization or failed to initialize.
- Allow wrapper SDKs such as Xamarin to label an exception as being generated by the wrapper SDK.
- Remove trackPage/trackException from public APIs and disable automatic page tracking.
- Add assert level logs and a new NONE constant to disable all logs included assert ones.
Refactoring to solve Xamarin bindings issues.
- start_session is sent without sending any page or event
- start_session is sent immediately if re-enabling analytics module while in foreground (only if core was enabled though)
- Calls to SQLite are now asynchronous.
- Fix corner cases in new session detection, especially for single activity applications.
First release of the Sonoma SDK for Android.