A Sentry SDK for Java, Android and other JVM languages.

Overview


Bad software is everywhere, and we're tired of it. Sentry is on a mission to help developers write better software faster, so we can get back to enjoying technology. If you want to join us Check out our open positions

Sentry SDK for Java and Android

GH Workflow codecov Discord Chat

Packages Maven Central Android API
sentry-android Maven Central 16
sentry-android-core Maven Central 14
sentry-android-ndk Maven Central 16
sentry-android-okhttp Maven Central 21
sentry-android-timber Maven Central 14
sentry-android-fragment Maven Central 14
sentry-apache-http-client-5 Maven Central
sentry Maven Central 14
sentry-jul Maven Central
sentry-jdbc Maven Central
sentry-apollo Maven Central 14
sentry-kotlin-extensions Maven Central 14
sentry-servlet Maven Central
sentry-spring-boot-starter Maven Central
sentry-spring Maven Central
sentry-logback Maven Central
sentry-log4j2 Maven Central
sentry-bom Maven Central
sentry-graphql Maven Central
sentry-openfeign Maven Central

Useful links and docs

Current Javadocs generated from source code.

Java SDK version 1.x can still be found here.

Migration page from sentry-android 1.x and 2.x to sentry-android 4.x.

Migration page from sentry 1.x to sentry 4.x.

Releases from sentry-android 2.x and its changelogs.

Sentry Android Gradle Plugin repo sits on another repo

Blog posts

Sentry's response to Log4j vulnerability CVE-2021-44228

Mobile Vitals - Four Metrics Every Mobile Developer Should Care About.

Supporting Native Android Libraries Loaded From APKs.

A Sanity Listicle for Mobile Developers.

Performance Monitoring for Android Applications.

Close the Loop with User Feedback.

How to use Sentry Attachments with Mobile Applications.

Adding Native support to our Android SDK.

New Android SDK How-to.

Samples

Sample App. with Sentry Android SDK and Sentry Gradle Plugin.

Sample App. with Sentry Java SDK.

Sample for Development.

Development

This repository includes sentry-native as a git submodule. To build against sentry-native checked-out elsewhere in your file system, create a symlink sentry-android-ndk/sentry-native-local that points to your sentry-native directory. For example, if you had sentry-native checked-out in a sibling directory to this repo:

ln -s ../../sentry-native sentry-android-ndk/sentry-native-local

which will be picked up by gradle and used instead of the git submodule. This directory is also included in .gitignore not to be shown as pending changes.

Sentry Self Hosted Compatibility

Since version 3.0.0 of this SDK, Sentry version >= v20.6.0 is required. This only applies to on-premise Sentry, if you are using sentry.io no action is needed.

Resources

  • Java Documentation
  • Android Documentation
  • Forum
  • Discord Chat
  • Stack Overflow
  • Code of Conduct
  • Twitter Follow
