给定的工件包含一个带有无法安全重写的包引用 'android.support.v4.content' 的字符串文字。对于安卓x
The given artifact contains a string literal with a package reference 'android.support.v4.content' that cannot be safely rewritten. for androidx
我升级了我的 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
有关
有人知道如何解决这个问题吗?
你用的是哪个版本的 Butterknife?最新版本9.0.0-rc2支持androidx.
UPD:butterknife 的 github repo. Temporary workaround
有一个已关闭的问题
将 android.jetifier.blacklist=butterknife-compiler 添加到您的 gradle.properties 文件中。
新的正确答案:
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 中的 butterknife 列入黑名单:
gradle.properties file:
android.jetifier.blacklist = butterknife.*\.jar
你需要在AGP的3.3.0-rc1和Kotlin的1.3.0版本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'
}
}
添加最新版本的 butterknive 依赖项,如果它发生变化,您可以在此处查看 (https://github.com/JakeWharton/butterknife)。
它支持androidX。然后转到您的应用构建 gradle 并将旧版本替换为以下内容:
dependencies {
implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
}
使用最新版本的 Butterknife 解决了这个问题。使用 >= 9.0.0-rc2(Butterknife 版本)支持 androidX。
对于最新版本,请检查 link - https://github.com/JakeWharton/butterknife/releases
将 ButterKnife 升级到最新版本并确保将这些添加到您的 build.gradle(app):
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
对于 androidx,只需将您的依赖项升级到版本“10.0.0”
dependencies {
implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
}
查找文档 here
改变
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
至
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
或其他 Material 主题。
在 Android Studio 4.0.1
中使用“No Activity”启动新项目后出现此错误
我的项目没有使用 butterknife,但我遇到了同样的错误“给定的工件包含一个带有包引用 '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'
更新 butterknife + 使缓存无效并重新启动 + 同步 gradle
如果不使用 buterknife 只需清除缓存并重新启动
我升级了我的 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
有人知道如何解决这个问题吗?
你用的是哪个版本的 Butterknife?最新版本9.0.0-rc2支持androidx.
UPD:butterknife 的 github repo. Temporary workaround
有一个已关闭的问题将 android.jetifier.blacklist=butterknife-compiler 添加到您的 gradle.properties 文件中。
新的正确答案:
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 中的 butterknife 列入黑名单:
gradle.properties file:
android.jetifier.blacklist = butterknife.*\.jar
你需要在AGP的3.3.0-rc1和Kotlin的1.3.0版本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'
}
}
添加最新版本的 butterknive 依赖项,如果它发生变化,您可以在此处查看 (https://github.com/JakeWharton/butterknife)。 它支持androidX。然后转到您的应用构建 gradle 并将旧版本替换为以下内容:
dependencies {
implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
}
使用最新版本的 Butterknife 解决了这个问题。使用 >= 9.0.0-rc2(Butterknife 版本)支持 androidX。 对于最新版本,请检查 link - https://github.com/JakeWharton/butterknife/releases
将 ButterKnife 升级到最新版本并确保将这些添加到您的 build.gradle(app):
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
对于 androidx,只需将您的依赖项升级到版本“10.0.0”
dependencies {
implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
}
查找文档 here
改变
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
至
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
或其他 Material 主题。 在 Android Studio 4.0.1
中使用“No Activity”启动新项目后出现此错误我的项目没有使用 butterknife,但我遇到了同样的错误“给定的工件包含一个带有包引用 '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'
更新 butterknife + 使缓存无效并重新启动 + 同步 gradle 如果不使用 buterknife 只需清除缓存并重新启动