Estou usando o Studio 3.3.1 Build de 28 de janeiro.
Para mim, eu estava recebendo o "erro de link de recurso do Android falhou" apontando para uma linha em um arquivo de layout usando ConstraintLayout que funcionava corretamente até hoje, quando a única alteração no meu arquivo gradle de nível de aplicativo era atualizar as versões de:
android.arch.navigation:navigation-fragment
android.arch.navigation:navigation-ui
de 1.0.0-rc01
para1.0.0-rc02
.
A mensagem de erro disse algo sobre não reconhecer layout_constraintTop_toTopOf
que, claro, é bobo, porque estava compilando de forma bastante feliz por meses.
Já estou em 28.0.3 de ferramentas de construção e compileSdkVersion
em 28. Tenho usadoandroidx.appcompat
todos os lugares há um tempo (converti este projeto meses de volta para androidx).
Eu primeiro passei por um projeto limpo (sem ajuda) e invalidando o cache / reiniciar (sem ajuda). O layout em questão foi originalmente definido usando
<TextView>
, <EditText>
e<ImageView>
componentes (que funcionavam bem até hoje).
Mas depois de ler as respostas acima, pensei que talvez de alguma forma houvesse confusão sendo causada aqui, então mudei o layout a ser usado:
<androidx.appcompat.widget
versões de todos os vários componentes. Sem alterações - ainda recebo o erro.
Em seguida, apaguei o <androidx.appcompat.widget.AppCompatTextView
bloco que estava causando o erro de compilação. Mudei todas as referências a ele nos outros widgets para me referir a "pai". Fez um Make. Desta vez, a compilação foi concluída sem erros .
Então, algo estranho naquela definição de widget, pensei ... aqui está o que era:
<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"/>
Em seguida, colei de volta o bloco que tinha cortado anteriormente com Ctrl-V e alterei as referências de volta a esse ID nos outros componentes que fazem referência a ele no layout. A compilação falhou .
Cortei o bloco novamente e colei no WordPad. Em seguida, lendo a colagem do WordPad, eu realmente digitei de volta (ou seja, não copiei / colei desta vez) - linha por linha, fazendo um make no projeto depois de digitar a definição mínima e, novamente, quando eu colocar em cada nova linha.Cada vez que o projeto é compilado de forma limpa!
Eu não sei o que fazer com isso. Talvez algum caractere invisível espúrio estivesse no arquivo originalmente?