제공된 아티팩트에 안전하게 다시 작성할 수없는 패키지 참조 'android.support.v4.content'가있는 문자열 리터럴이 포함되어 있습니다. androidx 용


102

업그레이드했는데 android studio to 3.4 canary다음 오류로 인해 더 이상 성공적으로 빌드 할 수 없습니다.

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.

자세한 내용은:

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

분명히, 그것과 관련된 것 Butterknife, androidx and Jetifier

아무도 이것을 고치는 방법을 알고 있습니까?


이 노력 있지만 운
Tnaffh

블랙리스트에 추가하려는 정규식은 무엇입니까?
Jorge Gil

제공된 아티팩트에 안전하게 다시 작성할 수없는 패키지 참조 'android.support.v4.widget'이있는 문자열 리터럴이 포함되어 있습니다. 주석 프로세서와 같은 리플렉션을 사용하는 라이브러리는 androidx 지원을 추가하기 위해 수동으로 업데이트해야합니다. minifyenabled 및 shrinkresources를 true로 설정하여 서명 된 APK를 만들려고 할 때 위의 오류가 발생합니다. 에뮬레이터 또는 장치에서 응용 프로그램을 실행할 수 있습니다. 이 문제를 해결하는 방법은 무엇입니까?
Arpit Rastogi

좋은 질문! 매우 도움, 감사합니다
Androider

답변:


162

새로운 정답 :

Butterknife 10.0.0은 AndroidX에 대한 지원을 추가했습니다.

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

Butterknife <10.0.0에 대한 이전 답변 :

jetifier에서 버터 나이프를 블랙리스트에 추가해보세요.

gradle.properties file:

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

AGP의 3.3.0-rc1 및 Kotlin Gradle 플러그인의 1.3.0 버전을 사용해야합니다.

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'
    }
}

내가 테스트했기 때문에 android.jetifier.blacklist = butterknife. * \\. jar을 추가하지 않았다고 생각합니다. 클래스 경로 'com.jakewharton : butterknife-gradle-plugin : 9.0.0-rc2'만 추가하면 문제없이 파일 apk를 디버그하고 내보낼 때 작동합니다.
kimcy929 2018

자세한 정보는 여기에서 찾을 수 있습니다 issuetracker.google.com/issues/119135578#comment5
Jude Fernandes

1
이 답변은 정확하지만 다음을 살펴보십시오. stackoverflow.com/a/54345816/371749 버터 나이프를 10으로 업데이트하면이 문제가 더 나은 방법으로 해결됩니다.
cV2

이 솔루션은 디버그 빌드에서 잘 작동하지만 서명 된 릴리스 APK를 만들 수 없습니다. 제공된 아티팩트에 안전하게 다시 작성할 수없는 패키지 참조 'android.support.v4.widget'이있는 문자열 리터럴이 포함되어 있습니다. 주석 프로세서와 같은 리플렉션을 사용하는 라이브러리는 androidx 지원을 추가하기 위해 수동으로 업데이트해야합니다.
Arpit Rastogi

매우 도움이되었습니다. 감사합니다
Androider

60

버터 나이프 종속성의 마지막 버전을 추가하면 변경된 경우 여기에서 확인할 수 있습니다 ( https://github.com/JakeWharton/butterknife ). androidX를 지원합니다. 그런 다음 앱 빌드 graddle로 이동하여 이전 버전을 다음으로 바꿉니다.

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

28

androidx의 경우 종속성을 '10 .0.0 '버전으로 업그레이드하기 만하면됩니다.

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

여기 에서 문서 찾기


내 클릭 편집 텍스트 상자에 널 포인터가 제공됩니다. 초기화되지 않습니다.
Vasudev Vyas

18

ButterKnife를 최신 버전으로 업그레이드하고 build.gradle (app)에 다음을 추가하세요.

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

가장 좋은 대답은 업그레이드 후이 솔루션을 검색했습니다 .--> 오류 : 정적 인터페이스 메서드는 Android N (-min-api 24)부터 만 지원됩니다. void butterknife.Unbinder.lambda $ static $ 0 ()
avisper

당신을 사랑합니다 당신이 그것을 만들었습니다 ... 나는 반나절 검색을 낭비 하고이 대답 이옵니다.
Zeeshan Mehdi

4

내 프로젝트는 버터 나이프를 사용하지 않지만 "주어진 아티팩트에 안전하게 다시 작성할 수없는 패키지 참조 'android.support.v4.widget'이있는 문자열 리터럴이 포함되어 있습니다. 주석 프로세서와 같은 리플렉션을 사용하는 라이브러리는 다음을 수행해야합니다. androidx에 대한 지원을 추가하려면 수동으로 업데이트해야합니다. "이 문제를 해결하기 위해 수행 한 작업 : 소포 버전 업데이트

gradle 빌드 파일

바꾸다:

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

와:

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

gradle 파일 코드 gradle 파일보기


1

버터 나이프를 사용한다면 어떤 버전입니까? 최신 버전 9.0.0-rc2는 androidx를 지원합니다.

UPD : butterknife의 github repo 에 닫힌 문제가 있습니다 . 임시 해결 방법

gradle.properties 파일에 android.jetifier.blacklist = butterknife-compiler를 추가합니다.


나는 9.0.0-rc2에 있고 똑같은 오류가 발생합니다
Jorge Gil


0

변화

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

...에

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

또는 기타 재료 테마. Android 스튜디오 4.0.1에서 '활동 없음'으로 새 프로젝트를 시작한 후이 오류가 발생했습니다.


0

버터 나이프 업데이트 + 캐시 무효화 및 다시 시작 + buterknife가 사용되지 않은 경우 gradle 동기화 캐시를 지우고 다시 시작하십시오.

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