Lỗi thổi phồng lớp androidx.constraintlayout.ConstraintLayout sau khi di chuyển sang androidx


87

Tôi vừa thực hiện chuyển đổi sang androidx thông qua tùy chọn menu Android Studio Refactor -> Refactor thành AndroidX

Tôi gặp lỗi sau:

android.view.InflateException: Dòng tệp XML nhị phân # 2: Dòng tệp XML nhị phân # 2: Lỗi thổi phồng lớp androidx.constraintlayout.ConstraintLayout

Bất kỳ ý tưởng?

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)

Vui lòng hiển thị toàn bộ stacktrace.
TheWanderer

Vui lòng chia sẻ thang điểm xây dựng cấp ứng dụng của bạn để chúng tôi có thể thấy các yếu tố phụ thuộc.
Abhinav Saxena

Câu trả lời:


177

Tôi giải quyết vấn đề của mình bằng cách thay đổi tất cả các lần xuất hiện của

androidx.constraintlayout.ConstraintLayout

đến

androidx.constraintlayout.widget.ConstraintLayout


12
Yep, lỗi trong biến đổi Android studio, phải thay đổi tất cả điều xảy ra trong cách bố trí xml với androidx.constraintlayout.widget.ConstraintLayout ... thanks
issamux

1
Tôi đã tạo một dự án mới với thư viện hỗ trợ androidx và tôi đã có androidx.constraintlayout.widget.ConstraintLayout trong hoạt động chính của mình nhưng vẫn gặp lỗi tương tự.
Kanchan

2
@Kanchan Nếu bạn đang làm việc trong một dự án nhiều mô-đun, hãy kiểm tra xem bạn có cần cập nhật đường dẫn ConstraintLayout trong bất kỳ không.
Vasudev

50

Thêm androidx.constraintlayout.widget.ConstraintLayoutvào các phụ thuộc:

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

Nó có sẵn trên mavenCentral().


Tuy nhiên, thứ hai constraintlayoutkhông bắt đầu bằng chữ hoa C. Một câu đúng:'androidx.constraintlayout:constraintlayout:1.1.3'
ʍѳђ ઽ ૯ ท

Bạn đã cứu tôi khỏi bị nhức đầu nhẹ
Koen Van Looveren

1
Tại sao điều này xảy ra trên Android Studio? Tôi đã thay đổi nó từ 1.1.2 thành 1.1.3. Cảm ơn bạn.
BollMose

1
@BollMose - Tôi không biết tại sao, nhưng 1.1.2 chỉ bị nghẹt thở. Có lẽ là một số chương trình tương thích mà những người tử tế Google đã bỏ qua. Họ có xu hướng làm điều đó rất nhiều; chào mừng đến với lập trình Android!
SMBiggs

2
Đối với tôi, đây là câu trả lời chấp nhận được duy nhất. Có một lỗi bao gồm 1.1.2, 1.1.3, khắc phục sự cố này.
mochadwi

10

Tôi đã gặp vấn đề tương tự, tôi đã giải quyết nó như sau:

Trong phụ thuộc của bạn nếu bạn đã thêm

implementation 'androidx.constraintlayout:constraintlayout:1.x.x' đúng rồi

nhưng trong tệp bố cục xml của bạn, bạn phải sử dụng tiện ích con như

androidx.constraintlayout.widget.ConstraintLayout


5

Nếu sau khi thêm mavenCentral () làm kho lưu trữ trong tệp Gradle của bạn và thay đổi androidx.constraintlayout.ConstraintLayoutthành androidx.constraintlayout.widget.ConstraintLayoutkhông giải quyết được sự cố của bạn thì hãy thử thực hiện Không hợp lệ bộ nhớ cache và khởi động lại từ menu tệp. Nó đã làm việc cho tôi.


5

build.gradle => kiểm tra phiên bản phụ thuộc

implementation 'androidx.constraintlayout:constraintlayout:1.1.1'


thay đổi

implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

Đã giải quyết vấn đề


1
Nó được định dạng tốt và câu trả lời này phù hợp với tôi. Cảm ơn bạn.
Lukas Bimba

đến từ 1.1.2. cập nhật lên 1.1.3 cũng đã sửa lỗi này cho tôi. cảm ơn!
Thứ Hai,

5

đảm bảo dự án của bạn chuyển sang androidx hoàn toàn, Trong trường hợp của tôi, tôi thấy:

<android.support.constraint.ConstraintLayout

thay vì

  <androidx.constraintlayout.widget.ConstraintLayout

