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.
Что не так с моим проектом? Как я могу исправить эту ошибку?
Ответы
Ответ 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.