Before upgrade Android Studio from 2.3.3 to 3.0, I used buttherknife in a Library project via R2. But after upgrade, I encounter with this error:
Error:(27, 24) error: cannot find symbol class R2
This is my app gradle:
apply plugin: 'com.android.application'
android {
dataBinding {
enabled = true
}
compileSdkVersion 26
buildToolsVersion '26.0.2'
defaultConfig {
vectorDrawables.useSupportLibrary = true
minSdkVersion 16
targetSdkVersion 26
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled false
shrinkResources false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
}
repositories {
maven { url "https://jitpack.io" }
maven { url 'https://maven.fabric.io/public' }
maven { url 'https://maven.google.com' }
maven { url "https://dl.bintray.com/krazykira/maven" }
maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
}
dependencies {
//testCompile 'junit:junit:4.12'
compile 'com.android.support:multidex:1.0.1'
compile project(':libraryName')
}
LibraryName gradle:
apply plugin: 'com.android.library'
//apply plugin: 'com.jakewharton.butterknife'
android {
publishNonDefault true
dataBinding {
enabled = true
}
compileSdkVersion 26
buildToolsVersion '26.0.2'
defaultConfig {
vectorDrawables.useSupportLibrary = true
minSdkVersion 16
targetSdkVersion 26
}
repositories {
/* maven {
url "https://dl.bintray.com/krazykira/maven"
}*/
maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
}
buildTypes {
release {
minifyEnabled false
shrinkResources false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled false
shrinkResources false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
provided 'javax.annotation:jsr250-api:1.0'
/*compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'*/
compile 'com.jakewharton:butterknife:9.0.0-SNAPSHOT'
annotationProcessor 'com.jakewharton:butterknife-compiler:9.0.0-SNAPSHOT'
compile 'com.android.support:multidex:1.0.1'
}
Root gradle:
buildscript {
repositories {
google()
mavenCentral()
jcenter()
maven { url 'https://maven.fabric.io/public'}
maven { url 'https://maven.google.com' }
maven { url 'https://jitpack.io' }
maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
classpath 'com.jakewharton:butterknife-gradle-plugin:9.0.0-SNAPSHOT'
}
}
allprojects {
repositories {
mavenCentral()
jcenter()
maven { url "https://jitpack.io" }
maven { url "https://maven.google.com" }
maven { url "https://dl.bintray.com/krazykira/maven" }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Note: I get the error on Library project. I even use 9.0.0-SNAPSHOT, but doesn't work either.
Try:
classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0'
@MarkerwApk
import com.packagename.sample.R2;
Error:(65, 24) error: cannot find symbol class R2
Error:Execution failed for task ':LibraryName:compileDebugJavaWithJavac'.
Compilation failed; see the compiler error output for details.
butterknifeVersion = "8.8.1"
@MarkerwApk Thanks. It did work. Just to explain in detail:
apply plugin: 'com.jakewharton.butterknife' to LibraryName gradle.classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0' to the Root gradle as below:buildscript {
repositories {
google()
mavenCentral()
jcenter()
maven { url 'https://maven.fabric.io/public'}
maven { url 'https://maven.google.com' }
maven { url 'https://jitpack.io' }
maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
}
dependencies {
classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0'
}
}
dependencies in LibraryName gradle:dependencies {
api "com.jakewharton:butterknife:8.8.1"
annotationProcessor "com.jakewharton:butterknife-compiler:8.8.1"
}
I change my build.gradle as Drjacky told.but still has problem.
the error message is below.
Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
When I change butterknife version to 8.0.1. no compile error occured. but when the app run.
NullPointerException happened.
@dede1314 Check these:
1.
android {
defaultConfig {
multiDexEnabled true
}
}
leakcanary, You can use the snapshot version which as fixed this.Build > Clean Project@Drjacky @dede1314
I try to merge two project and when I convert the second project to library module the @BindView(R.id.xxx) in library is tell me (attribute value must be a constant) and when I research I add in my library module:
apply plugin: 'com.android.library'
apply plugin: 'com.jakewharton.butterknife'
and:
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
and:
implementation 'com.jakewharton:butterknife:10.2.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1'
and I add in my project:
dependencies {
classpath 'com.android.tools.build:gradle:3.6.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.jakewharton:butterknife-gradle-plugin:10.2.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
my gradle is 5.6.4
but when I replace R to R2 , The R2 is not found
please help me
Most helpful comment
buildscript {
...
dependencies {
classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0'
}
}
api "com.jakewharton:butterknife:$rootProject.butterknifeVersion"
annotationProcessor "com.jakewharton:butterknife-compiler:$rootProject.butterknifeVersion"
butterknifeVersion = "8.8.1"