I am trying to add the latest version of butterknife and I get this error from gradle:
Error:(31, 0) Gradle DSL method not found: 'apt()' Possible
causes:
The project 'MyProject' may be using a version of
Gradle that does not contain the method. Gradle settingsThe build file
may be missing a Gradle plugin. Apply
Gradle plugin
Where my gradle mobile
build.gradle
is:
plugins {
id "net.ltgt.apt" version "0.6"
}
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.mynamspace.myproject"
minSdkVersion 19
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
wearApp project(':wear')
testCompile 'junit:junit:4.12'
compile 'com.jakewharton:butterknife:8.0.0'
apt 'com.jakewharton:butterknife-compiler:8.0.0'
compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.google.android.gms:play-services:8.4.0'
compile 'com.android.support:design:23.3.0'
compile 'com.android.support:support-v4:23.3.0'
compile 'com.android.support:recyclerview-v7:23.3.0'
}
What's wrong with the gradle-apt-plugin?
It's entirely possible that there's a way to get your plugins
to work. Given your error, I'd start by following what the ButterKnife project uses, get that working, then see if there is a recipe for what you're trying.
First, in your top-level build.gradle
file, include classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
in the buildscript
dependencies
, such as:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.0.0'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}
Then, in your module's build.gradle
file, include apply plugin: 'com.neenbedankt.android-apt'
towards the top.
The links are to the relevant files from the ButterKnife GitHub repo, from the project and the dedicated sample app.
apt is obsolete, Change apt to new format:
change
apt 'com.jakewharton:butterknife-compiler:8.5.1'
to
annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
https://bitbucket.org/hvisser/android-apt/wiki/Migration
http://jakewharton.github.io/butterknife/
Instead of:
plugins {id "net.ltgt.apt" version "0.6"}
try:
apply plugin: 'android-apt'
In my case helped:
adding to your build.gradle
(not main, but project one) :
apply plugin: 'com.neenbedankt.android-apt'
and
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.7'
}
}
Add your apt code into the apps build.gradle NOT in main build.gradle.
dependencies {
apt group: 'group name here', name: 'artifact name here', version:'version here'
}
Of Course, you'll have to add the following code in your main build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.2'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}