androidx로 마이그레이션 한 후 androidx.constraintlayout.ConstraintLayout 클래스 확장 오류


87

방금 Android Studio 메뉴 옵션 Refactor- > Refactor to AndroidX를 통해 androidx로 마이그레이션했습니다.

다음과 같은 오류가 발생합니다.

android.view.InflateException : 이진 XML 파일 줄 # 2 : 이진 XML 파일 줄 # 2 : 클래스 androidx.constraintlayout.ConstraintLayout 확장 오류

어떤 생각?

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)

전체 스택 트레이스를 보여주세요.
TheWanderer

종속성을 볼 수 있도록 앱 수준 빌드 gradle을 공유하세요.
Abhinav Saxena 2018

답변:


177

나는 모든 발생을 변경하여 내 문제를 해결합니다.

androidx.constraintlayout.ConstraintLayout

...에

androidx.constraintlayout.widget.ConstraintLayout


12
네, Android 스튜디오 변환 오류, androidx.constraintlayout.widget.ConstraintLayout을 사용 하여 xml 레이아웃의 모든 발생을 변경해야합니다 ... 감사합니다
issamux

1
androidx 지원 라이브러리로 새 프로젝트를 만들었으며 이미 기본 활동에 androidx.constraintlayout.widget.ConstraintLayout이 있지만 여전히 동일한 오류가 발생합니다.
Kanchan

2
@Kanchan 다중 모듈 프로젝트에서 작업하는 경우 ConstraintLayout 경로를 업데이트해야하는지 확인하십시오.
Vasudev 2019 년

50

androidx.constraintlayout.widget.ConstraintLayout종속성에 추가하십시오 .

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

에서 사용할 수 있습니다 mavenCentral().


그러나 두 번째 constraintlayout는 대문자로 시작하지 않습니다 C. 정답 :'androidx.constraintlayout:constraintlayout:1.1.3'
ʍѳђ ઽ ૯ ท

경미한 두통에서 나를 구해 주셨습니다
Koen Van

1
Android Studio에서 왜 이런 일이 발생합니까? 1.1.2에서 1.1.3으로 변경했습니다. 감사합니다.
BollMose

1
@BollMose-이유는 모르겠지만 1.1.2는 숨이 막힐뿐입니다. 아마도 구글이 놓친 호환성 프로그램 일 것이다. 그들은 그것을 많이하는 경향이 있습니다. Android 프로그래밍에 오신 것을 환영합니다!
SMBiggs

2
저에게는 이것이 유일하게 받아 들일 수있는 대답이어야합니다. 1.1.2, 1.1.3으로 구성된 버그가 있으며이 문제를 해결합니다.
mochadwi

10

나는 같은 문제가 있었고 다음과 같이 해결했습니다.

당신이 추가 한 경우 당신의 의존에서

implementation 'androidx.constraintlayout:constraintlayout:1.x.x' 맞아요

하지만 XML 레이아웃 파일에서 위젯을 다음과 같이 사용해야합니다.

androidx.constraintlayout.widget.ConstraintLayout


5

만약 추가 한 후 mavenCentral ()을 당신의 Gradle을 파일 저장소로하고 변경 androidx.constraintlayout.ConstraintLayout하는 androidx.constraintlayout.widget.ConstraintLayout문제는 다음 일을 시도가 해결되지 않는 무효화 캐시와 다시 시작 파일 메뉴에서. 그것은 나를 위해 일했습니다.


5

build.gradle => 종속성 버전 확인

implementation 'androidx.constraintlayout:constraintlayout:1.1.1'


바꾸다

implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

문제를 해결했다


1
형식이 잘 지정되었고이 답변이 저에게 효과적이었습니다. 감사합니다.
Lukas Bimba

1.1.2에서 왔습니다. 1.1.3으로 업데이트하면이 문제도 해결되었습니다. 감사!
월요일

5

프로젝트가 androidx로 완전히 마이그레이션되는지 확인하십시오.

<android.support.constraint.ConstraintLayout

