Ошибка идеи intellij при создании проекта android - groovy .lang.MissingMethodException: нет сигнатуры метода: - PullRequest
0 голосов
/ 28 мая 2020

Попытка собрать проект Android в intellij idea и получить следующую ошибку: Строка файла сборки 'C: \ Users ... \ app \ build.gradle': 91

Возникла проблема при настройке project ': app'.

groovy .lang.MissingMethodException: нет сигнатуры метода: org.gradle.api.internal.file.DefaultFilePropertyFactory $ DefaultDirectoryVar.toPath () применимо для типов аргументов : () values: [] Возможные решения: каждое (groovy .lang.Closure), tap (groovy .lang.Closure), с (groovy .lang.Closure), с (boolean, groovy .lang.Closure), getAt (java .lang.String), putAt (java .lang.String, java .lang.Object)

applicationVariants.all { variant ->
    variant.outputs.each { output ->
        def project = "Demo"
        def flavourName = variant.flavorName
        def variantName = "Build"
        def apkName = project + "-" + flavourName + "-" + variantName + "-" + versionName + ".apk"
        def relativeRootDir = variant.packageApplicationProvider.get().outputDirectory.toPath()
                .relativize(rootDir.toPath()).toFile()    // <-- error line   
        output.outputFileName = new File("$relativeRootDir/release", apkName)
    }
}

Как решить этот? что мне поменять?

1 Ответ

0 голосов
/ 29 мая 2020

Кажется, это проблема, связанная с версией «1.28.0» из "io.fabric.tools:gradle".

Обычно такая проблема возникает, если groupId:artifactId:n.+ структура управления версиями используется внутри зависимости (уровень приложения / уровень проекта ). В этом случае:

dependencies {
    classpath 'io.fabric.tools:gradle:1.+'
}

Потому что он автоматически обновляет версию, и в результате, если в последней версии есть фатальная ошибка, проект, скорее всего, столкнется с ошибкой sh из-за сборки / runtime error.

Android Studio всегда предлагает «Избегайте использования + в номерах версий; может привести к непредсказуемым и неповторимым сборкам ... '

Было обнаружено, что одним рабочим решением является понижение версии до указанной c предыдущей версии, такой как 1.27.1 или любой другой стабильной последней версии до 1.28. 0, например:

dependencies {
    classpath 'io.fabric.tools:gradle:1.27.1'
}

Не забудьте проверить оба файла gradle (уровень приложения / уровень проекта), чтобы увидеть, где была объявлена ​​указанная выше зависимость, и измените ее соответствующим образом.

...