在 Maven 库中将 android.support.v4.util.ArraySet 替换为 androidx.collection.ArraySet

Replace android.support.v4.util.ArraySet with androidx.collection.ArraySet in Maven library

我有一个第 3 方库依赖于:

import android.support.v4.util.ArraySet;

我想在项目的其余部分使用最新的 Android 库:

import androidx.collection.ArraySet;

但是,由于我是通过 Maven 获取库的,所以我似乎无法强制它替换 androidx 的 v4 依赖项并让它引用正确的 class。

我已经试过了:

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

根据 Migrate to AndroidX guide:

android.enableJetifier=true

The Android plugin automatically migrates existing third-party libraries to use AndroidX by rewriting their binaries.

因此,重写 Maven 依赖项正是 Jetifier 为您所做的。确保您已将 android.enableJetifier=true 添加到 gradle.properties 文件以启用 Jetifier。