Erro ao aumentar a classe androidx.constraintlayout.ConstraintLayout após a migração para androidx

87

Acabei de fazer uma migração para o androidx por meio da opção de menu Refactor do Android Studio -> Refactor para AndroidX

Estou recebendo o seguinte erro:

android.view.InflateException: Arquivo XML binário linha # 2: Arquivo XML binário linha # 2: Erro inflating class androidx.constraintlayout.ConstraintLayout

Qualquer ideia?

Stacktrace:

2018-10-19 00:25:58.128 28131-28131/com.midounoo.midounoo E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.midounoo.midounoo, PID: 28131
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.midounoo.midounoo/com.midounoo.midounoo.Base.MainActivity}: android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class androidx.constraintlayout.ConstraintLayout
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2724)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2789)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1527)
        at android.os.Handler.dispatchMessage(Handler.java:110)
        at android.os.Looper.loop(Looper.java:203)
        at android.app.ActivityThread.main(ActivityThread.java:6255)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)
     Caused by: android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class androidx.constraintlayout.ConstraintLayout
     Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class androidx.constraintlayout.ConstraintLayout
     Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.constraintlayout.ConstraintLayout" on path: DexPathList[[zip file "/data/app/com.midounoo.midounoo-2/base.apk", zip file "/data/app/com.midounoo.midounoo-2/split_lib_dependencies_apk.apk", zip file "/data/app/com.midounoo.midounoo-2/split_lib_slice_0_apk.apk", zip file "/data/app/com.midounoo.midounoo-2/split_lib_slice_1_apk.apk", zip file "/data/app/com.midounoo.midounoo-2/split_lib_slice_2_apk.apk", zip file "/data/app/com.midounoo.midounoo-2/split_lib_slice_3_apk.apk", zip file "/data/app/com.midounoo.midounoo-2/split_lib_slice_4_apk.apk", zip file "/data/app/com.midounoo.midounoo-2/split_lib_slice_5_apk.apk", zip file "/data/app/com.midounoo.midounoo-2/split_lib_slice_6_apk.apk", zip file "/data/app/com.midounoo.midounoo-2/split_lib_slice_7_apk.apk", zip file "/data/app/com.midounoo.midounoo-2/split_lib_slice_8_apk.apk", zip file "/data/app/com.midounoo.midounoo-2/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.midounoo.midounoo-2/lib/arm64, /system/lib64, /vendor/lib64, /system/vendor/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at android.view.LayoutInflater.createView(LayoutInflater.java:609)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:787)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:495)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
        at com.midounoo.midounoo.Base.MainActivity.onCreate(MainActivity.java:43)
        at android.app.Activity.performCreate(Activity.java:6666)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2677)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2789)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1527)
        at android.os.Handler.dispatchMessage(Handler.java:110)
        at android.os.Looper.loop(Looper.java:203)
        at android.app.ActivityThread.main(ActivityThread.java:6255)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
KevinMo
fonte
Mostre todo o stacktrace, por favor.
TheWanderer
Compartilhe seu gradle de compilação de nível de aplicativo para que possamos ver as dependências.
Abhinav Saxena

Respostas:

177

Eu resolvo meu problema mudando todas as ocorrências de

androidx.constraintlayout.ConstraintLayout

para

androidx.constraintlayout.widget.ConstraintLayout

KevinMo
fonte
12
Sim, erro nas transformações do Android Studio, deve alterar todas as ocorrências no layout xml com androidx.constraintlayout.widget.ConstraintLayout ... obrigado
issamux
1
Eu criei um novo projeto com a biblioteca de suporte androidx e já tenho androidx.constraintlayout.widget.ConstraintLayout em minha atividade principal, mas ainda estou recebendo o mesmo erro.
Kanchan
2
@Kanchan Se você estiver trabalhando em um projeto de vários módulos, verifique se precisa atualizar o caminho ConstraintLayout em algum.
Vasudev
50

Adicione androidx.constraintlayout.widget.ConstraintLayoutàs dependências:

