Ошибка «androidx.appcompat.widget.N не может быть приведена к com.google.android.material.button.MaterialButton» - PullRequest
1 голос
/ 27 марта 2019

Я перенес свое приложение на androidx, и теперь в выпущенной версии я получаю эту ошибку.Он отлично работает во всех моих тестах, даже тестовая лаборатория не находит эту ошибку.

Я проверил все ссылки на нее, и они все в порядке.

Строка сошибка:

    private MaterialButton mShiftStartDate;

private void getVars() {
.
        mShiftStartDate = v.findViewById(R.id.shift_start_date_tv);
.
}

и xml:

    <com.google.android.material.button.MaterialButton
        style="@style/Widget.MaterialComponents.Button.OutlinedButton"
        android:id="@id/shift_start_date_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:textSize="18sp"
        android:visibility="visible"
        app:layout_constraintEnd_toEndOf="@id/shift_start_date_label"
        app:layout_constraintHorizontal_chainStyle="spread_inside"
        app:layout_constraintStart_toStartOf="@id/shift_start_date_label"
        app:layout_constraintTop_toBottomOf="@id/shift_start_date_label"
        tools:text="10/10/18" />

и части build.gradle

    defaultConfig {
        applicationId appId
        targetSdkVersion 28
        minSdkVersion 19
        versionCode buildCode
        versionName versionMajor+"."+versionMinor+"."+versionRevision+"."+versionBuild
        resValue "string", "CURRENT_VERSION", versionName
    }
    compileOptions {
        sourceCompatibility 1.8
        targetCompatibility 1.8
    }
dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.appcompat:appcompat:1.1.0-alpha03'
    implementation 'com.google.android.material:material:1.1.0-alpha04'
    implementation 'androidx.recyclerview:recyclerview:1.1.0-alpha03'
    implementation 'androidx.browser:browser:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha3'
    implementation 'androidx.preference:preference:1.1.0-alpha04'
    implementation 'androidx.annotation:annotation:1.1.0-alpha02'
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'android.arch.navigation:navigation-fragment:1.0.0'
    implementation 'android.arch.navigation:navigation-ui:1.0.0'
    implementation 'com.google.android.gms:play-services-ads-lite:17.2.0'
    implementation 'com.google.android.gms:play-services-oss-licenses:16.0.2'
    implementation 'org.jetbrains:annotations:17.0.0'
}

Поиск его не приводит ни к каким другимпримеры проблемы.Единственное, о чем я могу думать, это о том, что proguard переименовывает то, чего не должен.Так как мне не удается воспроизвести его (это случилось только с 5 пользователями, но всего 26 раз) в любом эмуляторе или с помощью тестовых устройств, я не могу протестировать что-то вроде

-keep class androidx.appcompat.widget.** {*;}

, котороеэто все, что я могу сделать.

1 Ответ

1 голос
/ 27 марта 2019

у вас есть дублирующаяся зависимость:

implementation 'androidx.appcompat:appcompat:1.1.0-alpha03'
// implementation 'com.android.support:appcompat-v7:28.0.0'

и нет виджета N.отображение ProGuard может сказать, что это на самом деле.

-keep,includedescriptorclass class androidx.appcompat.widget.** { *; }

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

...