Vì vậy, hãy thay đổi nó và vấn đề của tôi đã được khắc phục!


4

Tôi gặp vấn đề tương tự sau:

  • thư viện hỗ trợ di chuyển sang androidx;
  • tăng targetSdkVesrsion lên 29;

Tôi cũng dùng:

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

Tôi đã thử tất cả các bài viết từ câu hỏi này, nhưng không thành công.

Tôi sửa nó bằng cách thêm một chuỗi .disableCustomViewInflation()vào init thư pháp:

@Override
public void onCreate() {

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

Tôi hy vọng phiên bản tiếp theo của Thư pháp (Christopher Jenkins cảm ơn vì công việc tuyệt vời của bạn) cũng sẽ khắc phục được nó.


Tôi thậm chí đã không sử dụng nó trong dự án của mình nhưng thư viện đã ở đó trong gradle. Sau khi gỡ bỏ nó, ứng dụng bắt đầu hoạt động như mong đợi. Cảm ơn
Pratik Mhatre

4

Sau khi nhấp vào Refactor -> Migrate to AndroidX, hãy đảm bảo rằng tất cả các phần phụ thuộc của bạn trong build.gradle (Mô-đun: ứng dụng) được đánh dấu là phiên bản mới nhất.

Nếu không, phần phụ thuộc sẽ xuất hiện bằng màu được đánh dấu màu vàng và bạn có thể thay đổi nó bằng cách di chuột qua nó.

Thứ hai, thay đổi thẻ ConstraintLayout trong tất cả các tệp bố cục XML thành

androidx.constraintlayout.widget.ConstraintLayout

Để có tùy chọn an toàn hơn, hãy dọn dẹp dự án của bạn và đồng bộ hóa lại sau các bước trên.


2

Đảm bảo rằng bạn đã thêm phần phụ thuộc cho bố cục ràng buộc

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

và đã thực hiện các thay đổi đối với

<androidx.constraintlayout.widget.ConstraintLayout instead of

<android.support.constraint.ConstraintLayout

1

Tôi đã sao chép và dán thẻ ConstraintLayout hiện có từ xml, thẻ này đang gây ra sự cố cho tôi. Chỉ cần xóa và thêm lại các thẻ ConstraintLayout trong AndroidStudio từ đầu đã khắc phục được sự cố cho tôi.


1

Đảm bảo thay đổi thành

<androidx.constraintlayout.widget.ConstraintLayout

thay vì

<android.support.constraint.ConstraintLayout

<androidx.constraintlayout.widget.Barrier

thay vì

<android.support.constraint.Barrier

1

Tôi gặp sự cố này với Android Studio 4.0. Tôi đã sử dụng android studio 4.0 trong một vài ngày mà không gặp vấn đề gì. Có vẻ như không biết từ đâu, chế độ xem của nhà thiết kế đã ngừng hoạt động. Tôi chỉ có thể khắc phục điều này bằng cách gỡ cài đặt android studio và cài đặt phiên bản android studio mới nhất.


0

yepp. mavenCentral () và các phần phụ thuộc đúng giải quyết các vấn đề tương tự của tôi


0

Tôi đã gặp một lỗi tương tự.

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

Sau các gợi ý:

add androidx.constraintlayout.ConstraintLayout to the dependencies:

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

Và kho lưu trữ mavenCentral ().

Làm việc cho tôi. Tôi có thể biên dịch APK.


0

Tôi đã cập nhật phần phụ thuộc, nhưng nó không giải quyết được lỗi. Sau đó, tôi đã thực hiện một dự án sạch và xây dựng và nó đang hoạt động ngay bây giờ.


0
  1. Tìm tất cả mặc định trước đó để nhấp vào Refactor -> Refactor thành AndroidX
  2. Mở https://developer.android.com/jetpack/androidx/migrate/class-mappings này và tìm "android.support.v4.widget.DrawerLayout". Trong cùng một dòng, tên lớp AndroidX là "androidx.drawerlayout.widget.DrawerLayout" sao chép nó.

nhập mô tả hình ảnh ở đây

  1. Thay thế tất cả "android.support.v4.widget.DrawerLayout" thành "androidx.drawerlayout.widget.DrawerLayout" trong mã, bố cục và menu dự án của bạn. Sau khi thay thế xong, nó sẽ hoạt động.

Ý tôi là tìm bản đồ và sử dụng nó trong toàn bộ dự án.


0

thay đổi sự phụ thuộc của bố cục ràng buộc của bạn thành việc triển khai 'androidx.constraintlayout: bindinglayout: 2.0.2'

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.