dependencies  {
    // https://mvnrepository.com/artifact/androidx.constraintlayout/constraintlayout
    implementation "androidx.constraintlayout:constraintlayout:1.1.3"
}

Está disponível em mavenCentral().

Martin Zeitler
fonte
O segundo constraintlayoutnão começa em maiúsculas C. Correto:'androidx.constraintlayout:constraintlayout:1.1.3'
ʍѳђ ઽ ૯ ท
Você me salvou de uma pequena dor de cabeça
Koen Van Looveren
1
Por que isso acontece no Android Studio? Eu mudei de 1.1.2 para 1.1.3. Obrigado.
BollMose
1
@BollMose - Não sei porque, mas 1.1.2 simplesmente morre sufocado. Provavelmente algum programa de compatibilidade que as pessoas legais do Google sentiram falta. Eles tendem a fazer muito isso; bem-vindo à programação do Android!
SMBiggs de
2
Para mim, essa deve ser a única resposta aceitável. Há um bug que consiste em 1.1.2, 1.1.3, corrige esse problema.
mochadwi
10

Eu tive o mesmo problema, resolvi da seguinte maneira:

Em suas dependências, se você adicionou

implementation 'androidx.constraintlayout:constraintlayout:1.x.x' está correto

mas em seu arquivo de layout xml, você deve usar o widget como

androidx.constraintlayout.widget.ConstraintLayout

Mirwise Khan
fonte
5

Se depois de adicionar mavenCentral () como um repositório em seu arquivo Gradle e mudar androidx.constraintlayout.ConstraintLayoutpara androidx.constraintlayout.widget.ConstraintLayoutnão resolver o problema, tente Invalidar cache e reinicie a partir do menu de arquivo. Funcionou para mim

Neeraj Sewani
fonte
5

build.gradle => verificar a versão das dependências

implementation 'androidx.constraintlayout:constraintlayout:1.1.1'


mudar

implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

resolveu o problema

Sakthi Vel
fonte
1
Está bem formatado e essa resposta funcionou para mim. Obrigado.
Lukas Bimba de
veio de 1.1.2. atualizar para 1.1.3 corrigiu isso para mim também. obrigado!
Seg
5

certifique-se de que seu projeto migre para o androidx completamente. No meu caso, encontrei:

<android.support.constraint.ConstraintLayout

ao invés de

  <androidx.constraintlayout.widget.ConstraintLayout

Então mude e meu problema será resolvido!

sana ebadi
fonte
4

Eu tenho o mesmo problema depois de:

  • biblioteca de suporte de migração para androidx;
  • incrementar targetSdkVesrsion para 29;

Eu também uso:

implementation "uk.co.chrisjenx:calligraphy:2.3.0"

Tentei todos os posts desta questão, mas nenhum sucesso.

Eu corrijo isso adicionando uma string .disableCustomViewInflation()ao Caligraphy init:

@Override
public void onCreate() {

    super.onCreate();
    // ...
    CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
            .setDefaultFontPath("fonts/Sans-Regular.ttf")
            .setFontAttrId(R.attr.fontPath)
            .disableCustomViewInflation() // <----- this fix
            .build());
    // ...
}

Espero que o próximo lançamento do Calligraphy (Christopher Jenkins, obrigado pelo seu excelente trabalho) conserte isso por dentro também.

Tapa Save
fonte
Eu nem estava usando no meu projeto, mas a biblioteca estava lá no gradle. Após removê-lo, o aplicativo começou a funcionar conforme o esperado. Obrigado
Pratik Mhatre
4

Após clicar em Refactor -> Migrate to AndroidX, certifique-se de que todas as suas dependências no build.gradle (Módulo: app) estejam marcadas para a versão mais recente.

Caso contrário, a dependência aparecerá destacada em amarelo e você pode alterá-la passando o mouse sobre ela.

Em segundo lugar, altere a tag ConstraintLayout em todos os arquivos de layout XML para

androidx.constraintlayout.widget.ConstraintLayout

Para uma opção mais segura, limpe seu projeto e sincronize-o novamente após as etapas acima.

Akshay Chopra
fonte
2

