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)

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


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().


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


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


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


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!


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.


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.


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

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.


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

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.


0

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


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.


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.


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.


0

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.