web-dev-qa-db-ja.com

Android Java8サポートを追加する際のスタジオエラー

Android Studioまたは私の設定の何が問題になっていますか?

Error:(22, 0) Could not find method jackOptions() for arguments [build_1b0umrzpkhcolzr325bxbizec$_run_closure1$_closure5@41c39fc1] on project ':app' of type org.gradle.api.Project.

これは私のbuild.gradleです

Android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
    applicationId "com.twtstudio.wepeiyanglite"
    minSdkVersion 14
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
    }
}
jackOptions {
    enabled true
}
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}


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

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.Android.tools.build:gradle:2.2.0-beta1'
        classpath 'com.neenbedankt.gradle.plugins:Android-apt:1.8'
        classpath 'com.github.dcendents:Android-maven-gradle-plugin:1.3'
        // 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
}

私は開発環境でジャックが有効になっていないと思いますが、どのように間違いを見つけて修正するのですか?私はすでにjdk1.8をインストールしています

18
life2015

jackOptionsは、次のようにdefaultConfig {}内にある必要があります。

defaultConfig {
    ...

    jackOptions {
        enabled true
    }
}
32
Andrey

ドキュメント

Jackツールチェーンは非推奨です。これは アナウンスメント です。プロジェクトがJackに依存している場合は、Java 8に組み込まれたサポートをAndroid Studioのデフォルトツールチェーンに使用するように移行する必要があります。 Java 8言語機能、 インスタントラン 、および中間.classファイルに依存するツールを使用するパーティライブラリ。

ジャックを無効にしてデフォルトのツールチェーンに切り替えるには、モジュールのbuild.gradleファイルからjackOptionsブロックを削除するだけです:

Android {
    ...
    defaultConfig {
        ...
        // Remove this block.
        jackOptions {
            enabled true
            ...
        }
    }

    // Keep the following configuration in order to target Java 8.
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
5
Mehrdad Salimi

最新のドキュメントによると

defaultConfig {
  ...
  jackOptions {
    enabled true
  }
}

冗長であるため、完全に削除できます。

参照してください https://developer.Android.com/studio/write/Java8-support.html?utm_source=Android-studio

3
AjaiArul

jackOptionsから移行しない場合は、jackOptionsを追加しないでください。

このリンクを参照してください:

https://code.tutsplus.com/tutorials/Java-8-for-Android-cleaner-code-with-lambda-expressions--cms-29661

0
Jay

次のようにcompileOpitonsブロックを使用せずに、buildTypesブロックの後にjackOptionsを使用できます。

Android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.abdo.nadias"
        minSdkVersion 17
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility = '1.8'
        targetCompatibility = '1.8'
    }
}
0