【问题标题】:Gradle fails with "Ambiguous method overloading for method java.io.File#<init>"Gradle 因“方法 java.io.File#<init> 的模糊方法重载”而失败
【发布时间】:2014-07-11 18:08:34
【问题描述】:

gradle build我的项目时,我收到了这个错误:

FAILURE:构建失败并出现异常。

  • 位置:
    构建文件“App/build.gradle”行:45

  • 出了什么问题:
    评估项目 ':App' 时出现问题。
    方法重载不明确 java.io.File#.
    无法解析调用哪个方法 [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 中打开项目。

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

【问题讨论】:

    标签: android gradle android-gradle-plugin


    【解决方案1】:

    The error message has been changed in September 2014.现在更清晰明确指出问题是Gradle找不到SDK;其余答案仍然适用于 Gradle 插件的旧版本 (


    这是由于 Gradle 无法找到 SDK 位置,因此在执行需要 Android SDK 的操作时失败,例如获取默认的 Proguard 文件位置。

    实际上,如果您暂时注释掉该行,Gradle 会告诉您:

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

    你可以修复它:

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

    • 在环境变量ANDROID_HOME中设置SDK位置:只需在gradle前加上ANDROID_HOME=/path/to/sdk即可设置环境变量。

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

    当使用版本控制系统时,在本地设置位置在你自己的local.properties 中是非常好的,因为每次你需要使用 Gradle 时手动设置环境变量会很烦人。请确保不要将其签入您的存储库。

    【讨论】:

    • 在 Windows 上,如果你已经安装了 Android Studio,你的 SDK 路径可能类似于C:\users\{user}\AppData\Local\Android\android-studio\sdk
    • 所以从 CVS 签出时,我们总是必须手动创建该文件?
    • 是的,将文件包含在存储库中是没有意义的,因为 SDK 的路径可能不同(除非所有机器的环境都相同)。 ANDROID_HOME 环境变量似乎是避免为所有项目创建文件的最佳方法。
    • 我有同样的错误,但这个答案对我不起作用。我没有使用 Android SDK,但我还是添加了它。同样的错误。 :-(
    【解决方案2】:

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

    android project update -p . -t android-19
    

    如果是 Gradle 构建:

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

    【讨论】:

      【解决方案3】:

      就我而言,我必须在我的 Android Studio 项目的模块设置中设置 Android NDK 和 SDK 位置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-21
        • 2017-06-27
        相关资源
        最近更新 更多