Я использую Studio 3.3.1 Build с 28 января.
Для меня я получал сообщение «Ошибка при связывании ресурсов Android», указывающее на строку в файле макета с использованием ConstraintLayout, который работал правильно до сегодняшнего дня, когда единственное изменение в моем файле gradle уровня приложения заключалось в обновлении версий:
android.arch.navigation:navigation-fragment
android.arch.navigation:navigation-ui
от 1.0.0-rc01
до 1.0.0-rc02
.
В сообщении об ошибке говорилось о непризнании, layout_constraintTop_toTopOf
что, конечно, глупо, потому что оно успешно компилировалось в течение нескольких месяцев.
У меня уже есть 28.0.3 инструментов сборки и compileSdkVersion
28. Я использую androidx.appcompat
везде уже какое-то время (преобразовал этот проект несколько месяцев назад в androidx).
Сначала я прошел очистку проекта (без помощи) и отключил кеш / перезапуск (без помощи). Рассматриваемый макет был первоначально определен с использованием
<TextView>
, <EditText>
и <ImageView>
компоненты (которые до сегодняшнего дня работали нормально).
Но после прочтения приведенных выше ответов я подумал, что, может быть, здесь возникла путаница, поэтому я изменил макет, чтобы использовать:
<androidx.appcompat.widget
версии всех различных компонентов. Без изменений - все равно ошибка.
Затем я удалил <androidx.appcompat.widget.AppCompatTextView
блок, который вызывал ошибку компиляции. Я изменил все ссылки на него в других виджетах, чтобы вместо этого ссылаться на «родительский». Сделал марку. На этот раз компиляция завершилась без ошибок .
Я подумал, что что-то странное в этом определении виджета ... вот что это было:
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/contact_firstname_label"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/contact_fname_label"
android:gravity="end"
android:textAppearance="@android:style/TextAppearance.Material.Small"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@+id/contact_detail_fname"
app:layout_constraintBaseline_toBaselineOf="@+id/contact_detail_fname"/>
Затем я вставил обратно блок, который у меня был ранее вырезан с помощью Ctrl-V, и изменил ссылки обратно на этот идентификатор в других компонентах, которые ссылаются на него в макете. Сбой компиляции .
Я снова вырезал блок и вставил его в WordPad. Затем, прочитав вставку WordPad, я на самом деле набрал ее обратно (т.е. на этот раз я не копировал / вставлял) - строка за строкой, выполняя make в проекте после того, как я ввел минимальное определение, а затем снова после того, как вставляйте каждую новую строку. Каждый раз проект компилировался чисто!
Я не знаю, что с этим делать. Возможно, изначально в файле был какой-то ложный невидимый символ?