无法获取未知属性'manifestOutputDirectory'

41

我正在尝试使用Android Studio进行“项目构建”,但是出现了以下错误:

执行任务“:myApp:processGoogleDebugManifest”失败。

无法获取类型为com.android.build.gradle.tasks.ProcessMultiApkApplicationManifest的任务“:myApp:processGoogleDebugManifest”的未知属性“manifestOutputDirectory”。

请问有什么帮助吗?

编辑:我更新到gradle v6.5和插件v4.1.0之后出现了这个错误。如果我恢复到gradle v6.1.1和插件v4.0.0,错误就会消失。

5个回答

80

今天我也遇到了同样的问题,原因是使用过时版本的华为AG Connect插件com.huawei.agconnect:agcp:1.2.1.301。当我将其更新为com.huawei.agconnect:agcp:1.4.1.300后,问题得以解决。

查看最新的华为AG Connect插件: https://developer.huawei.com/latest/plugin/agconnect ...只需要向下滚动,在那里你就会找到它!哈哈!

但如果你遇到的问题不是华为插件引起的,你可以通过在运行gradle时加上--stacktrace选项来调试问题。在Android Studio中,可以在设置/构建、执行、部署/编译器/命令行选项中添加gradle的命令行选项。


4
升级到1.4.2.300解决了这个问题。 - Ettore Gallina
9
classpath 'com.huawei.agconnect:agcp:1.4.2.301' 已经生效。 - Alexander Farber
1
最新版本为com.huawei.agconnect:agcp:1.5.1.300。 - Mouaad Abdelghafour AITALI
华为只允许出现错误。因为我仍然会得到manifestOutputDirectory错误,但应用程序构建正常 ;) - konned
请查看最新版本:https://developer.huawei.com/consumer/zh/doc/development/AppGallery-connect-Guides/agc-get-started-android-0000001058210705 - ceng
显示剩余3条评论

12

4
如果您正在使用 Bugsnag,请替换以下行:
classpath 'com.bugsnag:bugsnag-android-gradle-plugin:4.+'

使用:

classpath 'com.bugsnag:bugsnag-android-gradle-plugin:5.+'

更多详细信息,请参见此问题:无法在AGP 4.1.0-alpha04上运行此评论


这帮助我弄清楚了为什么我无法在最新版本的React Native 64.2上使用Bugsnag。谢谢! - Dres

4

我在这里写下来是因为这个解决方案拯救了我的一天:

我们可以通过简单地替换对以下内容的引用来解决这个问题:

manifestOutputDirectory

by

multiApkManifestOutputDirectory
enter code here

在你的Gradle任务中

例如:

android.applicationVariants.all { variant ->
    variant.outputs.all { output ->
        output.processManifest.doLast { task ->
            def outputDir = multiApkManifestOutputDirectory.asFile.get()
            String manifestMergerpath = "$outputDir/AndroidManifest.xml"
            writeManifest(manifestMergerpath, placeholders)
        }
    }
}  

嗨,要在哪里替换它? - Sanam Yavarpor
你太棒了,伙计!你也救了我的一天。 - Qing

0
android.applicationVariants.all {
    outputs.all {
        processManifestProvider.configure {
            val multiApkManifestOutputDirectory = (this as ProcessMultiApkApplicationManifest)
                .multiApkManifestOutputDirectory // 
            doLast {
                multiApkManifestOutputDirectory.get()
                    .asFile
                    .walkTopDown()
                    .forEach { 
                        
                    }
            }
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接