gradle-plugin 3.3.0的'manifestOutputDirectory'不返回结果

时间:2019-04-09 12:57:47

标签: android android-gradle

尝试获取清单输出目录,并在应用程序build.gradle中使用以下代码

def manifestOutDir = manifestOutputDirectory

但是当我运行build并打印它时,它不会返回目录路径,而是显示此字符串

property(interface org.gradle.api.file.Directory, transform(property(interface org.gradle.api.file.Directory,
...

我正在使用gradle-plugin-3.3.0 Android Studio 3.3

它是否不适用于gradle-android-plugin-3.3.0或已删除?我还有什么想念的吗?

2 个答案:

答案 0 :(得分:2)

此帖子[https://stackoverflow.com/a/46037817/4181904]表示此功能已损坏。

本质上,建议不要访问gradle API的直接输出文件,而是访问包含该文件的目录。下面的代码段通过清单文件对此进行了演示,但也可以应用于其他outputFiles。

android.applicationVariants.all { variant ->
    variant.outputs.all { output ->
        output.processManifest.doLast {

            String manifestPath = "$manifestOutputDirectory/AndroidManifest.xml"
            def manifestContent = file(manifestPath).getText()

            // Manipulate the file as needed
        }
    }
}

答案 1 :(得分:0)

在可能高于3.3的高阶版本中,库的AndroidManifest.xml从包.../merged_manifests移到.../library_manifest。因此,如果您使用此代码来获取路径将无法正常工作。您可以查看Android Plugin for Gradle 3.0.0

的更多详细信息
 def manifestPath = manifestOutputDirectory.asFile.get()

现在,您应该使用它来获取AndroidManifest.xml

 def manifest = manifestOutputFile.asFile.get()

玩得开心?