Certifique-se de ter adicionado a dependência para o layout de restrição

 dependencies  {
    implementation "androidx.constraintlayout:constraintlayout:1.1.3"
}

e fizeram as alterações em

<androidx.constraintlayout.widget.ConstraintLayout instead of

<android.support.constraint.ConstraintLayout
Ravi
fonte
1

Copiei e colei uma tag ConstraintLayout existente do xml, que estava causando o problema para mim. Simplesmente excluir e adicionar novamente as tags ConstraintLayout no AndroidStudio do zero resolveu o problema para mim.

Abhas Arya
fonte
1

Certifique-se de mudar para

<androidx.constraintlayout.widget.ConstraintLayout

ao invés de

<android.support.constraint.ConstraintLayout

e

<androidx.constraintlayout.widget.Barrier

ao invés de

<android.support.constraint.Barrier
Kumar
fonte
1

Tive esse problema com o Android Studio 4.0. Usei o Android Studio 4.0 por alguns dias sem problemas. Aparentemente, do nada, a visão do designer parou de funcionar. Só consegui consertar isso desinstalando o Android Studio e instalando a versão mais recente do Android Studio.

ROSA
fonte
0

sim. mavenCentral () e dependências corretas resolvem meus mesmos problemas

Ya Si
fonte
0

Eu tive um erro semelhante.

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp/com.myapp.MainActivity}: android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class androidx.constraintlayout.widget.ConstraintLayout
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2757)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2818)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1557)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:163)
        at android.app.ActivityThread.main(ActivityThread.java:6393)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:933)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
    Caused by: android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class androidx.constraintlayout.widget.ConstraintLayout
    Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class androidx.constraintlayout.widget.ConstraintLayout
    Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
        at android.view.LayoutInflater.createView(LayoutInflater.java:652)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:812)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:752)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:499)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:430)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
        at com.myapp.MainActivity.onCreate(MainActivity.java:23)
        at android.app.Activity.performCreate(Activity.java:6858)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2710)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2818)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1557)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:163)
        at android.app.ActivityThread.main(ActivityThread.java:6393)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:933)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
    Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/constraintlayout/widget/R$styleable;
        at androidx.constraintlayout.widget.ConstraintLayout.init(ConstraintLayout.java:590)
        at androidx.constraintlayout.widget.ConstraintLayout.<init>(ConstraintLayout.java:567)
        ... 23 more
    Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.constraintlayout.widget.R$styleable" on path: DexPathList[[zip file "/data/app/com.myapp-1/base.apk"],nativeLibraryDirectories=[/data/app/com.myapp-1/lib/arm64, /system/lib64, /vendor/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        ... 25

Seguindo as recomendações:

add androidx.constraintlayout.ConstraintLayout to the dependencies:

dependencies  {
    implementation "androidx.constraintlayout:constraintlayout:1.1.3"
}

E o repositório mavenCentral ().

Funciona para mim. Eu poderia compilar o APK.

Juan Francisco Romero Gutirrez
fonte
0

Atualizei a dependência, mas não resolveu o erro. Então fiz um projeto e uma compilação limpos e está funcionando agora.

Bishoy Abd
fonte
0
  1. Encontre todos os padrões antes de clicar em Refatorar -> Refatorar para AndroidX
  2. Abra este https://developer.android.com/jetpack/androidx/migrate/class-mappings e encontre "android.support.v4.widget.DrawerLayout". Na mesma linha, o nome da classe AndroidX é "androidx.drawerlayout.widget.DrawerLayout" copie-o.

insira a descrição da imagem aqui

  1. Substitua todo o "android.support.v4.widget.DrawerLayout" por "androidx.drawerlayout.widget.DrawerLayout" no código, layout e menu do seu projeto. Afinal, substitua ele funcionará.

Quero dizer, encontrar mapeamento e usá-lo em todo o projeto.

Ethemsulan
fonte
0

mude sua dependência de layout de restrição para a implementação 'androidx.constraintlayout: constraintlayout: 2.0.2'

Emmanuel Ametepee
fonte