Gradle失败,出现"方法java.io.File#<init>的模糊方法重载"

Léo*_*Lam 29 android gradle android-gradle-plugin

gradle build我的项目中,我收到此错误:

FAILURE:构建因异常而失败.

  • 其中:
    构建文件'App/build.gradle'行:45

  • 出了什么问题:
    评估项目':App'时出现问题.
    方法java.io.File#的模糊方法重载.
    由于以下原因重叠原型,无法解析为[null,类java.lang.String]调用哪个方法:
    [class java.lang.String,class java.lang.String]
    [class java.io.File,class java.lang .串]

这条线是第一条proguardFile规则:

buildTypes {
    release {
        debuggable false
        jniDebugBuild false
        signingConfig signingConfigs.(System.getenv("SIGNING_CONFIG") ?: "release")
        runProguard true
        proguardFile getDefaultProguardFile('proguard-android-optimize.txt')
        proguardFile 'proguard-rules.txt'
    }
}
Run Code Online (Sandbox Code Playgroud)

我没有任何local.properties文件,也没有在Android Studio中打开该项目.

我的项目有什么问题?我该如何解决这个错误?

Léo*_*Lam 54

错误消息已在2014年9月更改.现在更清楚,明确地指出问题是Gradle无法找到SDK; 其余的答案仍然适用于Gradle插件的旧版本(<0.13).


这是因为Gradle无法找到SDK位置,因此在执行需要Android SDK的操作时会很烦人,例如获取默认的Proguard文件位置.

实际上,如果您暂时注释掉该行,这就是Gradle将告诉您的内容:

找不到SDK位置.使用sdk.dir在local.properties文件中或使用ANDROID_HOME环境变量定义位置.

你可以解决它:

  • 通过在以下位置定义SDK位置local.properties:只需添加sdk.dir=/path/to/sdk到该文件即可.

  • 通过在环境变量中设置SDK位置ANDROID_HOME:您只需要通过添加ANDROID_HOME=/path/to/sdk之前设置环境变量gradle.

    示例:ANDROID_HOME=/path/to/sdk gradle build.

使用版本控制系统时,在您自己的本地设置位置是完全正确的local.properties,因为每次需要使用Gradle时手动设置环境变量会很烦人.只需确保不将其检入您的存储库.