title: CircleCI Android Unsupported major.minor version 52.0
body: <p>I've been spending a day for the CircleCI in Android Project and I keep getting <strong>java.lang.UnsupportedClassVersionError: com/android/build/gradle/AppPlugin : Unsupported major.minor version 52.0</strong> when CircleCI runs gradle dependencies command. Here is an stacktrace that it shows:</p>
  
  <pre><code>* Where:
  Build file '/home/ubuntu/MyProject/app/build.gradle' line: 1
  
  * What went wrong:
  A problem occurred evaluating project ':app'.
  &gt; java.lang.UnsupportedClassVersionError: com/android/build/gradle/AppPlugin : Unsupported major.minor version 52.0
  
  * Try:
  Run with --info or --debug option to get more log output.
  
  * Exception is:
  org.gradle.api.GradleScriptException: A problem occurred evaluating project ':app'.
      at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:93)
      at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl$1.run(DefaultScriptPluginFactory.java:144)
      at org.gradle.configuration.ProjectScriptTarget.addConfiguration(ProjectScriptTarget.java:72)
      at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:149)
      at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:38)
      at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:25)
      at org.gradle.configuration.project.ConfigureActionsProjectEvaluator.evaluate(ConfigureActionsProjectEvaluator.java:34)
      at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:55)
      at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:510)
      at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:90)
      at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:47)
      at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:35)
      at org.gradle.initialization.DefaultGradleLauncher$2.run(DefaultGradleLauncher.java:125)
      at org.gradle.internal.Factories$1.create(Factories.java:22)
      at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
      at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)
      at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:122)
      at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
      at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:99)
      at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:93)
      at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
      at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62)
      at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93)
      at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)
      at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94)
      at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
      at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
      at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)
      at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
      at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:78)
      at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:48)
      at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:52)
      at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
      at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
      at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
      at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
      at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
      at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
      at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
      at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
      at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
      at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
      at org.gradle.util.Swapper.swap(Swapper.java:38)
      at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
      at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
      at org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:47)
      at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
      at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:66)
      at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
      at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
      at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
      at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
      at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
      at org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41)
      at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
      at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
      at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:246)
      at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
      at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
  Caused by: com.google.common.util.concurrent.ExecutionError: java.lang.UnsupportedClassVersionError: com/android/build/gradle/AppPlugin : Unsupported major.minor version 52.0
      at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2199)
      at com.google.common.cache.LocalCache.get(LocalCache.java:3934)
      at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938)
      at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821)
      at org.gradle.api.internal.plugins.DefaultPluginRegistry.uncheckedGet(DefaultPluginRegistry.java:149)
      at org.gradle.api.internal.plugins.DefaultPluginRegistry.lookup(DefaultPluginRegistry.java:144)
      at org.gradle.api.internal.plugins.DefaultPluginRegistry.lookup(DefaultPluginRegistry.java:127)
      at org.gradle.api.internal.plugins.DefaultPluginManager.apply(DefaultPluginManager.java:108)
      at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.applyType(DefaultObjectConfigurationAction.java:112)
      at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.access$200(DefaultObjectConfigurationAction.java:35)
      at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction$3.run(DefaultObjectConfigurationAction.java:79)
      at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.execute(DefaultObjectConfigurationAction.java:135)
      at org.gradle.api.internal.project.AbstractPluginAware.apply(AbstractPluginAware.java:46)
      at org.gradle.api.plugins.PluginAware$apply.call(Unknown Source)
      at org.gradle.api.internal.project.ProjectScript.apply(ProjectScript.groovy:35)
      at org.gradle.api.Script$apply$0.callCurrent(Unknown Source)
      at build_3t8kcqhef15uw367iarbj60nz.run(/home/ubuntu/MyProject/app/build.gradle:1)
      at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:91)
      ... 58 more
  Caused by: java.lang.UnsupportedClassVersionError: com/android/build/gradle/AppPlugin : Unsupported major.minor version 52.0
      at org.gradle.api.internal.plugins.DefaultPluginRegistry$1.load(DefaultPluginRegistry.java:71)
      at org.gradle.api.internal.plugins.DefaultPluginRegistry$1.load(DefaultPluginRegistry.java:51)
      at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524)
      at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317)
      at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280)
      at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195)
      ... 75 more
  
  
  BUILD FAILED
  
  Total time: 33.396 secs
  </code></pre>
  
  <p>Here is my configuration in .yml file:</p>
  
  <pre><code>machine:
  java:
  version: openjdk7
  environment:
  ANDROID_HOME: /usr/local/android-sdk-linux
  
  dependencies:
  pre:
  - echo y | android update sdk --no-ui --all --filter "tools"
  - echo y | android update sdk --no-ui --all --filter "platform-tools"
  - echo y | android update sdk --no-ui --all --filter "build-tools"
  - echo y | android update sdk --no-ui --all --filter "android-24"
  - echo y | android update sdk --no-ui --all --filter "extra-google-m2repository"
  - echo y | android update sdk --no-ui --all --filter "extra-google-google_play_services"
  - echo y | android update sdk --no-ui --all --filter "extra-android-support"
  - echo y | android update sdk --no-ui --all --filter "extra-android-m2repository"
  - (./gradlew -version):
  timeout: 360
  #override:
  #- ANDROID_HOME=/usr/local/android-sdk-linux ./gradlew dependencies
  
  checkout:
  post:
  - git submodule init
  - git submodule update
  test:
  override:
  - (./gradlew assemble -PdisablePreDex):
  timeout: 360
  - cp -r ${HOME}/${CIRCLE_PROJECT_REPONAME}/app/build/outputs/apk/ $CIRCLE_ARTIFACTS
  - emulator -avd circleci-android22 -no-audio -no-window:
  background: true
  parallel: true
  # wait for it to have booted
  - circle-android wait-for-boot
  # run tests against the emulator.
  - ./gradlew connectedAndroidTest
  deployment:
  staging:
  branch: staging
  commands:
  - (./gradlew clean assembleStaging crashlyticsUploadDistributionStaging -PdisablePreFex):
  timeout: 720
  </code></pre>
  
  <p>I set java compileOptions in build.gradle to version 1.7 and enable the <strong>Databinding</strong>.</p>
  
  <pre><code>android {
  ...
  compileOptions {
  sourceCompatibility JavaVersion.VERSION_1_7
  targetCompatibility JavaVersion.VERSION_1_7
  }
  }
  </code></pre>
  
  <p>Have anyone faced this problem before? Please give me some advices.
  Thanks.</p>