Подтвердить что ты не робот

Gradle завершается с ошибкой "Перегрузка неоднозначных методов для метода java.io.File # <init>"

Когда gradle build мой проект, я получаю эту ошибку:

FAILURE: сбой сборки с исключением.

  • Где:
    Строить файл 'App/build.gradle': 45

  • Что пошло не так:
    Возникла проблема с оценкой проекта "Приложение".
    Перегрузка неоднозначных методов для метода java.io.File #.
    Невозможно решить, какой метод вызывать для [null, класс 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.

Что не так с моим проектом? Как я могу исправить эту ошибку?

4b9b3361

Ответ 1

Сообщение об ошибке было изменено в сентябре 2014 года. Теперь яснее и прямо указывает, что проблема заключается в том, что Gradle t найти SDK; остальная часть ответа по-прежнему применяется к старым версиям (< 0,13) плагина Gradle.


Это связано с тем, что 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, будет раздражать. Просто не забудьте проверить его в своем репозитории.

Ответ 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 NDK и SDK в настройках модуля моего проекта Android Studio.