Comments
  • Android 11 + targetSdkVersion 30 crashes Sentry on start

    Android 11 + targetSdkVersion 30 crashes Sentry on start

    Platform:

    • [x] Android, targetSdkVersion 30
    • [x] Java
    • [ ] Kotlin
    • [ ] NDK
    • [ ] React-Native

    IDE:

    • [x] Android Studio
    • [ ] IntelliJ
    • [ ] Other

    The version of sentry-android: 2.3.0(at least) - master


    I have the following issue:

    When I set the targetSdkVersion to 30 for my app and launch it on an Android 11 device (my Pixel 4XL), the app crashes immediately.

    Steps to reproduce:

    1. Clone the sentry-android repository
    2. Change the example app to use targetSdkVersion 30.
    diff --git a/sentry-samples/sentry-samples-android/build.gradle.kts b/sentry-samples/sentry-samples-android/build.gradle.kts
    index 5c29345..d299d1b 100644
    --- a/sentry-samples/sentry-samples-android/build.gradle.kts
    +++ b/sentry-samples/sentry-samples-android/build.gradle.kts
    @@ -10,7 +10,7 @@ android {
         defaultConfig {
             applicationId = "io.sentry.samples.android"
             minSdkVersion(Config.Android.minSdkVersionNdk)
    -        targetSdkVersion(Config.Android.targetSdkVersion)
    +        targetSdkVersion(30)
             versionCode = 2
             versionName = "1.1.0"
    
    1. launch sentry-samples-android

    Actual result:

    • Immediate crash
                libc  F  Pointer tag for 0x79f0abdc30 was truncated.
              Sentry  D  Processing dir. /data/user/0/io.sentry.samples.android/cache/sentry/sessions
                libc  F  Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 15999 (samples.android), pid 15999 (samples.android)
              Sentry  D  Processing 6 items from cache dir /data/user/0/io.sentry.samples.android/cache/sentry/sessions
                      D  Processing file: /data/user/0/io.sentry.samples.android/cache/sentry/sessions/f146b6e6-91af-4a2f-a08c-014613f5e594.envelope
                      D  Processing Envelope with 1 item(s)
                      D  Captured Envelope is already cached
                      D  Item 1 is being captured.
                      D  Going to wait flush 1 item.
    TetheringManager  I  registerTetheringEventCallback:io.sentry.samples.android
               DEBUG  F  #00 pc 000000000004de4c  /apex/com.android.runtime/lib64/bionic/libc.so (abort+164) (BuildId: 03452a4a418e14ff93948f26561eace6)
                      F  getsentry/sentry-android#1 pc 000000000003bb34  /apex/com.android.runtime/lib64/bionic/libc.so (free+96) (BuildId: 03452a4a418e14ff93948f26561eace6)
                      F  getsentry/sentry-android#2 pc 00000000000781a8  /data/app/~~gQctd6Q5azmrHpqfGRaWvQ==/io.sentry.samples.android-IaNp2cunocnQXp3s03mjng==/lib/arm64/libsentry.so (sentry_f
                         ree+36) (BuildId: a8252e0bb65f23db1c6420f10a30b2f3b1477309)
                      F  getsentry/sentry-android#3 pc 0000000000085880  /data/app/~~gQctd6Q5azmrHpqfGRaWvQ==/io.sentry.samples.android-IaNp2cunocnQXp3s03mjng==/lib/arm64/libsentry.so (BuildId:
                          a8252e0bb65f23db1c6420f10a30b2f3b1477309)
                      F  getsentry/sentry-android#4 pc 0000000000085710  /data/app/~~gQctd6Q5azmrHpqfGRaWvQ==/io.sentry.samples.android-IaNp2cunocnQXp3s03mjng==/lib/arm64/libsentry.so (sentry_v
                         alue_decref+92) (BuildId: a8252e0bb65f23db1c6420f10a30b2f3b1477309)
                      F  getsentry/sentry-android#5 pc 000000000007f038  /data/app/~~gQctd6Q5azmrHpqfGRaWvQ==/io.sentry.samples.android-IaNp2cunocnQXp3s03mjng==/lib/arm64/libsentry.so (BuildId:
                          a8252e0bb65f23db1c6420f10a30b2f3b1477309)
    

    Expected result:

    • No crash
    bug Platform: Android NDK 
    opened by SalvatoreT 49
  • Task :persistSentryProguardUuidsForReleaseArm64-v8a-release FAILED (AS:3.3 ABP:3.3.0 Gradle:4.10.1 sentry-android-gradle-plugin:1.7.16)

    Task :persistSentryProguardUuidsForReleaseArm64-v8a-release FAILED (AS:3.3 ABP:3.3.0 Gradle:4.10.1 sentry-android-gradle-plugin:1.7.16)

    Project was working fine with sentry plugin before upgrade to AS 3.3 and the matching dev tools.

    Now I have more build variants than just release/debug which I had before.

    When I build a release version of the APK I get "Task :persistSentryProguardUuidsForReleaseArm64-v8a-release FAILED". The plugin is trying to run command:

    "[user]\\AppData\\Local\\Temp\\.sentry-cli8452420388174734644.exe" "upload-proguard" "--android-manifest" "[project_root]\\build\\intermediates\\merged_manifests\\release\\AndroidManifest.xml" "--write-properties" "[project_root]\\build\\intermediates\\merged_assets\\release\\mergeReleaseAssets\\out/sentry-debug-meta.properties" "[project_root]\\build\\outputs\\mapping\\release\\mapping.txt"
    

    but there is no "[project_root]\\build\\intermediates\\merged_manifests\\release\\AndroidManifest.xml", instead there is "[project_root]\\build\\intermediates\\merged_manifests\\release\\arm64-v8a\\AndroidManifest.xml". The task fails with "error: The system cannot find the file specified. (os error 2)".

    I am running the build on Windows 10.

    opened by ayavilevich 46
  • Exception cause hierarchy seems to be reversed on Android

    Exception cause hierarchy seems to be reversed on Android

    1. https://sentry.io/recharge/consumer-android/issues/293914847/ (using com.joshdholtz.sentry:sentry-android:1.6.0)
    2. https://sentry.io/recharge/consumer-android/issues/293913146/ (using io.sentry:sentry-android:1.0.0)

    Note that the message in #2 is a red herring, it's the wrapping exception's message which is almost never the useful one. #1 is correctly showing the root cause exception type/message.

    Platform: Android 
    opened by edenman 46
  • Android proguard mapping file - Error: Missing uploaded file

    Android proguard mapping file - Error: Missing uploaded file

    [INFO] sentry_cli::api request POST https://sentry.io/api/0/projects/OrgName/ProjectName/files/dsyms/ [INFO] sentry_cli::api using token authentication [INFO] sentry_cli::api sending form data [INFO] sentry_cli::api > POST /api/0/projects/OrgName/ProjectName/files/dsyms/ HTTP/1.1 [INFO] sentry_cli::api > Host: sentry.io [INFO] sentry_cli::api > Accept: / [INFO] sentry_cli::api > Connection: TE [INFO] sentry_cli::api > TE: gzip [INFO] sentry_cli::api > User-Agent: sentry-cli/1.35.5 [INFO] sentry_cli::api > Authorization: Bearer a57d5458*** [INFO] sentry_cli::api > Content-Length: 228 [INFO] sentry_cli::api > Content-Type: multipart/form-data; boundary=------------------------b1d8f431c86402e9 [INFO] sentry_cli::api < HTTP/1.1 400 BAD REQUEST [INFO] sentry_cli::api < Server: nginx [INFO] sentry_cli::api < Date: Fri, 05 Oct 2018 23:32:07 GMT [INFO] sentry_cli::api < Content-Type: application/json [INFO] sentry_cli::api < Content-Length: 35 [INFO] sentry_cli::api < Connection: keep-alive [INFO] sentry_cli::api < X-XSS-Protection: 1; mode=block [INFO] sentry_cli::api < Content-Language: en [INFO] sentry_cli::api < X-Content-Type-Options: nosniff [INFO] sentry_cli::api < Vary: Accept-Language, Cookie [INFO] sentry_cli::api < Allow: GET, POST, HEAD, OPTIONS [INFO] sentry_cli::api < X-Frame-Options: deny [INFO] sentry_cli::api < X-Served-By: web-17b74f97 [INFO] sentry_cli::api < Strict-Transport-Security: max-age=31536000; includeSubDomains; preload [INFO] sentry_cli::api response: 400 [INFO] sentry_cli::api body: {"detail": "Missing uploaded file"} error: API request failed caused by: sentry reported an error: Missing uploaded file (http status: 400)

    Properties file: log.level=debug defaults.project=ProjectName defaults.org=OrgName auth.token=Token

    (values seem ok here, not sure what can or cant publish)

    proguard file: -keepattributes LineNumberTable,SourceFile -dontwarn org.slf4j.** -dontwarn javax.** -keep class io.sentry.event.Event { *; }

    Help plz.

    opened by einschneidend 45
  • Unable to deobfuscate stack trace even when mappings.txt is uploaded

    Unable to deobfuscate stack trace even when mappings.txt is uploaded

    Hello, I am using latest version 1.7.3 gradle plugin with gradle version 4.9. When I run assembleRelease task my build finishes successfully. However when my app crashes I still see obfuscated stack trace. How could I resolve this? Is there any way that I could view my uploaded mappings.txt file or at least verify that it's really there? Logs:

    > Task :app:persistSentryProguardUuidsForReleaseRelease
    > compressing mappings
    > uploading mappings
    > Uploaded a total of 1 new mapping files
    Newly uploaded debug symbols:
     4fcc9d17-473e-5bd5-b61b-f51608f43daf
    
    opened by UgVaDevLabs 41
  • Deprecation warning in Android Studio 3.3

    Deprecation warning in Android Studio 3.3

    Using version 1.7.16 of sentry-android-gradle-plugin, after a gradle sync, this warning appears:

    WARNING: API 'variant.getMergeAssets()' is obsolete and has been replaced with 'variant.getMergeAssetsProvider()'.
    It will be removed at the end of 2019.
    For more information, see https://d.android.com/r/tools/task-configuration-avoidance.
    To determine what is calling variant.getMergeAssets(), use -Pandroid.debug.obsoleteApi=true on the command line to display a stack trace.
    Affected Modules: app
    
    opened by Myvillithdar 32
  • Proguard support

    Proguard support

    Just taking public notes here. The work will actually span multiple repos.

    My understanding is we need (roughly):

    • A way for users to upload the Proguard mapping files when they do a release (part of sentry-cli, and a Gradle plugin that uses it)
    • Support for Proguard processing in Sentry, which was started here but has been blocked while some reprocessing PRs were finished

    I'm not sure what else is necessary yet. Proguard is nice in that the mapping files are generated locally when you do a build, so I don't think we need to do any of the difficult stuff we do for iOS as far as chasing down symbol files on someone else's server...

    @mitsuhiko is the real expert on Sentry (re-)processing and mobile so maybe he can chime in here.

    opened by bretthoerner 32
  • Uncaught exceptions (crashes) aren't sent in time

    Uncaught exceptions (crashes) aren't sent in time

    Overview

    Typically, crash reporters will persist crash data in the event it doesn't get sent immediately, e.g. sending crash events the next time a process is run. raven-java doesn't appear to persist the data anywhere, so uncaught exceptions cannot be reported.

    Steps to reproduce

    1. Add raven-java to an Android project
    2. Call Raven.sendException inside Java's uncaught exception handler*
    3. Raise a RuntimeException (or other exception) outside of a try/catch block

    * For example:

    Thread.getDefaultUncaughtExceptionHandler();
    Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
      public void uncaughtException(Thread t, Throwable e) {
        Log.e("An uncaught exception occurred: " + e);
        Raven.sendException(e);
      }
    });
    

    Expected results

    Log is emitted immediately, and an event is sent to Sentry the next time the app is run.

    Actual results

    Log is immediately sent, but the Sentry Event is never sent due to the app being terminated before transmission completes. Is there another way to configure Sentry that I'm missing?

    Proposed solution

    Store events in the circular FIFO queue prior to transmission. Remove them as they are sent, but in the event of an uncaught exception, serialize the queue to some configured path on disk. When Raven is initialized, it should attempt to restore the queue from data on disk at the configured location.

    opened by bgerstle 31
  • Gradle Plugin Not handling flavors/dimensions properly

    Gradle Plugin Not handling flavors/dimensions properly

    When you have multiple flavors/dimensions in the project, the sentry.properties file does not work when it is placed in a folder with a combination of flavors from different dimensions.

    CC: @justacodefan

    bug 
    opened by nicusorflorin 30
  • sentry integration with spring webflux

    sentry integration with spring webflux

    new spring boot starter module was added in #636. This is relying in spring boot 1.5.x release. My question is how sentry should be configured for apps who do not rely in servlet implementations I mean reactive apps.

    enhancement help wanted Spring 
    opened by eddumelendez 30
  • connection problem

    connection problem

    I try to use Sentry for the first time, i tried some basic exceptions errors but i cant see them on my project in Sentry. I get this error: io.sentry.connection.AsyncConnection : An exception occurred while sending the event to Sentry.

    and that is my simple code: package com.springBoot.springboot;

    import java.util.Arrays; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean;

    import io.sentry.Sentry;

    @SpringBootApplication public class Application {

    @Bean
    public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
    	return args -> {
    		Sentry.init("https://fbc0bfe9a3a24bb09dce61166386f8d8:[email protected]/233687");
    
    		try {
    			int[] arr = {1 , 2 , 3};
    			arr[4] = 10;
    			 System.out.println("Hello World");
    			
    		} catch (Exception e) {
    			Sentry.capture(e);
    		}
    	};
    }
    public static void main(String[] args) {
    	SpringApplication.run(Application.class, args);
    }
    

    }

    any help? Thanks

    opened by arielesc 29
  • Bump actions/setup-java from 2 to 3

    Bump actions/setup-java from 2 to 3

    Bumps actions/setup-java from 2 to 3.

    Release notes

    Sourced from actions/setup-java's releases.

    v3.0.0

    In scope of this release we changed version of the runtime Node.js for the setup-java action and updated package-lock.json file to v2.

    Breaking Changes

    With the update to Node 16 in #290, all scripts will now be run with Node 16 rather than Node 12.

    v2.5.0

    In scope of this pull request we add support for Microsoft Build of OpenJDK (actions/setup-java#252).

    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Setup-java
        uses: actions/setup-java@v2
        with:
          distribution: microsoft
          java-version: 11
    

    Supported distributions

    Currently, the following distributions are supported:

    Keyword Distribution Official site License
    temurin Eclipse Temurin Link Link
    zulu Zulu OpenJDK Link Link
    adopt or adopt-hotspot Adopt OpenJDK Hotspot Link Link
    adopt-openj9 Adopt OpenJDK OpenJ9 Link Link
    liberica Liberica JDK Link Link
    microsoft Microsoft Build of OpenJDK Link Link

    v2.4.0

    In scope of this pull request we add support for Liberica JDK (actions/setup-java#225).

    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Setup-java
        uses: actions/setup-java@v2
        with:
          distribution: liberica
          java-version: 11
    

    Supported distributions

    Currently, the following distributions are supported:

    Keyword Distribution Official site License
    zulu Zulu OpenJDK Link Link
    adopt or adopt-hotspot Adopt OpenJDK Hotspot Link Link
    adopt-openj9 Adopt OpenJDK OpenJ9 Link Link
    temurin Eclipse Temurin Link Link

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 1
  • Bump actions/checkout from 2 to 3

    Bump actions/checkout from 2 to 3

    Bumps actions/checkout from 2 to 3.

    Release notes

    Sourced from actions/checkout's releases.

    v3.0.0

    • Updated to the node16 runtime by default
      • This requires a minimum Actions Runner version of v2.285.0 to run, which is by default available in GHES 3.4 or later.

    v2.6.0

    What's Changed

    Full Changelog: https://github.com/actions/checkout/compare/v2.5.0...v2.6.0

    v2.5.0

    What's Changed

    Full Changelog: https://github.com/actions/checkout/compare/v2...v2.5.0

    v2.4.2

    What's Changed

    Full Changelog: https://github.com/actions/checkout/compare/v2...v2.4.2

    v2.4.1

    • Fixed an issue where checkout failed to run in container jobs due to the new git setting safe.directory

    v2.4.0

    • Convert SSH URLs like org-<ORG_ID>@github.com: to https://github.com/ - pr

    v2.3.5

    Update dependencies

    v2.3.4

    v2.3.3

    v2.3.2

    Add Third Party License Information to Dist Files

    v2.3.1

    Fix default branch resolution for .wiki and when using SSH

    ... (truncated)

    Changelog

    Sourced from actions/checkout's changelog.

    Changelog

    v3.1.0

    v3.0.2

    v3.0.1

    v3.0.0

    v2.3.1

    v2.3.0

    v2.2.0

    v2.1.1

    • Changes to support GHES (here and here)

    v2.1.0

    v2.0.0

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 1
  • Send transaction memory stats in profile payload

    Send transaction memory stats in profile payload

    :scroll: Description

    Added list of MemoryCollectionData to Android profiles payload as measurements

    :bulb: Motivation and Context

    We want to add more data to profiles, so we are including the memory statistics we get from transactions to profile payloads. Also, at the moment there's no easy way to send the data in the transaction, due to transaction metrics not supporting lists of data. We want to have some data and eventually show it in the Sentry dashboard. The quickest way is to send them in the profiles.

    :green_heart: How did you test it?

    Unit tests

    :pencil: Checklist

    • [X] I reviewed the submitted code
    • [X] I added tests to verify the changes
    • [ ] I updated the docs if needed
    • [X] No breaking changes

    :crystal_ball: Next steps

    We still need to align on the keys and units used in the profile measurements with cocoa and relay Also, I need to understand if we have to change the timestamp logic of memory usages, as profiles measurements requires nanoseconds relative to the profile start

    opened by stefanosiano 3
  • SDKs should not send tags by default but rather index them in snuba if it needs to be searchable

    SDKs should not send tags by default but rather index them in snuba if it needs to be searchable

    Description

    We should avoid setting tags when possible.

    See meta issue for more details: https://github.com/getsentry/team-mobile/issues/60

    I just checked Java/Android usage:

    Any tags set via SentryOptions.addContextTag() - but since they're custom values and empty by default I guess we can ignore those setTag("TimberTag", ...) -> link setSideLoadedInfo(...) -> link

    Platform: Android Platform: Java 
    opened by markushi 0
  • Add Android View Hierarchy support

    Add Android View Hierarchy support

    :scroll: Description

    Add an event processor which captures the View Hierarchy.

    :bulb: Motivation and Context

    https://github.com/getsentry/team-mobile/issues/64

    Some refactoring was required: Created at CurrentActivityIntegration which watches for activity lifecycle updates and updates the CurrentActivityHolder singleton - this was previously managed by the ScreenshotEventProcessor. Now both ScreenshotEventProcessor and ViewHierarchyEventProcessor use the CurrentActivityHolder to retrieve the current activity.

    Open issues:

    • [ ] https://github.com/getsentry/relay/issues/1704 needs fixed first before we can use the proper attachment_type

    :green_heart: How did you test it?

    Unit tests

    :pencil: Checklist

    • [X] I reviewed the submitted code
    • [X] I added tests to verify the changes
    • [ ] I updated the docs if needed
    • [X] No breaking changes

    :crystal_ball: Next steps

    opened by markushi 4
  • add time-to-full-display span to activity transactions

    add time-to-full-display span to activity transactions

    :scroll: Description

    added ttfd span added a FullyDrawnReporter instance to SentryAndroid added a new api SentryAndroid.reportFullyDrawn()

    :bulb: Motivation and Context

    We want to allow the user to report when the ui is fully loaded for them, e.g. after retrieving some data from some api call and fill their own ui

    :green_heart: How did you test it?

    Unit tests

    :pencil: Checklist

    • [ ] I reviewed the submitted code
    • [ ] I added tests to verify the changes
    • [ ] I updated the docs if needed
    • [ ] No breaking changes

    :crystal_ball: Next steps

    I have to add a unit test for SentryAndroid.reportFullyDrawn() An rfc has to be submitted about the new api

    opened by stefanosiano 2
Releases(6.11.0)
Owner
Sentry
Real-time crash reporting for your web apps, mobile apps, and games.
Sentry
☁ Tencent Cloud IM Server SDK in Java | 腾讯云 IM 服务端 SDK Java 版

Tencent Cloud IM Server SDK in Java The Tencent Cloud IM Server SDK for Java enables Java developers to easily work with Tencent Cloud IM. Requirement

Doocs 64 Dec 23, 2022
This project uses the artificial potential field method to realize the path planning of the robot, and completes the trajectory optimization through other settings. It can also be combined with laser SLAM, target recognition and other technologies for path planning.

FRCAutoDriver 项目说明 Project Instruction 本项目利用人工势场法,实现机器人的路径规划,并通过其他设置完成轨迹优化,还可以结合激光SLAM、目标识别等技术进行路径规划 This project uses the artificial potential field

ZhangzrJerry 2 Sep 9, 2022
Android Auto Apps Downloader (AAAD) is an app for Android Phones that downloads popular Android Auto 3rd party apps and installs them in the correct way to have them in Android Auto.

Android Auto Apps Downloader (AAAD) is an app for Android Phones that downloads popular Android Auto 3rd party apps and installs them in the correct way to have them in Android Auto.

Gabriele Rizzo 865 Jan 2, 2023
This is the official theme SDK for the FairPlayer Music Player for Android.

FairPlayer - Themes SDK This is the official theme SDK for the FairPlayer Music Player for Android. You can download the most recent version of FairPl

Mark Jivko 0 Jan 31, 2022
A demo of Rongcloud uniapp sdk integration for compiling debug-apk in Android Studio

Rongcloud-uniapp-sdk-demo A demo of Rongcloud uniapp sdk integration for compiling debug-apk in Android Studio 这是一个为了给uniapp在Android平台打出debug-apk的demo

Zongkui Guo 1 Oct 13, 2021
Ethereum blockchain-based e-portfolio management application built using Web3j API, java and solidity languages.

Web3j-Java-based e-Portfolio Manager Ethereum blockchain-based e-portfolio mangement application built using Web3j API, java and solidity languages. W

ibelab 6 Oct 1, 2022
Rock, paper, scissors- shoot!, in 10 programming languages

Rock Paper Scissors In 10 Programming Languages The classic "rock, paper, scissors- shoot!" game, implemented in 10 programming languages Language Lin

Dheirya Tyagi 3 Oct 8, 2022
React Native wrapper around Indy SDK Java and Objective-C wrappers.

React Native Indy SDK React Native Indy SDK wrapper. Installation with npm: $ npm install indy-sdk-react-native --save with Yarn: $ yarn add indy-sdk-

Hyperledger 21 Dec 5, 2022
Kryptokrona Java SDK for building decentralized private communication and payment systems.

Kryptokrona Java SDK Kryptokrona is a decentralized blockchain from the Nordic based on CryptoNote, which forms the basis for Monero, among others. Cr

null 22 Oct 31, 2022
Alibaba Cloud Dedicated KMS Transfer SDK for Java can help Java developers to migrate from the KMS keys to the Dedicated KMS keys.

Alibaba Cloud Dedicated KMS Transfer SDK for Java Alibaba Cloud Dedicated KMS Transfer SDK for Java can help Java developers to migrate from the KMS k

Alibaba Cloud 3 May 12, 2022
OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)

OpenAPI Generator Master (5.4.x): 6.0.x (6.0.x): ⭐ ⭐ ⭐ If you would like to contribute, please refer to guidelines and a list of open tasks. ⭐ ⭐ ⭐ ‼️

OpenAPI Tools 14.8k Dec 30, 2022
SDK java permettant de valider et qualifier un numéro de téléphone calédonien.

❔ phonenumber-validator SDK Java permettant de valider, qualifier un numéro de téléphone calédonien. ⬇️ Import de la dépendance publique Cette dépenda

OPT Nouvelle Caledonie 2 Oct 22, 2022
Java wrapper for Agones client SDK.

agones4j How to Use (Developers) Code final class Server { public static void main( final String[] args ) { final var sdk = new tr.com.in

Infumia LTD 6 Dec 15, 2022
A Java SDK for the ScreenshotOne.com API to take screenshots of any URL

jsdk An official Screenshot API client for Java. It takes minutes to start taking screenshots. Just sign up to get access and secret keys, import the

ScreenshotOne.com 5 Jun 7, 2022
NeverScapeAlone! Instantly match with other players and take the hassle out of finding partners for bosses, minigames, skills, pking, and more!

NeverScapeAlone An Old School RuneScape Matchmaking Plugin on RuneLite! Tired of having to scour friend's chats, discords, and forums to find friends

null 14 Sep 2, 2022
AndroidHiddenApiBypass - Bypass restrictions on non-SDK interfaces

AndroidHiddenApiBypass Bypass restrictions on non-SDK interfaces. Why AndroidHiddenApiBypass? Pure Java: no native code used. Reliable: does not rely

LSPosed 903 Jan 6, 2023
React native wrapper for Jitsi Meet SDK Library that rely on the native view (Activity / ViewController)

react-native-jitsi-meet-sdk React native wrapper for Jitsi Meet SDK Library. This Library implements the Jitsi SDK with a native activity on the Andro

null 7 May 2, 2022
The world's top-level live sdk...

目录结构说明 本目录包含 Android 版 移动直播 SDK 的Demo 源代码,主要演示接口如何调用以及最基本的功能。 ├─ MLVB-API-Example // MLVB API Example,包括直播推流,直播播放,互动直播 | ├─ App //

LiteAVSDK 18 Jan 5, 2023
The VAST ad sample code provided by HUAWEI Ads Kit describes how to display linear ads by integrating the HUAWEI VAST SDK into your app.

HMS Ads Demo for VAST English | 中文 Table of Contents Introduction Installation Configuration Supported Environments Sample Code Result License Introdu

HMS 11 Jul 16, 2022