Рефакторинг из библиотек поддержки в AndroidX с зависимостями

Я хочу перенести свое приложение с использования библиотек поддержки Android на компоненты AndroidX.

Это мой build.gradle

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.test.myapplication"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    /*
    implementation "com.android.support:appcompat-v7:28.0.0-beta01"
    implementation "com.android.support:design:28.0.0-beta01"
    implementation "com.android.support:preference-v7:28.0.0-beta01"
    implementation "com.android.support:cardview-v7:28.0.0-beta01"
    implementation "com.android.support.constraint:constraint-layout:1.1.2"
    */
    implementation "androidx.appcompat:appcompat:1.0.0-beta01"
    implementation "com.google.android.material:material:1.0.0-beta01"
    implementation "androidx.preference:preference:1.0.0-beta01"
    implementation "androidx.cardview:cardview:1.0.0-beta01"
    implementation "androidx.constraintlayout:constraintlayout:1.1.2"
    implementation "androidx.legacy:legacy-support-v4:1.0.0-beta01"

    implementation 'com.dmitrymalkovich.android:progress-fab:1.6'
    implementation 'cat.ereza:customactivityoncrash:2.2.0'

}

В разделе зависимостей вы можете увидеть старые зависимости в виде комментариев. Из-за зависимостей AndroidX при создании приложения я получил следующую ошибку:

AGPBI: {"kind":"error","text":"error: duplicate value for resource \u0027attr/behavior_peekHeight\u0027 with config \u0027\u0027.","sources":[{"file":"/Users/plinzen/.gradle/caches/transforms-1/files-1.1/appcompat-1.0.0-beta01.aar/5f1c73d5e36b65b3011573345597f31d/res/values/values.xml","position":{"startLine":1303,"startColumn":4,"startOffset":70911,"endColumn":68,"endOffset":70975}}],"original":"","tool":"AAPT"}
AGPBI: {"kind":"error","text":"error: resource previously defined here.","sources":[{"file":"/Users/plinzen/.gradle/caches/transforms-1/files-1.1/appcompat-1.0.0-beta01.aar/5f1c73d5e36b65b3011573345597f31d/res/values/values.xml","position":{"startLine":1303,"startColumn":4,"startOffset":70911,"endColumn":68,"endOffset":70975}}],"original":"","tool":"AAPT"}

Я предполагаю, что это может быть какое-то столкновение с двумя другими моими зависимостями, поскольку обе все еще используют библиотеки поддержки Android, например, в ./gradlew app:dependencies:

implementation 'com.dmitrymalkovich.android:progress-fab:1.6'
implementation 'cat.ereza:customactivityoncrash:2.2.0'



+--- com.dmitrymalkovich.android:progress-fab:1.6
|    \--- com.android.support:design:23.3.0
|         +--- com.android.support:appcompat-v7:23.3.0 -> 27.0.1
|         |    +--- com.android.support:support-annotations:27.0.1
|         |    +--- com.android.support:support-core-utils:27.0.1
|         |    |    +--- com.android.support:support-annotations:27.0.1
|         |    |    \--- com.android.support:support-compat:27.0.1
|         |    |         +--- com.android.support:support-annotations:27.0.1
|         |    |         \--- android.arch.lifecycle:runtime:1.0.0
|         |    |              +--- android.arch.lifecycle:common:1.0.0
|         |    |              \--- android.arch.core:common:1.0.0
|         |    +--- com.android.support:support-fragment:27.0.1
|         |    |    +--- com.android.support:support-compat:27.0.1 (*)
|         |    |    +--- com.android.support:support-core-ui:27.0.1
|         |    |    |    +--- com.android.support:support-annotations:27.0.1
|         |    |    |    \--- com.android.support:support-compat:27.0.1 (*)
|         |    |    +--- com.android.support:support-core-utils:27.0.1 (*)
|         |    |    \--- com.android.support:support-annotations:27.0.1
|         |    +--- com.android.support:support-vector-drawable:27.0.1
|         |    |    +--- com.android.support:support-annotations:27.0.1
|         |    |    \--- com.android.support:support-compat:27.0.1 (*)
|         |    \--- com.android.support:animated-vector-drawable:27.0.1
|         |         +--- com.android.support:support-vector-drawable:27.0.1 (*)
|         |         \--- com.android.support:support-core-ui:27.0.1 (*)
|         +--- com.android.support:support-v4:23.3.0
|         |    \--- com.android.support:support-annotations:23.3.0 -> 27.0.1
|         \--- com.android.support:recyclerview-v7:23.3.0
|              +--- com.android.support:support-v4:23.3.0 (*)
|              \--- com.android.support:support-annotations:23.3.0 -> 27.0.1
\--- cat.ereza:customactivityoncrash:2.2.0
     \--- com.android.support:appcompat-v7:27.0.1 (*)

Есть ли способ решить мою проблему?

Могу ли я просто исключить (под) зависимости в моем build.gradle? У меня есть некоторые сомнения, потому что названия пакетов в AndroidX и Android Support различаются.

Обновлено: я включил Jetifier в своем проекте gradle.properties, как это было предложено Commonsware, но у меня все еще была та же ошибка:

android.useAndroidX=true
android.enableJetifier=true

Теоретически здесь должен помочь Jetifier: stackoverflow.com/q/51680671/115145

CommonsWare 06.08.2018 13:22

Хорошо, я до сих пор не включал Jetifier. Я попробую и сообщу! Спасибо!

Christopher 06.08.2018 13:28
2
2
3 179
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я не узнал, что AndroidX требует минимальной версии Android Studio 3.2. Я все еще работал над Android Studio 3.1, поэтому Jetifier не работал. После этого мой код компилируется.

Другие вопросы по теме