How to enable Jack (Java Android Compiler Kit) in android studio

AndroidAndroid Gradle-Pluginbuild.gradleAndroid Studio-2.1Jack Compiler

Android Problem Overview


I am updated my androidstudio 2.1 stable.As per Android Studio 2.1 supports Android N Developer Preview Android studio 2.1 support Jack (Java Android Compiler Kit) compiler .

How to add or use Jack in android studio?

NOTE:

> The Jack toolchain is deprecated, as per Java 8 Language Feature Support on Android. However, you may continue to use it to enable Java 8 language features until the replacement is available. > > As of this March 14, 2017 announcement, the Jack toolchain is deprecated. Jack was the default Android build toolchain for Android 6.0–8.1.

https://source.android.com/source/jack

Android Solutions


Solution 1 - Android

The details on what is required to use Jack and how can be found in the documentation.

Here is the relevant part from the docs that goes in build.gradle on how to use jackOptions and set the compileOptions for java 1.8.

android {
	...
	defaultConfig {
		...
		jackOptions {
			enabled true
		}
	}
	
	compileOptions {
		sourceCompatibility JavaVersion.VERSION_1_8
		targetCompatibility JavaVersion.VERSION_1_8
	}
}

UPDATE

The Jack toolchain is now considered deprecated according to this post and work is being done to natively support Java 8 features as part of the Android build system in the coming weeks according to the post.

The post also mentions that there should be little to no work migrating from Jack to the new method in case you still wanted to try enabling Java 8 features with Jack.

UPDATE 2 Preview Built-in Support

You can now try out the new built-in support for Java 8 using the latest Android Studio preview 2.4 preview 6.

For more information on how to enable it or migrate from Jack or Retrolambda see the documentation.

Solution 2 - Android

You can enable jack compiler by adding following line in build.gradle file.

android{

compileSdkVersion 23

buildToolsVersion "24rc2"

defaultConfig {
    ...
    jackOptions {
        enabled true
    }
}
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}}

Solution 3 - Android

Jack/Jill will be abandoned in the near future, see the Google post. https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html

Solution 4 - Android

1- build.gradle (Module)

defaultConfig {
        //remove jackOptions 
        jackOptions {
            enabled true
        }
    }

2- if you using a third-party that uses Java 8 build.gradle (Project)

buildscript {
    dependencies {
        //remove this line of your third-party dependency
        classpath 'PATH<VERSION>'
    }
}

3-remove retrolamda,apply plugin '....labmda' remove these lines from your module gradle

4- add to build.gradle (Module)

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

Solution 5 - Android

insert in block android{}

jackOptions {
            enabled true
        }

it solution

Solution 6 - Android

Java 8 is supported on Android Studio 3 versions, all this jackOptions is not required longer.

> Jack is no longer supported, and you should first disable Jack to use > the improved Java 8 support built into the default toolchain.

For more detail read this link:

https://developer.android.com/studio/write/java8-support.html

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionpRaNaYView Question on Stackoverflow
Solution 1 - AndroidGeorge MulliganView Answer on Stackoverflow
Solution 2 - AndroidRaghav ThakkarView Answer on Stackoverflow
Solution 3 - Androidmingyuan-xiaView Answer on Stackoverflow
Solution 4 - AndroidAbuzeidView Answer on Stackoverflow
Solution 5 - Androidnicolas asinovichView Answer on Stackoverflow
Solution 6 - AndroidMaytham FahmiView Answer on Stackoverflow