Замените android.support.v4.util.ArraySet на androidx.collection.ArraySet в библиотеке Maven - PullRequest
0 голосов
/ 15 октября 2019

У меня есть сторонняя библиотека, которая зависит от:

import android.support.v4.util.ArraySet;

И я хочу использовать новейшие библиотеки Android в остальной части моего проекта:

import androidx.collection.ArraySet;

Однако, поскольку я получаю библиотеку через Maven, я не могу заставить ее заменить зависимость v4 для androidx и сделать так, чтобы она ссылалась на правильный класс.

Я уже пробовал:

implementation 'androidx.collection:collection:1.1.0'
implementation('some-library:v1') {
        exclude group: 'com.android.support', module: 'support-v4'
}

И:

configurations.all {
    resolutionStrategy.dependencySubstitution {
        substitute module('com.android.support:support-v4') with module('androidx.collection:collection:1.1.0')
    }
}

Я даже попробовал еще несколько вещей, включая force=true для зависимостей, которые я хочу.

Однако я все еще получаю:

java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/util/ArraySet;

Как я могу сказать Gradle разрешить импорт для android.support.v4.util.ArraySet до androidx.collection.ArraySet, когда у меня нет доступа к исходному коду?

1 Ответ

1 голос
/ 15 октября 2019

В соответствии с руководством Миграция в AndroidX :

android.enableJetifier=true

Плагин Android автоматически переносит существующие сторонние библиотеки для использования AndroidX путем переписыванияих двоичные файлы.

Так что переписывание зависимостей Maven - это именно то, что Jetifier делает для вас. Убедитесь, что вы добавили android.enableJetifier=true в файл gradle.properties, чтобы включить Jetifier.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...