대신에

  <androidx.constraintlayout.widget.ConstraintLayout

그래서 그것을 변경하고 내 문제가 해결되었습니다!


4

나는 다음과 같은 문제가 있습니다.

  • androidx로 마이그레이션 지원 라이브러리;
  • targetSdkVesrsion을 29로 증가시킵니다.

또한 다음을 사용합니다.

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

이 질문의 모든 게시물을 시도했지만 성공하지 못했습니다.

.disableCustomViewInflation()Calligraphy 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());
    // ...
}

다음 캘리 그라피 릴리스 (크리스토퍼 젠킨스의 훌륭한 작업에 감사드립니다)가 내부에서도 문제가 해결되기를 바랍니다.


내 프로젝트에서도 사용하지 않았지만 라이브러리는 gradle에있었습니다. 그것을 제거한 후 앱이 예상대로 작동하기 시작했습니다. 감사합니다
Pratik Mhatre

4

를 클릭 한 후 Refactor -> Migrate to AndroidXbuild.gradle (Module : app)의 모든 종속성이 최신 버전으로 표시되어 있는지 확인하십시오 .

그렇지 않은 경우 종속성이 노란색으로 강조 표시된 색상으로 표시되며 마우스를 가져 가서 변경할 수 있습니다.

둘째, 모든 XML 레이아웃 파일의 ConstraintLayout 태그를 다음과 같이 변경합니다.

androidx.constraintlayout.widget.ConstraintLayout

더 안전한 옵션을 위해 위 단계를 수행 한 후 프로젝트를 정리하고 다시 동기화하십시오.


2

제약 레이아웃에 대한 종속성을 추가했는지 확인하십시오.

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

변경했습니다.

<androidx.constraintlayout.widget.ConstraintLayout instead of

<android.support.constraint.ConstraintLayout

1

xml에서 기존 ConstraintLayout 태그를 복사하여 붙여 넣어 문제를 일으켰습니다. AndroidStudio에서 ConstraintLayout 태그를 처음부터 삭제하고 다시 추가하면 문제가 해결되었습니다.


1

다음으로 변경하십시오.

<androidx.constraintlayout.widget.ConstraintLayout

대신에

<android.support.constraint.ConstraintLayout

<androidx.constraintlayout.widget.Barrier

대신에

<android.support.constraint.Barrier

1

Android Studio 4.0에서이 문제가 발생했습니다. 며칠 동안 문제없이 android studio 4.0을 사용했습니다. 갑자기 디자이너 뷰가 작동을 멈췄습니다. 나는 안드로이드 스튜디오를 제거하고 최신 안드로이드 스튜디오 버전을 설치해야만이 문제를 해결할 수있었습니다.


0

넵. mavenCentral () 및 올바른 종속성은 동일한 문제를 해결합니다.


0

비슷한 오류가 발생했습니다.

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

권장 사항에 따라 :

add androidx.constraintlayout.ConstraintLayout to the dependencies:

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

그리고 저장소 mavenCentral ().

나를 위해 작동합니다. APK를 컴파일 할 수 있습니다.


0

종속성을 업데이트했지만 오류가 해결되지 않았습니다. 그런 다음 깨끗한 프로젝트를 수행하고 빌드했으며 지금 작동합니다.


0
  1. Refactor-> Refactor to AndroidX를 클릭하기 전에 모든 기본값을 찾습니다.
  2. https://developer.android.com/jetpack/androidx/migrate/class-mappings를 열고 "android.support.v4.widget.DrawerLayout"을 찾으십시오. 같은 줄에서 AndroidX 클래스 이름은 "androidx.drawerlayout.widget.DrawerLayout"입니다.

여기에 이미지 설명 입력

  1. 프로젝트의 코드, 레이아웃 및 메뉴에서 모든 "android.support.v4.widget.DrawerLayout"을 "androidx.drawerlayout.widget.DrawerLayout"로 바꿉니다. 모두 대체하면 작동합니다.

내 말은 매핑을 찾아 전체 프로젝트에서 사용하는 것입니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.