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 продолжает давать сбой, говоря:

Ошибка: не удалось найти параметры свойства в задаче: app: compileDebugJavaWithJack.

Примечание. Мой проект отлично работал с JDK 1.8 (за исключением функции «Мгновенный запуск»), пока я не попытался добавить 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'
}

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

Следуя ответу Джейка, я мог заставить 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'
}

person Sounak Ray    schedule 08.07.2016    source источник
comment
Лучше обновите свою Android Studio и не используйте Джека, он очень медленный и устарел.   -  person user1209216    schedule 12.09.2018


Ответы (1)


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

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

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

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

person Jake Wharton    schedule 08.07.2016
comment
Большое спасибо, @Jake, за быстрый ответ! Ваше решение сработало как шарм! Нет ничего лучше, чем получить ответ от самого создателя библиотеки! :) - person Sounak Ray; 09.07.2016
comment
было бы полезно, если бы ответ @SounakRay был скопирован на страницу документации вашего проекта, то есть в раздел настройки по адресу github.com/codepath/android_guides/wiki/ - person wal; 08.11.2016