google / google/horologist

horologist-datalayer-watch dependencies

Open
#2,241 6 comments 1 reaction 0 assignees View on GitHub
Dominant language
Kotlin
Stars
693
Forks
123
Avg merge
1d 11h
Merged PRs (30d)
34

Description

The module horologist-datalayer-watch have a dependency on `libs.androidx.complications.datasource.ktx` that have tons of other dependencies, just to extract the name of the `ComplicationType` in one function.

I'm not sure this is really necessary for this simple need.
(One might also wonder why that wear dep embeds so many side dependencies but that's for another repo)

By side effect it will load appcompat, fragment, drawerlayout, recylerview, .... all those with proguard rules preventing them to be properly stripped.

```
| +--- com.google.android.horologist:horologist-datalayer-watch:0.6.12
| | +--- com.google.android.horologist:horologist-datalayer:0.6.12 (*)
| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.9.24 -> 2.0.0 (*)
| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1 (*)
| | +--- org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.8.1 (*)
| | +--- androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1
| | | +--- androidx.core:core:1.1.0 -> 1.13.1 (*)
| | | +--- androidx.wear.watchface:watchface-complications-data-source:1.2.1
| | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.0 (*)
| | | | +--- androidx.core:core:1.1.0 -> 1.13.1 (*)
| | | | +--- androidx.preference:preference:1.1.0
| | | | | +--- androidx.appcompat:appcompat:1.1.0 -> 1.6.1
| | | | | | +--- androidx.activity:activity:1.6.0 -> 1.9.0 (*)
| | | | | | +--- androidx.annotation:annotation:1.3.0 -> 1.8.0 (*)
| | | | | | +--- androidx.appcompat:appcompat-resources:1.6.1 (*)
| | | | | | +--- androidx.collection:collection:1.0.0 -> 1.4.0 (*)
| | | | | | +--- androidx.core:core:1.9.0 -> 1.13.1 (*)
| | | | | | +--- androidx.core:core-ktx:1.8.0 -> 1.13.1 (*)
| | | | | | +--- androidx.cursoradapter:cursoradapter:1.0.0
| | | | | | | \--- androidx.annotation:annotation:1.0.0 -> 1.8.0 (*)
| | | | | | +--- androidx.drawerlayout:drawerlayout:1.0.0
| | | | | | | +--- androidx.annotation:annotation:1.0.0 -> 1.8.0 (*)
| | | | | | | +--- androidx.core:core:1.0.0 -> 1.13.1 (*)
| | | | | | | \--- androidx.customview:customview:1.0.0 (*)
| | | | | | +--- androidx.emoji2:emoji2:1.2.0 -> 1.3.0 (*)
| | | | | | +--- androidx.emoji2:emoji2-views-helper:1.2.0 -> 1.3.0
| | | | | | | +--- androidx.collection:collection:1.1.0 -> 1.4.0 (*)
| | | | | | | +--- androidx.core:core:1.3.0 -> 1.13.1 (*)
| | | | | | | +--- androidx.emoji2:emoji2:1.3.0 (*)
| | | | | | | \--- androidx.emoji2:emoji2:1.3.0 (c)
| | | | | | +--- androidx.fragment:fragment:1.3.6 -> 1.5.1 (*)
| | | | | | +--- androidx.lifecycle:lifecycle-runtime:2.5.1 -> 2.8.0 (*)
| | | | | | +--- androidx.lifecycle:lifecycle-viewmodel:2.5.1 -> 2.8.0 (*)
| | | | | | +--- androidx.resourceinspection:resourceinspection-annotation:1.0.1
| | | | | | | \--- androidx.annotation:annotation:1.1.0 -> 1.8.0 (*)
| | | | | | +--- androidx.savedstate:savedstate:1.2.0 -> 1.2.1 (*)
| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.7.10 -> 2.0.0 (*)
| | | | | | \--- androidx.appcompat:appcompat-resources:1.6.1 (c)
| | | | | +--- androidx.core:core:1.1.0 -> 1.13.1 (*)
| | | | | +--- androidx.fragment:fragment:1.1.0 -> 1.5.1 (*)
| | | | | +--- androidx.recyclerview:recyclerview:1.0.0 -> 1.1.0
| | | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.0 (*)
| | | | | | +--- androidx.core:core:1.1.0 -> 1.13.1 (*)
| | | | | | +--- androidx.customview:customview:1.0.0 (*)
| | | | | | \--- androidx.collection:collection:1.0.0 -> 1.4.0 (*)
| | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.0 (*)
| | | | | \--- androidx.collection:collection:1.0.0 -> 1.4.0 (*)
| | | | +--- androidx.wear.watchface:watchface-complications:1.2.1
| | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.0 (*)
| | | | | +--- androidx.annotation:annotation:1.2.0 -> 1.8.0 (*)
| | | | | +--- androidx.core:core:1.1.0 -> 1.13.1 (*)
| | | | | +--- androidx.wear.watchface:watchface-complications-data:1.2.1
| | | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.0 (*)
| | | | | | +--- androidx.annotation:annotation:1.2.0 -> 1.8.0 (*)
| | | | | | +--- androidx.core:core:1.1.0 -> 1.13.1 (*)
| | | | | | +--- androidx.preference:preference:1.1.0 (*)
| | | | | | +--- androidx.versionedparcelable:versionedparcelable:1.1.0 -> 1.1.1 (*)
| | | | | | +--- androidx.wear.protolayout:protolayout-expression:1.0.0-beta01
| | | | | | | +--- androidx.annotation:annotation:1.2.0 -> 1.8.0 (*)
| | | | | | | +--- androidx.annotation:annotation-experimental:1.3.0 -> 1.4.0 (*)
| | | | | | | +--- androidx.collection:collection:1.2.0 -> 1.4.0 (*)
| | | | | | | +--- androidx.wear.protolayout:protolayout-proto:1.0.0-beta01
| | | | | | | | +--- androidx.annotation:annotation:1.1.0 -> 1.8.0 (*)
| | | | | | | | +--- androidx.wear.protolayout:protolayout-expression:1.0.0-beta01 (c)
| | | | | | | | \--- androidx.wear.protolayout:protolayout-expression-pipeline:1.0.0-beta01 (c)
| | | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.0 (*)
| | | | | | | +--- androidx.wear.protolayout:protolayout-expression-pipeline:1.0.0-beta01 (c)
| | | | | | | \--- androidx.wear.protolayout:protolayout-proto:1.0.0-beta01 (c)
| | | | | | +--- androidx.wear.protolayout:protolayout-expression-pipeline:1.0.0-beta01
| | | | | | | +--- androidx.annotation:annotation:1.2.0 -> 1.8.0 (*)
| | | | | | | +--- androidx.annotation:annotation-experimental:1.3.0 -> 1.4.0 (*)
| | | | | | | +--- androidx.collection:collection:1.2.0 -> 1.4.0 (*)
| | | | | | | +--- androidx.concurrent:concurrent-futures:1.1.0 (*)
| | | | | | | +--- androidx.core:core:1.7.0 -> 1.13.1 (*)
| | | | | | | +--- androidx.wear.protolayout:protolayout-expression:1.0.0-beta01 (*)
| | | | | | | +--- androidx.wear.protolayout:protolayout-proto:1.0.0-beta01 (*)
| | | | | | | +--- androidx.wear.protolayout:protolayout-expression:1.0.0-beta01 (c)
| | | | | | | \--- androidx.wear.protolayout:protolayout-proto:1.0.0-beta01 (c)
| | | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.0 (*)
| | | | | | +--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1 -> 1.8.1 (*)
| | | | | | +--- androidx.wear.watchface:watchface-complications:1.2.1 (c)
| | | | | | +--- androidx.wear.watchface:watchface-complications-data-source:1.2.1 (c)
| | | | | | \--- androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1 (c)
| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.0 (*)
| | | | | +--- androidx.wear.watchface:watchface-complications-data:1.2.1 (c)
| | | | | +--- androidx.wear.watchface:watchface-complications-data-source:1.2.1 (c)
| | | | | \--- androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1 (c)
| | | | +--- androidx.wear.watchface:watchface-complications-data:1.2.1 (*)
| | | | +--- androidx.wear.watchface:watchface-complications:1.2.1 (c)
| | | | +--- androidx.wear.watchface:watchface-complications-data:1.2.1 (c)
| | | | \--- androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1 (c)
| | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.0 (*)
| | | +--- androidx.wear.watchface:watchface-complications-data-source:1.2.1 (c)
| | | +--- androidx.wear.watchface:watchface-complications:1.2.1 (c)
| | | \--- androidx.wear.watchface:watchface-complications-data:1.2.1 (c)
```

Contributor guide

Open the contributing guide

Research direction

Inspect the horologist-datalayer-watch module and locate the function that extracts the ComplicationType name, then review how the watchface-complications-data-source-ktx dependency is declared and used. Confirm the dependency tree before and after the change, while preserving the existing name extraction behavior and removing the unnecessary transitive dependencies.

Written by the indexing model from the issue text.

Assessment

Tech stack
kotlin
Domain
mobile-dev
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
32/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.