Site icon AppTractor

Транзитивные зависимости и нарушения правил Play Store

За последние несколько лет работа с нарушениями политик в Play Store была значительно улучшена. Вместо внезапного бана и удаления из магазина вы получаете письмо с предупреждением о нарушении и сроком его устранения.

В большинстве случаев эти нарушения связаны не напрямую с кодом в приложении, а с библиотекой, которую использует приложение. Это легкий сценарий. Электронное письмо с предупреждением о нарушении в большинстве случаев даже предложит новую версию библиотеки, которую вам нужно внедрить, чтобы нарушение исчезло.

Но бывают случаи, когда библиотека, упомянутая в электронном письме с предупреждением о нарушении, не используется приложением напрямую. Это самый сложный случай, когда это транзитивная зависимость от одной из непосредственно используемых библиотек.

Чтобы выяснить, где используется библиотека-нарушитель, в Gradle есть способ построить дерево зависимостей. Затем вам нужно обновить прямую зависимость, где используется фиксированная транзитивная зависимость.

Распечатка дерева зависимостей

Во-первых, сделайте окно Gradle в IDE видимым, выбрав View -> Tool Windows -> Gradle. Затем выберите app (или другой модуль) -> Help -> Dependencies. Кроме того, вы можете просто запустить ./gradlew app:dependencies в окне терминала.

Это напечатает в окне Run древовидную структуру, показывающую, какая библиотека используется каждой зависимостью.

[...]
+--- com.google.android.gms:play-services-gcm:17.0.0
| +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
| +--- androidx.core:core:1.0.0 -> 1.8.0 (*)
| +--- androidx.legacy:legacy-support-core-utils:1.0.0 (*)
| +--- com.google.android.gms:play-services-base:17.0.0 -> 18.0.1 (*)
| +--- com.google.android.gms:play-services-basement:17.0.0 -> 18.1.0 (*)
| +--- com.google.android.gms:play-services-iid:17.0.0
| | +--- androidx.collection:collection:1.0.0 -> 1.1.0 (*)
| | +--- androidx.core:core:1.0.0 -> 1.8.0 (*)
| | +--- com.google.android.gms:play-services-base:17.0.0 -> 18.0.1 (*)
| | +--- com.google.android.gms:play-services-basement:17.0.0 -> 18.1.0 (*)
| | +--- com.google.android.gms:play-services-stats:17.0.0 -> 17.0.2 (*)
| | \--- com.google.android.gms:play-services-tasks:17.0.0 -> 18.0.1 (*)
| \--- com.google.android.gms:play-services-stats:17.0.0 -> 17.0.2 (*)
[...]

Здесь вы можете выполнить поиск, чтобы найти нарушающую правила библиотеку и обновить первичную зависимость, что, как мы надеемся, решит проблему.

Визуальный способ

Есть полностью визуальный способ добраться до этого дерева зависимостей, выбрав File -> Project Structure -> Dependencies -> Resolved Dependencies. Но это представление, даже если оно удобно для просмотра, не удобно при поиске конкретной зависимости, которая может быть скрыта многими слоями ниже прямой зависимости.

Надеюсь, я немного облегчил поиск нарушающей зависимости в вашем приложении для Android.

Удачного программирования!

Источник

Exit mobile version