【问题标题】:Gradle DSL method not found:'compileOptions()'找不到 Gradle DSL 方法:'compileOptions()'
【发布时间】:2016-02-12 16:13:13
【问题描述】:
apply plugin: 'com.android.application'

android {
    compileSdkVersion 19
    buildToolsVersion "22.0.1"


    defaultConfig {
        applicationId "com.myapp.new"
        minSdkVersion 19
        targetSdkVersion 19
        versionCode 51
        versionName "2.0.5"
    }



    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.org'
        }
    }
}


compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibsility JavaVersion.VERSION_1_7
}



dependencies {
    //testCompile 'junit:junit:4.12'

    //compile 'com.android.support:appcompat-v7:19.0.0'

}

################################################################################
Task.java

package bolts;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.CancellationException;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * Represents the result of an asynchronous operation.
 * 
 * @param <TResult>
 *          The type of the result of the task.
 */
public class Task<TResult> {
  /**
   * An {@link java.util.concurrent.Executor} that executes tasks in parallel.
   */
  public static final ExecutorService BACKGROUND_EXECUTOR = BoltsExecutors.background();

  /**
   * An {@link java.util.concurrent.Executor} that executes tasks in the current thread unless
   * the stack runs too deep, at which point it will delegate to {@link Task#BACKGROUND_EXECUTOR} in
   * order to trim the stack.
   */
  private static final Executor IMMEDIATE_EXECUTOR = BoltsExecutors.immediate();

  /**
   * An {@link java.util.concurrent.Executor} that executes tasks on the UI thread.
   */
  public static final Executor UI_THREAD_EXECUTOR = AndroidExecutors.uiThread();

  /**
   * Interface for handlers invoked when a failed {@code Task} is about to be
   * finalized, but the exception has not been consumed.
   *
   * <p>The handler will execute in the GC thread, so if the handler needs to do
   * anything time consuming or complex it is a good idea to fire off a {@code Task}
   * to handle the exception.
   *
   * @see #getUnobservedExceptionHandler
   * @see #setUnobservedExceptionHandler
   */
  public interface UnobservedExceptionHandler {
    /**
     * Method invoked when the given task has an unobserved exception.
     * <p>Any exception thrown by this method will be ignored.
     * @param t the task
     * @param e the exception
     */
    void unobservedException(Task<?> t, UnobservedTaskException e);
  }

  // null unless explicitly set
  private static volatile UnobservedExceptionHandler unobservedExceptionHandler;

  /**
   * Returns the handler invoked when a task has an unobserved
   * exception or {@code null}.
   */
  public static UnobservedExceptionHandler getUnobservedExceptionHandler() {
    return unobservedExceptionHandler;

即使下载 jdk 1.7 并安装它,我仍然有这个错误

错误:(27, 0) Gradle DSL 方法未找到:'compileOptions()' 可能原因:项目“app”可能正在使用不包含该方法的 Android Gradle 插件版本(例如,在 1.1.0 中添加了“testCompile”)。 fixGradleElements>Fix plugin version and sync project项目“app”可能正在使用不包含该方法的Gradle版本。 open.wrapper.file>打开 Gradle 包装文件。构建文件可能缺少 Gradle 插件。 apply.gradle.plugin">应用 Gradle 插件

【问题讨论】:

  • 只有一件事,尽管这可能不是您的问题的原因;你在targetcompatib**s**ility 中有错字(注意多余的's')

标签: java android gradle gradle-plugin


【解决方案1】:

虽然你有一个错字,但真正的问题是:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}

应该像这样在 android {} 闭包内:

android {
    compileSdkVersion 19
    buildToolsVersion "22.0.1"


    defaultConfig {
        applicationId "com.myapp.new"
        minSdkVersion 19
        targetSdkVersion 19
        versionCode 51
        versionName "2.0.5"
    }

    //FIX
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.org'
        }
    }
}

【讨论】:

  • 感谢您的回答。它解决了问题
【解决方案2】:

这个属性targetCompatibsility会引发你的问题,必须是targetCompatibility

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}

顺便说一句,您确定不需要在 build.gradle 文件中定义一些依赖项吗:

dependencies {

      ???
}

【讨论】:

  • 那么,这样的错字可能是导致找不到方法的原因吗?呃。我今天会学到一些东西...
猜你喜欢
  • 2015-04-16
  • 1970-01-01
  • 2019-10-21
  • 2015-11-19
  • 2017-10-27
  • 2015-03-29
  • 2015-01-20
  • 2015-01-10
  • 2015-02-21
相关资源
最近更新 更多