Butterknife 8.1.0 не работает с JDK 1.8 в Android Studio 2.1.2

Я довольно новичок в Android, Android Studio, Butterknife и системе сборки Gradle. Тем не менее, я не новичок в Java или в программировании в целом.

Я пытаюсь создать приложение для Android с JDK 1.8 и Butterknife версии 8.1.0, но сборка Gradle продолжает давать сбой, говоря:

Ошибка: не удалось найти свойство 'options' для задачи ':app:compileDebugJavaWithJack'.

Примечание. Мой проект прекрасно работал с JDK 1.8 (за исключением функции "Instant Run"), пока я не попытался добавить Butterknife.

Я уже немного исследовал это и просмотрел следующие страницы / статьи, но не смог получить однозначного ответа на вопрос, работает ли Butterknife 8.1.0 с JDK 8 или нет:

Это работает вообще? Если да, что мне нужно сделать, чтобы это заработало?

Ниже приведены подробные сведения о настройке моих проектов и фрагменты из файлов сборки Gradle. Я был бы рад предоставить любую дополнительную информацию / файлы, которые могут понадобиться.

Сведения о версии:

  • JDK 1.8.0_92 (64 бита)
  • Android Studio 2.1.2
  • Gradle 2.1.2

build.gradle (уровень проекта)

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
//        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
        classpath 'com.android.tools.build:gradle:2.1.2'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

build.gradle (уровень модуля)

apply plugin: 'com.android.application'
apply plugin: 'android-apt'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.0"

    defaultConfig {
        applicationId "sounakray.popularmovies"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        jackOptions {
            enabled true
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

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

repositories {
    mavenCentral()
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.0.0'
    compile 'com.android.support:design:24.0.0'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.android.volley:volley:1.0.0'
    compile 'com.google.code.gson:gson:2.7'
    compile 'com.jakewharton:butterknife:8.1.0'
    apt 'com.jakewharton:butterknife-compiler:8.1.0'
}

РЕШЕНИЕ ОБНОВЛЕНО

Следуя ответу Jake Wharton, я смог заставить Butterknife 8.1.0 работать с JDK 8 в AS 2.1.2, внеся следующие изменения в два файла build.gradle:

build.gradle (уровень проекта)

dependencies {
    classpath 'com.android.tools.build:gradle:2.2.0-alpha5'
}

build.gradle (уровень модуля)

apply plugin: 'com.android.application'
//apply plugin: 'android-apt'
...

dependencies {
    ...
    compile 'com.jakewharton:butterknife:8.1.0'
    annotationProcessor  'com.jakewharton:butterknife-compiler:8.1.0'
}

1 ответ

Решение

Если вы используете Джек:

  • Опустите плагин 'android-apt' полностью.
  • использование annotationProcessor для зависимости (вместо apt).

Я считаю, что вы должны использовать версию 2.2.0 плагина Android Gradle вместо 2.1.x (в настоящее время последняя версия 2.2.0-alpha5).

Документация Butter Knife будет обновлена ​​до следующего выпуска (8.2.0), чтобы включить эту информацию.

Другие вопросы по тегам