Need help with gradle-retrolambda?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

5.4K Stars 450 Forks Apache License 2.0 337 Commits 74 Opened issues


A gradle plugin for getting java lambda support in java 6, 7 and android

Services available


Need anything else?

Contributors list

Gradle Retrolambda Plugin

Maven Central

This plugin will automatically build your java or android project with retrolambda, giving you lambda goodness on java 6 or 7. It relies on the wonderful retrolambda by Esko Luontola.

Note: The minimum android gradle plugin is

and the minimum gradle plugin is


  1. Download jdk8 and set it as your default.

  2. Add the following to your build.gradle

   buildscript {
      repositories {

  dependencies {
     classpath 'me.tatarka:gradle-retrolambda:3.7.1'


// Required because retrolambda is on maven central repositories { mavenCentral() }

apply plugin: '' //or apply plugin: 'java' apply plugin: 'me.tatarka.retrolambda'

alternatively, you can use the new plugin syntax for gradle

   plugins {
      id "me.tatarka.retrolambda" version "3.7.1"
  1. There is no step three!

The plugin will compile the source code with java8 and then replace the class files with the output of retrolambda.


You can add a block like the following to configure the plugin:

retrolambda {
  javaVersion JavaVersion.VERSION_1_6
  jvmArgs '-arg1', '-arg2'
  defaultMethods false
  incremental true
  • javaVersion
    Set the java version to compile to. The default is 6. Only 5, 6 or 7 are accepted.
  • include 'Debug', 'Release'
    Sets which sets/variants to run through retrolambda. The default is all of them.
  • exclude 'Test'
    Sets which sets/variants to not run through retrolambda. Only one of either
    should be defined.
  • jvmArgs
    Add additional jvm args when running retrolambda.
  • defaultMethods
    Turn on default and static methods in interfaces support. Note: due to a limitation in retrolamba, this will set
    to false. The default is false.
  • incremental
    Setting this to false forces all of your class files to be run through retrolambda instead of only the ones that have changed. The default is true.

Using a Different Version of the retrolambda.jar

The default version of retrolambda used is

. If you want to use a different one, you can configure it in your dependencies.
dependencies {
  // Latest one on maven central
  retrolambdaConfig 'net.orfjackal.retrolambda:retrolambda:+'
  // Or a local version
  // retrolambdaConfig files('libs/retrolambda.jar')

Deprecated Features

If you are running with java 6 or 7 you should really consider updating. However, you may use the below configuration instead.

Set the environment variable

to point to the java 8 jdk. Alternatively, you can set the
retrolambda {
  jdk System.getenv("JAVA8_HOME")

You can force unit tests to be run with an older version of java by setting

or with the
retrolambda {
  oldJdk System.getenv("JAVA6_HOME")

Android Studio Setup

Add these lines to your

to inform the IDE of the language level.
android {
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8


This plugin is fully compatible with proguard (since

). In your proguard file, add
-dontwarn java.lang.invoke.*
-dontwarn **$$Lambda$*

Known Issues

Lint fails on java files that have lambdas.

First try updating to the latest version of the android gradle plugin. Newer versions of lint are compatible with java 8 sources. If you can't for some reason, you can still use the experimental fork to fix the issue.

Using Google Play Services causes retrolambda to fail


contains bytecode that is incompatible with retrolambda. This should be fixed in newer versions of play services, if you can update, that should be the preferred solution. To work around this issue, you can either use an earlier version like
or add
to the jvm args. See orfjackal/retrolambda#25 for more information.
retrolambda {
  jvmArgs '-noverify'


All updates have moved to the CHANGELOG.


Copyright 2013 Evan Tatarka

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.