Skip to content

Commit

Permalink
Merge main into version branch (#326)
Browse files Browse the repository at this point in the history
* Bump the github-actions group with 1 update (#250)

Bumps the github-actions group with 1 update: [actions/upload-artifact](https://github.com/actions/upload-artifact).

- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@v3...v4)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Add sample app (#249)

* Created sample app dir

* Adding code from sample-app-android-apm

* Setting latest lib version on sample app

* Updating the sample app README

* Adding doc comment

* ci(release): use new set of credentials for GPG and Maven Central (#255)

* ci(buildkite): vault context switch (#256)

* Revert "Bump the github-actions group with 1 update" (#257)

* ci(release): use the new vault secret path (#258)

* ci(release): fetch field in plain format (#259)

* Sim operator fix (#261)

* Calling getSimOperator once

* Validating simOperator calls

* Updated changelog

* Using short key id (#262)

* Release 0.13.1 (#263)

* Preparing for the next release

* Update gradle.properties

* Update CHANGELOG.asciidoc

* Update CHANGELOG.asciidoc

---------

Co-authored-by: apmmachine <apmmachine@users.noreply.github.com>
Co-authored-by: César <56847527+LikeTheSalad@users.noreply.github.com>

* backstage: add tags for the obltmachine/apmmachine and other things (#266)

* Release/0.14.0 (#267)

* Using gradle version catalog

* Clean up

* Upgrading dependencies

* Updating notice files

* Removing okhttp auto-instrumentation

* Moving okhttp android test network call to the test

* Testing okhttp async calls

* Moving all okhttp tests to NetworkCallingActivityTest

* Clean up

* Adding OTel OkHttp auto-instrumentation

* Clean up common dependencies

* Removing android-instrumentation module

* Adding OTel Android dependency

* Initializing OpenTelemetryRum

* Created LaunchTimeApplicationListener

* Clean up

* Adding OTelRumConfig

* Updating tests

* Preventing compileSdk > 33 to be enforced

* Updating app launch metrics test

* Updating UI span tests

* Adding fragment destruction span UI tests

* Updated coroutines context preservation

* Updating sample-app

* Cleaning up okhttp version lookup

* Adding OTel Android note to the README

* Updating the OTel Android note

* Updated the setup.asciidoc file

* Updated notice files

* Update docs/setup.asciidoc

Co-authored-by: Brandon Morelli <brandon.morelli@elastic.co>

* Update docs/setup.asciidoc

Co-authored-by: Brandon Morelli <brandon.morelli@elastic.co>

* Update docs/setup.asciidoc

Co-authored-by: Brandon Morelli <brandon.morelli@elastic.co>

* Update docs/setup.asciidoc

Co-authored-by: Brandon Morelli <brandon.morelli@elastic.co>

* Update docs/setup.asciidoc

Co-authored-by: Brandon Morelli <brandon.morelli@elastic.co>

* Updating OTel Android note

---------

Co-authored-by: Brandon Morelli <brandon.morelli@elastic.co>

* Preparing for the next release (#268)

Co-authored-by: apmmachine <apmmachine@users.noreply.github.com>

* Updated the changelog (#269)

* Make resources configurable (#276)

* Making OTel resource configurable

* Validating configured resource

* Adding resource config docs

* Updated the CHANGELOG.asciidoc

* ci: use VM with the installed tools and fallback otherwise (#274)

* Preparing for the next release (#277)

Co-authored-by: apmmachine <apmmachine@users.noreply.github.com>

* github-action: listen for all the github workflows (#279)

* security: add permissions block to workflows (#272)

* security: add permissions block to workflows

* Add permissions

* Documentation update (#281)

* Removing links to latest version of artifacts

* Adding note to warn users about version 1.13.1

* Update docs/setup.asciidoc

Co-authored-by: Emily S <emily.s@elastic.co>

* Updating note

* Removing 1.13.1 notes

---------

Co-authored-by: Emily S <emily.s@elastic.co>

* Cicd version validation (#282)

* Validating version override format and major/minor values

* Reorganizing code

* Reorganizing code

* Providing clearer function name

* Updating setup doc versions in post deploy process (#283)

* Cicd release messages update (#284)

* Enhancing slack messages when a release is triggered

* Showing release input params in slack message

* Github action to automatically update version branch after a release (#285)

* Created action to automatically update version branch with the latest changes from main after a release

* Update .github/workflows/updateVersionBranch.yml

Co-authored-by: Victor Martinez <victormartinezrubio@gmail.com>

---------

Co-authored-by: Victor Martinez <victormartinezrubio@gmail.com>

* Remove compilesdk validation (#292)

* Removing androidx libs version constraints

* Updating tests

* Updating sample app compileSdk version

* Updating notice files

* Updated the changelog

* Preparing for the next release (#294)

Co-authored-by: apmmachine <apmmachine@users.noreply.github.com>

* Resolving main to release-branch conflicts before creating PR from main (#299)

* Upgrade gradle version (#300)

* Upgrading to gradle 8.4

* Bumping up gradle env

* Using MaxMetaspaceSize

* Enabling desugaring

* Using new env var mocking lib

* Adding buildconfg fields for tests

* Updating tests

* Using Java 17

* github-action: enable provenance for jar/aar files (#288)

* Documentation changes (#302)

* Bumping Kotlin min version

* Adding signals examples for manual instrumentation

* Explaining sessions in the docs

* Clean up

* github-action: add attestations scope (#305)

* Bump upstream version (#304)

* Bumping OTel deps and addressing Event api changes

* Addressing app listener interface issue

* Sorting lifecycle instrumentation

* Using new disk buffering api

* Adjusting tests to api changes

* Bumping up semconv and contrib versions

* Making CreateNoticeTask output a dir

* Updating jar notice tasks

* Adding notice file to repo for android libs

* Fixing jar create notice file resources dependency

* Bump actions/download-artifact from 3 to 4 in the github-actions group (#306)

Bumps the github-actions group with 1 update: [actions/download-artifact](https://github.com/actions/download-artifact).


Updates `actions/download-artifact` from 3 to 4
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](actions/download-artifact@v3...v4)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Revert "Bump actions/download-artifact from 3 to 4 in the github-actions grou…" (#307)

This reverts commit b7d76f4.

* github-action: use setup composite action for jdk conf (#311)

* Addressing r8 issues (#309)

* Updating build-tools processor to not leak compile-only annotation

* Bumping up gradle in sample app

* Adding R8 common rules

* Updating changelog

* github-action: delete opentelemetry workflow (#312)

* github-action: use actions/attest-build-provenance (#313)

* Adding faq on SSL/TLS config (#310)

* Adding faq on SSL/TLS

* Fixing typo

* Update docs/faq.asciidoc

Co-authored-by: Brandon Morelli <brandon.morelli@elastic.co>

* Update docs/faq.asciidoc

Co-authored-by: Brandon Morelli <brandon.morelli@elastic.co>

* Update docs/faq.asciidoc

Co-authored-by: Brandon Morelli <brandon.morelli@elastic.co>

* Update docs/faq.asciidoc

Co-authored-by: Brandon Morelli <brandon.morelli@elastic.co>

---------

Co-authored-by: Brandon Morelli <brandon.morelli@elastic.co>

* Preparing for the next release (#314)

Co-authored-by: apmmachine <apmmachine@users.noreply.github.com>

* Bump actions/attest-build-provenance from 1.1.1 to 1.1.2 in the github-actions group (#317)

Bumps the github-actions group with 1 update: [actions/attest-build-provenance](https://github.com/actions/attest-build-provenance).
Updates `actions/attest-build-provenance` from 1.1.1 to 1.1.2
- [Release notes](https://github.com/actions/attest-build-provenance/releases)
- [Changelog](https://github.com/actions/attest-build-provenance/blob/main/RELEASE.md)
- [Commits](actions/attest-build-provenance@951c0c5...173725a)

* Fetching remote branches before switching to version branch (#316)

* Fetching remote branches before switching to version branch

* Using checkout action params to fetch all git branches

* Adding http exporting path (#319)

* Adding http exporting path

* Updated changelog

* Preparing for the next release (#320)

Co-authored-by: apmmachine <apmmachine@users.noreply.github.com>

* Adding write permissions to updateVersionBranch.yml (#322)

* Upgrading byte buddy plugin (#324)

* Upgrading byte buddy plugin

* Updated chagelog

* Updating notice files metadata

* Preparing for the next release (#325)

Co-authored-by: apmmachine <apmmachine@users.noreply.github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: César <56847527+LikeTheSalad@users.noreply.github.com>
Co-authored-by: Victor Martinez <victormartinezrubio@gmail.com>
Co-authored-by: apmmachine <apmmachine@users.noreply.github.com>
Co-authored-by: Brandon Morelli <brandon.morelli@elastic.co>
Co-authored-by: Jan Calanog <jan.calanog@elastic.co>
Co-authored-by: Emily S <emily.s@elastic.co>
  • Loading branch information
8 people authored May 30, 2024
1 parent c2596fa commit 11472eb
Show file tree
Hide file tree
Showing 12 changed files with 170 additions and 18 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -98,11 +98,11 @@ jobs:
run: tar xvf ${{ env.TARBALL_FILE }}

- name: generate build provenance (jar files)
uses: actions/attest-build-provenance@951c0c5f8e375ad4efad33405ab77f7ded2358e4 # v1.1.1
uses: actions/attest-build-provenance@173725a1209d09b31f9d30a3890cf2757ebbff0d # v1.1.2
with:
subject-path: "${{ github.workspace }}/**/build/libs/*.jar"

- name: generate build provenance (aar files)
uses: actions/attest-build-provenance@951c0c5f8e375ad4efad33405ab77f7ded2358e4 # v1.1.1
uses: actions/attest-build-provenance@173725a1209d09b31f9d30a3890cf2757ebbff0d # v1.1.2
with:
subject-path: "${{ github.workspace }}/**/build/outputs/aar/*.aar"
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -85,12 +85,12 @@ jobs:
run: tar xvf ${{ env.TARBALL_FILE }}

- name: generate build provenance (jar files)
uses: actions/attest-build-provenance@951c0c5f8e375ad4efad33405ab77f7ded2358e4 # v1.1.1
uses: actions/attest-build-provenance@173725a1209d09b31f9d30a3890cf2757ebbff0d # v1.1.2
with:
subject-path: "${{ github.workspace }}/**/build/libs/*.jar"

- name: generate build provenance (aar files)
uses: actions/attest-build-provenance@951c0c5f8e375ad4efad33405ab77f7ded2358e4 # v1.1.1
uses: actions/attest-build-provenance@173725a1209d09b31f9d30a3890cf2757ebbff0d # v1.1.2
with:
subject-path: "${{ github.workspace }}/**/build/outputs/aar/*.aar"

Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/updateVersionBranch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ on:
- closed

permissions:
contents: read
contents: write

jobs:
if_merged_postDeploy:
Expand All @@ -28,6 +28,8 @@ jobs:
email: ${{ env.GIT_EMAIL }}
token: ${{ env.GITHUB_TOKEN }}
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions-ecosystem/action-regex-match@v2
id: major-version
with:
Expand Down
16 changes: 16 additions & 0 deletions CHANGELOG.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,22 @@ ${next_release_notes}
* New feature: {pull}000[#000]
////
[[release-notes-0.19.0]]
==== 0.19.0 - 2024/05/30
[float]
===== Bug fixes
* Bytecode instrumentation issue in #323: {pull}324[#324]
[[release-notes-0.18.0]]
==== 0.18.0 - 2024/05/24
[float]
===== Bug fixes
* HTTP exporting fix: {pull}319[#319]
[[release-notes-0.17.0]]
==== 0.17.0 - 2024/05/17
Expand Down
2 changes: 1 addition & 1 deletion android-plugin/metadata/notice.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
dependencies.hash=09D717D772515279BACBDAB508BC19DE
dependencies.hash=6AB0841BC9D2A49600D8C01CB49722DD
2 changes: 2 additions & 0 deletions android-sdk/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -59,4 +59,6 @@ dependencies {
compileOnly 'co.elastic.apm.compile:processor'
testImplementation libs.bundles.mocking
testImplementation libs.junit
testImplementation libs.mockwebserver
testImplementation libs.opentelemetry.testing
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,11 @@ public final class DefaultSignalConfiguration extends DefaultSignalProcessorConf
private final Provider<ConnectivityConfiguration> connectivity;

public DefaultSignalConfiguration() {
connectivity = LazyProvider.of(() -> Configurations.get(ConnectivityConfiguration.class));
this(LazyProvider.of(() -> Configurations.get(ConnectivityConfiguration.class)));
}

DefaultSignalConfiguration(Provider<ConnectivityConfiguration> connectivity) {
this.connectivity = connectivity;
}

@Override
Expand Down Expand Up @@ -117,7 +121,7 @@ private OtlpGrpcMetricExporter getOtlpGrpcMetricExporter() {

@NonNull
private OtlpHttpSpanExporter getOtlpHttpSpanExporter() {
OtlpHttpSpanExporterBuilder exporterBuilder = OtlpHttpSpanExporter.builder().setEndpoint(getConnectivity().getEndpoint());
OtlpHttpSpanExporterBuilder exporterBuilder = OtlpHttpSpanExporter.builder().setEndpoint(getHttpEndpoint("traces"));
if (getConnectivity().getAuthConfiguration() != null) {
exporterBuilder.addHeader(AUTHORIZATION_HEADER_NAME, getAuthorizationHeaderValue());
}
Expand All @@ -126,7 +130,7 @@ private OtlpHttpSpanExporter getOtlpHttpSpanExporter() {

@NonNull
private OtlpHttpLogRecordExporter getOtlpHttpLogRecordExporter() {
OtlpHttpLogRecordExporterBuilder exporterBuilder = OtlpHttpLogRecordExporter.builder().setEndpoint(getConnectivity().getEndpoint());
OtlpHttpLogRecordExporterBuilder exporterBuilder = OtlpHttpLogRecordExporter.builder().setEndpoint(getHttpEndpoint("logs"));
if (getConnectivity().getAuthConfiguration() != null) {
exporterBuilder.addHeader(AUTHORIZATION_HEADER_NAME, getAuthorizationHeaderValue());
}
Expand All @@ -137,7 +141,7 @@ private OtlpHttpLogRecordExporter getOtlpHttpLogRecordExporter() {
private OtlpHttpMetricExporter getOtlpHttpMetricExporter() {
OtlpHttpMetricExporterBuilder exporterBuilder = OtlpHttpMetricExporter.builder()
.setAggregationTemporalitySelector(AggregationTemporalitySelector.deltaPreferred())
.setEndpoint(getConnectivity().getEndpoint());
.setEndpoint(getHttpEndpoint("metrics"));
if (getConnectivity().getAuthConfiguration() != null) {
exporterBuilder.addHeader(AUTHORIZATION_HEADER_NAME, getAuthorizationHeaderValue());
}
Expand All @@ -152,4 +156,8 @@ private ConnectivityConfiguration getConnectivity() {
private String getAuthorizationHeaderValue() {
return getConnectivity().getAuthConfiguration().asAuthorizationHeaderValue();
}

private String getHttpEndpoint(String signalId) {
return String.format("%s/v1/%s", getConnectivity().getEndpoint(), signalId);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
/*
* Licensed to Elasticsearch B.V. under one or more contributor
* license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright
* ownership. Elasticsearch B.V. licenses this file to you under
* the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package co.elastic.apm.android.sdk.connectivity.opentelemetry;

import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.util.Collections;
import java.util.concurrent.TimeUnit;

import co.elastic.apm.android.sdk.connectivity.ExportProtocol;
import co.elastic.apm.android.sdk.internal.configuration.impl.ConnectivityConfiguration;
import co.elastic.apm.android.sdk.testutils.providers.SimpleProvider;
import io.opentelemetry.api.trace.SpanKind;
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
import io.opentelemetry.sdk.metrics.data.MetricData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableMetricData;
import io.opentelemetry.sdk.metrics.internal.data.ImmutableSumData;
import io.opentelemetry.sdk.resources.Resource;
import io.opentelemetry.sdk.testing.logs.TestLogRecordData;
import io.opentelemetry.sdk.testing.trace.TestSpanData;
import io.opentelemetry.sdk.trace.data.StatusData;
import okhttp3.mockwebserver.MockResponse;
import okhttp3.mockwebserver.MockWebServer;
import okhttp3.mockwebserver.RecordedRequest;

public class DefaultSignalConfigurationTest {

private MockWebServer server;
private ConnectivityConfiguration connectivityConfiguration;
private DefaultSignalConfiguration signalConfiguration;

@Before
public void setUp() throws IOException {
server = new MockWebServer();
server.start();
server.enqueue(new MockResponse());

connectivityConfiguration = mock();
doReturn("http://" + server.getHostName() + ":" + server.getPort()).when(connectivityConfiguration).getEndpoint();
signalConfiguration = new DefaultSignalConfiguration(SimpleProvider.create(connectivityConfiguration));
}

@Test
public void testSpansHttpEndpoint() throws InterruptedException {
doReturn(ExportProtocol.HTTP).when(connectivityConfiguration).getExportProtocol();
TestSpanData spanData = getTestSpanData();

signalConfiguration.provideSpanExporter().export(Collections.singleton(spanData)).join(1, TimeUnit.SECONDS);

RecordedRequest recordedRequest = server.takeRequest();
assertEquals("/v1/traces", recordedRequest.getPath());
}

@Test
public void testMetricsHttpEndpoint() throws InterruptedException {
doReturn(ExportProtocol.HTTP).when(connectivityConfiguration).getExportProtocol();
MetricData metricData = getTestMetricData();

signalConfiguration.provideMetricExporter().export(Collections.singleton(metricData)).join(1, TimeUnit.SECONDS);

RecordedRequest recordedRequest = server.takeRequest();
assertEquals("/v1/metrics", recordedRequest.getPath());
}

@Test
public void testLogRecordsHttpEndpoint() throws InterruptedException {
doReturn(ExportProtocol.HTTP).when(connectivityConfiguration).getExportProtocol();
TestLogRecordData logRecordData = TestLogRecordData.builder().setBody("Log body").build();

signalConfiguration.provideLogExporter().export(Collections.singleton(logRecordData)).join(1, TimeUnit.SECONDS);

RecordedRequest recordedRequest = server.takeRequest();
assertEquals("/v1/logs", recordedRequest.getPath());
}

private static TestSpanData getTestSpanData() {
return TestSpanData.builder().setName("Some name")
.setStartEpochNanos(1000)
.setEndEpochNanos(1100)
.setHasEnded(true)
.setStatus(StatusData.ok())
.setKind(SpanKind.CLIENT)
.build();
}

private static MetricData getTestMetricData() {
return ImmutableMetricData.createLongSum(Resource.empty(),
InstrumentationScopeInfo.empty(),
"A Metric",
"A description",
"m",
ImmutableSumData.empty());
}

@After
public void tearDown() throws IOException {
server.shutdown();
}
}
6 changes: 3 additions & 3 deletions docs/setup.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,14 @@ You can skip this step if your `minSdkVersion` is 26 or higher.
[[adding-gradle-plugin]]
==== Add the Elastic Agent Gradle plugin

To automatically instrument <<supported-technologies,Supported Technologies>>, add the https://plugins.gradle.org/plugin/co.elastic.apm.android/0.17.0[Elastic APM agent plugin] to your application's `build.gradle` file as shown below:
To automatically instrument <<supported-technologies,Supported Technologies>>, add the https://plugins.gradle.org/plugin/co.elastic.apm.android/0.19.0[Elastic APM agent plugin] to your application's `build.gradle` file as shown below:

[source,groovy]
----
// Android app's build.gradle file
plugins {
id "com.android.application"
id "co.elastic.apm.android" version "0.17.0"
id "co.elastic.apm.android" version "0.19.0"
}
----

Expand Down Expand Up @@ -122,7 +122,7 @@ Add the Elastic APM agent SDK to your application's `build.gradle` file as shown
----
// Android app's build.gradle file
dependencies {
implementation "co.elastic.apm:android-sdk:0.17.0"
implementation "co.elastic.apm:android-sdk:0.19.0"
}
----

Expand Down
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#Fri May 17 13:11:02 UTC 2024
#Thu May 30 09:16:00 UTC 2024
androidGradlePlugin_version=8.2.0
description=APM for Android applications with the Elastic stack
org.gradle.jvmargs=-XX\:MaxMetaspaceSize\=2G
version=0.18.0
version=0.20.0
android.useAndroidX=true
group=co.elastic.apm
4 changes: 3 additions & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ opentelemetry-alpha = "1.37.0-alpha"
opentelemetry-semconv = "1.25.0-alpha"
opentelemetry-contrib = "1.35.0-alpha"
mockito = "4.11.0"
byteBuddy = "1.14.11"
byteBuddy = "1.14.17"
okhttp = "4.12.0"
kotlin = "1.9.22"
google-autoService = "1.1.1"
Expand Down Expand Up @@ -38,6 +38,8 @@ kotlin-coroutines = "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4"
mockito-core = { module = "org.mockito:mockito-core", version.ref = "mockito" }
mockito-inline = { module = "org.mockito:mockito-inline", version.ref = "mockito" }
junit = "junit:junit:4.13.2"
mockwebserver = "com.squareup.okhttp3:mockwebserver:4.12.0"
opentelemetry-testing = { module = "io.opentelemetry:opentelemetry-sdk-testing", version.ref = "opentelemetry" }

#Compilation tools
apache-commons-text = "org.apache.commons:commons-text:1.10.0"
Expand Down
4 changes: 2 additions & 2 deletions manual_licenses_map.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
net.bytebuddy:byte-buddy:1.14.11|apache_v2
net.bytebuddy:byte-buddy-gradle-plugin:1.14.11|apache_v2
net.bytebuddy:byte-buddy:1.14.17|apache_v2
net.bytebuddy:byte-buddy-gradle-plugin:1.14.17|apache_v2
org.slf4j:slf4j-api:2.0.0|mit
com.squareup.okhttp3:okhttp:3.11.0|apache_v2
com.github.instacart.truetime-android:library:3.5|apache_v2

0 comments on commit 11472eb

Please sign in to comment.