После миграции на androidx: не найден класс "androidx.constraintlayout.ConstraintLayout" по пути: DexPathList - PullRequest
0 голосов
/ 19 февраля 2019

Я искал ответ на свою проблему, как показано в заголовке этого вопроса, и обнаружил Ошибка надувания класса androidx.constraintlayout.ConstraintLayout после миграции на androidx , которая совпадает с официальной миграциейинструкции представлены в Миграция на AndroidX .Я воспринял информацию как требование, чтобы я изменил android.support.constraint.ConstraintLayout на androidx.constraintlayout.widget.ConstraintLayout, но это не работает для меня.

Я не нашел ничего о том, какую зависимость поместить в мой файл Gradle, поэтому я попробовал это (это выстрел в темноте):

    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

, что принимается, но когдаЯ пытался:

    implementation 'androidx.constraintlayout.widget:constraintlayout:1.1.3'

Я получаю ОШИБКА: Не удалось разрешить: androidx.constraintlayout.widget: constraintlayout: 1.1.3 , поэтому я использовал предыдущую реализациюдиректива.

Вот мой XML-файл:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.jbiss.petminder.activities.MainActivity">

<!--<android.support.v7.widget.Toolbar-->
<androidx.appcompat.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/my_toolbar"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:background="@color/colorPrimaryDark"
    android:elevation="4dp"
    app:layout_constraintTop_toTopOf="parent"
    app:popupTheme="@style/AppTheme.PopupOverlay"/>

<TextView
    android:id="@+id/tvMsg"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="8dp"
    android:accessibilityLiveRegion="assertive"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.502"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/my_toolbar"
    tools:text="error message goes here"/>

<TextView
    android:id="@+id/tvEmVet"
    android:layout_width="wrap_content"
    android:layout_height="44dp"
    android:layout_marginBottom="8dp"
    android:layout_marginStart="20dp"
    android:layout_marginTop="8dp"
    android:text="@string/emergency_vet"
    android:textColor="@android:color/holo_red_dark"
    android:textSize="24sp"
    app:layout_constraintStart_toEndOf="@+id/phoneCallEmVet"
    app:layout_constraintTop_toBottomOf="@+id/recyclerview1"
    tools:textSize="24sp"/>

<ImageView
    android:id="@+id/phoneCallEmVet"
    android:layout_width="37dp"
    android:layout_height="44dp"
    android:layout_marginBottom="8dp"
    android:layout_marginLeft="24dp"
    android:layout_marginTop="8dp"
    android:onClick="callEmVet"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/recyclerview1"
    app:srcCompat="@android:drawable/sym_action_call"/>

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recyclerview1"
    android:layout_width="368dp"
    android:layout_height="365dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:text="@string/pet_name"
    app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/my_toolbar"/>
</androidx.constraintlayout.widget.ConstraintLayout>

Запуск моего приложения приводит к следующей ошибке:

2019-02-18 19:43:36.031 458-458/com.example.jbiss.petminder E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.jbiss.petminder, PID: 458
android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class android.support.constraint.ConstraintLayout
Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class android.support.constraint.ConstraintLayout
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.constraint.ConstraintLayout" on path: DexPathList[[zip file "/data/app/com.example.jbiss.petminder-i-ubC_oLu_y7-aFpiqALqg==/base.apk", zip file "/data/app/com.example.jbiss

Следование информации не работает, для некоторыхпричина.Миграция была трудной, но я устранил многие проблемы и теперь не могу найти причину, по которой это происходит, когда выясняется, что я сделал то, что предполагалось.

1 Ответ

0 голосов
/ 19 февраля 2019

Я решил свою проблему.Я обнаружил, что миграция Androidx немного сложнее, чем я думал вначале.Зная, что я обновил метки элементов ConstraintLayout в XML-файлах, используемых на начальном экране, я использовал Windows GREP для поиска « android.support.constraint.ConstraintLayout » по всему моему проекту.И вот, я нашел пропущенные экземпляры, поэтому я обновил ссылку на файл XML на « androidx.constraintlayout.widget.ConstraintLayout ».

Это позволило успешно построить мой проект изапустить на эмуляторе.Тем не менее, после попытки получить доступ к другому экрану я получил ту же ошибку, как показано в моем первоначальном сообщении, но для AppBarLayout.Итак, я должен перейти к этому, как я сделал для ConstraintLayout, а затем и для всех остальных.

Если вы мигрируете, будьте готовы к чуть большему количеству работы, чем вы ожидали!

...