diff --git a/.github/renovate.json5 b/.github/renovate.json5 index d8dcc3559..cb25131a1 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -34,8 +34,21 @@ { // somehow renovate gets confused by the android property in gradle.properties, // so let's just exclude it and hopefully clean up the dashboard - "matchPackageNames": ["string:rum.version"], + "matchPackageNames": [ + "string:rum.version" + ], "enabled": false + }, + { + // Try and force the demo app's kotlin and compose compilers to be in lockstep + // See https://github.com/renovatebot/renovate/issues/18354 + "includePaths": ["demo-app/"], + "matchPackagePatterns": [ + "^org.jetbrains.kotlin", + "^com.google.devtools.ksp", + "^androidx.compose.compiler" + ], + "groupName": "kotlin" } ] } diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 953e99607..df4d3c237 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -18,8 +18,13 @@ jobs: with: distribution: temurin java-version: 17 + - name: touch local props + run: touch demo-app/local.properties - name: run gradle check run: ./gradlew check + - name: build demo app + working-directory: ./demo-app + run: ./gradlew check assemble - name: publish snapshot run: ./gradlew publishToSonatype env: diff --git a/.github/workflows/codeql-daily.yml b/.github/workflows/codeql-daily.yml index 889eb3048..215d106a2 100644 --- a/.github/workflows/codeql-daily.yml +++ b/.github/workflows/codeql-daily.yml @@ -20,7 +20,7 @@ jobs: java-version: 17 - name: touch local props - run: touch local.properties + run: touch demo-app/local.properties - name: Initialize CodeQL uses: github/codeql-action/init@v3 diff --git a/.github/workflows/pr-check.yaml b/.github/workflows/pr-check.yaml index 1b0d553f6..b3afd1f1b 100644 --- a/.github/workflows/pr-check.yaml +++ b/.github/workflows/pr-check.yaml @@ -14,9 +14,12 @@ jobs: distribution: temurin java-version: 17 - name: touch local props - run: touch local.properties + run: touch demo-app/local.properties - name: run gradle run: ./gradlew check + - name: build demo app + working-directory: ./demo-app + run: ./gradlew check assemble required-status-check: needs: diff --git a/.gitignore b/.gitignore index d2c2be31c..a0df3d643 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ .idea .gradle /local.properties +demo-app/local.properties .DS_Store -**/build/ \ No newline at end of file +**/build/ diff --git a/android-agent/build.gradle.kts b/android-agent/build.gradle.kts index 12a0506a7..a10bb241c 100644 --- a/android-agent/build.gradle.kts +++ b/android-agent/build.gradle.kts @@ -63,7 +63,6 @@ dependencies { implementation(project(":instrumentation:crash")) implementation(project(":instrumentation:network")) implementation(project(":instrumentation:slowrendering")) - implementation(libs.androidx.appcompat) implementation(libs.androidx.core) implementation(libs.androidx.navigation.fragment) diff --git a/demo-app/build.gradle.kts b/demo-app/build.gradle.kts index 3bb740306..0c2de8d08 100644 --- a/demo-app/build.gradle.kts +++ b/demo-app/build.gradle.kts @@ -3,7 +3,7 @@ import java.util.Properties plugins { id("com.android.application") version "8.4.0" - id("org.jetbrains.kotlin.android") version "1.9.23" + id("org.jetbrains.kotlin.android") version "1.9.24" } val localProperties = Properties() @@ -12,11 +12,11 @@ localProperties.load(FileInputStream(rootProject.file("local.properties"))) android { namespace = "io.opentelemetry.android.demo" compileSdk = 34 - targetSdk = 34 defaultConfig { applicationId = "io.opentelemetry.android.demo" minSdk = 21 + targetSdk = 34 versionCode = 1 versionName = "1.0" @@ -44,8 +44,9 @@ android { viewBinding = true } composeOptions { - kotlinCompilerExtensionVersion = "1.5.13" + kotlinCompilerExtensionVersion = "1.5.14" } + val javaVersion = JavaVersion.VERSION_11 compileOptions { sourceCompatibility(javaVersion) targetCompatibility(javaVersion) @@ -65,9 +66,10 @@ dependencies { implementation(libs.androidx.lifecycle.viewmodel.ktx) implementation(libs.androidx.navigation.fragment.ktx) implementation(libs.androidx.navigation.ui.ktx) + coreLibraryDesugaring(libs.desugarJdkLibs) - implementation("io.opentelemetry.android:android-agent") + implementation("io.opentelemetry.android:android-agent") //parent dir implementation(libs.androidx.core.ktx) implementation(libs.androidx.lifecycle.runtime.ktx) implementation(libs.androidx.activity.compose) @@ -76,8 +78,9 @@ dependencies { implementation(libs.androidx.ui.graphics) implementation(libs.androidx.ui.tooling.preview) implementation(libs.androidx.material3) - implementation(libs.opentelemetry.sdk) + implementation(libs.opentelemetry.exporter.otlp) + testImplementation(libs.bundles.junit) androidTestImplementation(libs.androidx.junit) debugImplementation(libs.androidx.ui.tooling) diff --git a/demo-app/gradle/libs.versions.toml b/demo-app/gradle/libs.versions.toml new file mode 100644 index 000000000..80e982d64 --- /dev/null +++ b/demo-app/gradle/libs.versions.toml @@ -0,0 +1,43 @@ +[versions] +opentelemetry = "1.38.0" +junit = "5.10.2" +spotless = "6.25.0" +kotlin = "1.9.24" + +[libraries] +androidx-appcompat = "androidx.appcompat:appcompat:1.6.1" +opentelemetry-exporter-otlp = { module = "io.opentelemetry:opentelemetry-exporter-otlp", version.ref = "opentelemetry" } + +#Test tools +androidx-junit = "androidx.test.ext:junit:1.1.5" +junit-jupiter-api = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "junit" } +junit-jupiter-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junit" } +junit-vintage-engine = { module = "org.junit.vintage:junit-vintage-engine", version.ref = "junit" } + +#Compilation tools +desugarJdkLibs = "com.android.tools:desugar_jdk_libs:2.0.4" + +# demo-app +androidx-core-ktx = "androidx.core:core-ktx:1.13.1" +androidx-lifecycle-runtime-ktx = "androidx.lifecycle:lifecycle-runtime-ktx:2.8.0" +androidx-compose-bom = "androidx.compose:compose-bom:2024.05.00" +androidx-activity-compose = "androidx.activity:activity-compose:1.9.0" +androidx-ui = { group = "androidx.compose.ui", name = "ui" } +androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" } +androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } +androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } +androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } +androidx-material3 = { group = "androidx.compose.material3", name = "material3" } +androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version = "2.1.4" } +material = { group = "com.google.android.material", name = "material", version = "1.12.0" } +androidx-lifecycle-livedata-ktx = { group = "androidx.lifecycle", name = "lifecycle-livedata-ktx", version = "2.8.0" } +androidx-lifecycle-viewmodel-ktx = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-ktx", version = "2.8.0" } +androidx-navigation-fragment-ktx = { group = "androidx.navigation", name = "navigation-fragment-ktx", version = "2.7.7" } +androidx-navigation-ui-ktx = { group = "androidx.navigation", name = "navigation-ui-ktx", version = "2.7.7" } + +[bundles] +junit = ["junit-jupiter-api", "junit-jupiter-engine", "junit-vintage-engine"] + +[plugins] +spotless = { id = "com.diffplug.spotless", version.ref = "spotless" } +kotlinAndroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } diff --git a/demo-app/gradle/wrapper/gradle-wrapper.jar b/demo-app/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 000000000..e6441136f Binary files /dev/null and b/demo-app/gradle/wrapper/gradle-wrapper.jar differ diff --git a/demo-app/proguard-rules.pro b/demo-app/proguard-rules.pro new file mode 100644 index 000000000..fd245fd47 --- /dev/null +++ b/demo-app/proguard-rules.pro @@ -0,0 +1,5 @@ +-dontwarn com.fasterxml.jackson.core.JsonFactory +-dontwarn com.fasterxml.jackson.core.JsonGenerator +-dontwarn com.google.auto.value.AutoValue$Builder +-dontwarn com.google.auto.value.AutoValue +-dontwarn com.google.auto.value.extension.memoized.Memoized diff --git a/demo-app/settings.gradle.kts b/demo-app/settings.gradle.kts index 96f9ff0c7..10e3d2827 100644 --- a/demo-app/settings.gradle.kts +++ b/demo-app/settings.gradle.kts @@ -1,3 +1,5 @@ +rootProject.name = "opentelemetry-android-demo" + pluginManagement { repositories { mavenCentral() @@ -11,10 +13,5 @@ dependencyResolutionManagement { mavenCentral() google() } - versionCatalogs { - create("libs") { - from(files("../gradle/libs.versions.toml")) - } - } } includeBuild("..") \ No newline at end of file diff --git a/demo-app/src/main/res/drawable/otel_icon.png b/demo-app/src/main/res/drawable/otel_icon.png index 3d24a3408..06efcdff9 100644 Binary files a/demo-app/src/main/res/drawable/otel_icon.png and b/demo-app/src/main/res/drawable/otel_icon.png differ diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a52d0fbc3..f6dfadaec 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -13,7 +13,6 @@ kotlin = "1.9.24" [libraries] opentelemetry-platform = { module = "io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom", version.ref = "opentelemetry-instrumentation" } -androidx-appcompat = "androidx.appcompat:appcompat:1.6.1" androidx-navigation-fragment = "androidx.navigation:navigation-fragment:2.7.7" androidx-core = "androidx.core:core:1.13.1" findbugs-jsr305 = "com.google.code.findbugs:jsr305:3.0.2" @@ -61,24 +60,6 @@ android-plugin = "com.android.tools.build:gradle:8.4.0" byteBuddy-plugin = { module = "net.bytebuddy:byte-buddy-gradle-plugin", version.ref = "byteBuddy" } kotlin-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } -# demo-app -androidx-core-ktx = "androidx.core:core-ktx:1.13.0" -androidx-lifecycle-runtime-ktx = "androidx.lifecycle:lifecycle-runtime-ktx:2.7.0" -androidx-compose-bom = "androidx.compose:compose-bom:2024.05.00" -androidx-activity-compose = "androidx.activity:activity-compose:1.9.0" -androidx-ui = { group = "androidx.compose.ui", name = "ui" } -androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" } -androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } -androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } -androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } -androidx-material3 = { group = "androidx.compose.material3", name = "material3" } -androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version = "2.1.4" } -material = { group = "com.google.android.material", name = "material", version = "1.12.0" } -androidx-lifecycle-livedata-ktx = { group = "androidx.lifecycle", name = "lifecycle-livedata-ktx", version = "2.7.0" } -androidx-lifecycle-viewmodel-ktx = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-ktx", version = "2.7.0" } -androidx-navigation-fragment-ktx = { group = "androidx.navigation", name = "navigation-fragment-ktx", version = "2.7.7" } -androidx-navigation-ui-ktx = { group = "androidx.navigation", name = "navigation-ui-ktx", version = "2.7.7" } - [bundles] mocking = ["mockito-core", "mockito-junit-jupiter", "mockk"] junit = ["junit-jupiter-api", "junit-jupiter-engine", "junit-vintage-engine"] diff --git a/instrumentation/volley/library/build.gradle.kts b/instrumentation/volley/library/build.gradle.kts index 5f420137b..6f7eaab15 100644 --- a/instrumentation/volley/library/build.gradle.kts +++ b/instrumentation/volley/library/build.gradle.kts @@ -35,12 +35,10 @@ android { } dependencies { - implementation(libs.androidx.appcompat) implementation(libs.androidx.navigation.fragment) implementation(libs.opentelemetry.instrumentation.api) implementation(libs.opentelemetry.semconv.incubating) compileOnly(libs.volley) - coreLibraryDesugaring(libs.desugarJdkLibs) api(platform(libs.opentelemetry.platform)) api(libs.opentelemetry.api)