Phần mềm đã cho chứa một chuỗi ký tự với tham chiếu gói 'android.support.v4.content' không thể được viết lại một cách an toàn. cho androidx


99

Tôi đã nâng cấp của mình android studio to 3.4 canaryvà bây giờ tôi không thể tạo thành công nữa do lỗi sau:

The given artifact contains a string literal with a package reference 'android.support.v4.content' that cannot be safely rewritten. Libraries using reflection such as annotation processors need to be updated manually to add support for androidx.

Thêm chi tiết:

Caused by: java.lang.RuntimeException: Failed to transform '.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife-compiler/9.0.0-SNAPSHOT/732f93940c74cf32a7c5ddcc5ef66e53be052352/butterknife-compiler-9.0.0-SNAPSHOT.jar' using Jetifier. Reason: The given artifact contains a string literal with a package reference 'android.support.v4.content' that cannot be safely rewritten. Libraries using reflection such as annotation processors need to be updated manually to add support for androidx.. (Run with --stacktrace for more details.)

Rõ ràng, nó liên quan đến Butterknife, androidx and Jetifier

Có ai biết cách sửa lỗi này không?


đã thử cái này: cái này nhưng không gặp may
Tnaffh

Biểu thức chính quy mà bạn đã cố thêm vào danh sách đen là gì?
Jorge Gil

Phần mềm đã cho chứa một chuỗi ký tự với tham chiếu gói 'android.support.v4.widget' không thể được viết lại một cách an toàn. Các thư viện sử dụng phản chiếu như bộ xử lý chú thích cần được cập nhật theo cách thủ công để thêm hỗ trợ cho androidx. Tôi nhận được lỗi ở trên khi tôi đang cố gắng tạo apk đã ký với nguồn thu nhỏ và nguồn thu nhỏ được đặt thành true. Tôi có thể chạy ứng dụng trong trình mô phỏng hoặc thiết bị khác. Làm thế nào để giải quyết vấn đề này?
Arpit Rastogi

Câu hỏi hay! Rất hữu ích, cảm ơn
Androider

Câu trả lời:


148

Câu trả lời đúng mới:

Butterknife 10.0.0 đã thêm hỗ trợ cho AndroidX.

dependencies {
    implementation 'com.jakewharton:butterknife:10.0.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
}

Câu trả lời cũ cho Butterknife <10.0.0:

Thử đưa dao cắt bơ vào danh sách đen từ máy xay:

gradle.properties file:

android.jetifier.blacklist = butterknife.*\\.jar

Bạn cần sử dụng phiên bản 3.3.0-rc1 của AGP và phiên bản 1.3.0 của plugin Kotlin Gradle:

buildscript {
    repositories {
        ...
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.0-rc01'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.0"
        classpath 'com.jakewharton:butterknife-gradle-plugin:9.0.0-rc2'
    }
}

Tôi nghĩ rằng bạn không thêm android.jetifier.blacklist = butterknife. * \\. Jar vì tôi đã thử nghiệm nó không hoạt động. Bạn chỉ thêm classpath 'com.jakewharton: butterknife-gradle-plugin: 9.0.0-rc2' thì nó sẽ hoạt động khi gỡ lỗi và xuất tệp apk mà không có vấn đề gì.
kimcy929

Có thể tìm thấy thêm thông tin tại đây Issuetracker.google.com/issues/119135578#comment5
Jude Fernandes

1
Câu trả lời này đúng, nhưng hãy xem tại: stackoverflow.com/a/54345816/371749 cập nhật butterknife lên 10, cũng giải quyết vấn đề này theo cách tốt hơn.
cV2

Giải pháp này hoạt động tốt cho bản dựng gỡ lỗi nhưng tôi không thể tạo APK bản phát hành đã ký. Phần mềm đã cho chứa một chuỗi ký tự với tham chiếu gói 'android.support.v4.widget' không thể được viết lại một cách an toàn. Các thư viện sử dụng phản chiếu như bộ xử lý chú thích cần được cập nhật theo cách thủ công để thêm hỗ trợ cho androidx.
Arpit Rastogi

rất hữu ích, cảm ơn
Androider

60

Thêm phiên bản cuối cùng của phụ thuộc butterknive mà bạn có thể kiểm tra tại đây nếu nó thay đổi ( https://github.com/JakeWharton/butterknife ). Nó hỗ trợ androidX. Sau đó, chuyển đến graddle xây dựng ứng dụng của bạn và thay thế phiên bản cũ bằng phiên bản sau:

dependencies {
implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
}

27

Đối với androidx, chỉ cần nâng cấp các phụ thuộc của bạn lên phiên bản '10 .0.0 '

dependencies {
implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
}

Tìm tài liệu tại đây


Hộp văn bản chỉnh sửa Nhấp chuột của tôi cung cấp con trỏ rỗng. nó không được khởi tạo.
Vasudev Vyas

18

Nâng cấp ButterKnife lên phiên bản mới nhất và đảm bảo thêm những thứ này vào build.gradle (ứng dụng) của bạn:

android {
...
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
}

câu trả lời hay nhất, sau khi upgeade, tôi đã tìm kiếm giải pháp này -> Lỗi: Các phương pháp giao diện tĩnh chỉ được hỗ trợ bắt đầu với Android N (--min-api 24): void butterknife.Unbinder.lambda $ static $ 0 ()
avisper

yêu bạn người đàn ông bạn đã làm cho nó ... tôi đã lãng phí nửa ngày tìm kiếm thì câu trả lời này đến.
Zeeshan Mehdi

1

Phiên bản nào nếu Butterknife bạn sử dụng? Phiên bản mới nhất 9.0.0-rc2 hỗ trợ androidx.

CẬP NHẬT: Đã xảy ra sự cố đã đóng trên repo github của butterknife . Giải pháp tạm thời

Thêm android.jetifier.blacklist = butterknife-compiler vào tệp gradle.properties của bạn.


Tôi đang trên 9.0.0-RC2 và tôi nhận được lỗi chính xác cùng
Jorge Gil


1

Dự án của tôi không sử dụng butterknife, nhưng tôi đã gặp phải lỗi tương tự "Phần mềm đã cho chứa một chuỗi ký tự có tham chiếu gói 'android.support.v4.widget' không thể được viết lại một cách an toàn. Các thư viện sử dụng phản chiếu như bộ xử lý chú thích cần phải được cập nhật theo cách thủ công để thêm hỗ trợ cho androidx "Điều này tôi đã làm để giải quyết nó: Cập nhật phiên bản bưu kiện của bạn

tập tin xây dựng gradle

Thay thế:

annotationProcessor 'org.parceler:parceler:1.1.6'
implementation 'org.parceler:parceler-api:1.1.6'

Với:

  annotationProcessor 'org.parceler:parceler:1.1.13'
  implementation 'org.parceler:parceler-api:1.1.13'

mã tệp gradle xem tệp gradle


0

Thay đổi

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

đến

<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">

hoặc các Chủ đề Vật liệu khác. Gặp lỗi này sau khi khởi động Dự án mới với "Không có hoạt động" trong Android Studio 4.0.1


0

cập nhật butterknife + vô hiệu hóa bộ nhớ cache và khởi động lại + đồng bộ hóa gradle nếu buterknife không được sử dụng, chỉ cần xóa bộ nhớ cache và khởi động lại

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.