Разработка
Транзитивные зависимости и нарушения правил Play Store
Чтобы выяснить, где используется библиотека-нарушитель, в Gradle есть способ построить дерево зависимостей.
За последние несколько лет работа с нарушениями политик в 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.
Удачного программирования!
-
Интегрированные среды разработки2 недели назад
Лучшая работа с Android Studio: 5 советов
-
Новости4 недели назад
Видео и подкасты о мобильной разработке 2024.43
-
Новости3 недели назад
Видео и подкасты о мобильной разработке 2024.44
-
Исследования2 недели назад
Поможет ли новая архитектура React Native отобрать лидерство у Flutter в кроссплатформенной разработке?