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

gradle build我的项目,我得到这个错误:

失败:生成失败,出现exception。

  • 哪里:
    构build文件'App / build.gradle'行:45

  • 什么地方出了错:
    评估项目“:App”时发生问题。
    方法java.io.File#的模糊方法重载
    无法parsing由于以下原因之间的重叠原因而要调用[null,class java.lang.String]的方法:
    [类java.lang.String,类java.lang.String]
    [类java.io.File,类java.lang.String]

该行是第一个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' } } 

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

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

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


这是由于Gradle无法findSDK的位置,因此在做一些需要Android SDK的事情时,例如获取默认的Proguard文件位置,这是令人失望的。

其实这就是Gradle会告诉你,如果你暂时注释掉这一行:

未findSDK位置。 使用sdk.dir在local.properties文件中定义位置,或者使用ANDROID_HOME环境variables定义位置。

你可以修复它:

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

  • 通过在环境variablesANDROID_HOME设置SDK位置 :您只需要在gradle之前添加ANDROID_HOME=/path/to/sdk来设置环境variables。

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

当使用版本控制系统时,在本地设置local.properties的位置是完全local.properties ,因为每次需要使用Gradle时手动设置环境variables都会很local.properties 。 只要确保不要将其检入到存储库中。

我每天都这样做,通过发出以下命令创buildlocal.properties(-p是我的清单文件的path,-t是当前目标):

 android project update -p . -t android-19 

在Gradle构build的情况下:

 android project update .p ./YourApp/src/main/ -t android-19 cp ./YourApp/src/main/local.properties ./local.properties # or ln if you feel so 

在我的情况下,我必须在Android Studio项目的模块设置中设置Android NDK和SDK位置。