Невозможно перезаписать манифест с плагином Gradle 3.3 - PullRequest
0 голосов
/ 06 февраля 2019

Это в основном копия текста, который я написал в этом выпуске

Буду признателен за любую помощь:

Я пытаюсь обновить свой проект доплагин gradle 3.3 w / gradle 4.10.1, и моя сборка завершается с ошибкой

  • Что пошло не так: выполнение задачи ": main: processDebugManifest" завершилось неудачно.

    java.io.FileNotFoundException: / main / property (интерфейс org.gradle.api.file.Directory, transform (свойство (интерфейс org.gradle.api.file.Directory, фиксированный (класс org.gradle.api.internal.file.DefaultProjectLayout $ FixedDirectory, /main/build))))/AndroidManifest.xml (нет такого файла или каталога)

мой код идентиченкод здесь - https://developer.android.com/studio/known-issues#variant_api в разделе "manifestOutputFile больше не доступен"

android.applicationVariants.all { variant ->
    variant.outputs.all { output ->
        output.processManifest.doLast {
            // Stores the path to the maifest.
            String manifestPath = "$manifestOutputDirectory/AndroidManifest.xml"
            // Stores the contents of the manifest.
            def manifestContent = file(manifestPath).getText()
...
        }
    }
}

, и эта строка вызывает ошибку -

def manifestContent = file(manifestPath).getText()

Обновление: попробовал решение, предложенное в комментарии ниже этот ответ и получил следующую ошибку

  • Что пошло не так: выполнение задачи не выполнено ': main: processDebugManifest',Не удалось найти соответствующий конструктор для: java.io.File (org.gradle.api.internal.file.DefaultProjectLayout $ DefaultDirectoryVar, java.lang.String)

Ответы [ 2 ]

0 голосов
/ 25 марта 2019

Попробуйте заменить

String manifestPath = "$manifestOutputDirectory/AndroidManifest.xml"

на

String manifestPath = new File(output.processManifest.manifestOutputDirectory.get().asFile, "AndroidManifest.xml")

0 голосов
/ 05 марта 2019
def outputDir = manifestOutputDirectory
File directory
if (outputDir instanceof File) {
    directory = outputDir
} else {
    directory = outputDir.get().asFile
}

String manifestPath = directory.toString() + "/AndroidManifest.xml"
...