【问题标题】:Could not get unknown property 'manifestOutputDirectory'无法获取未知属性“manifestOutputDirectory”
【发布时间】:2021-01-30 23:43:25
【问题描述】:

我正在尝试使用 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,错误就会消失。

【问题讨论】:

    标签: android react-native android-studio huawei-mobile-services


    【解决方案1】:

    我今天遇到了同样的问题,在我的情况下,它是由华为的 AG Connect 插件的过时版本引起的。我使用的是com.huawei.agconnect:agcp:1.2.1.301,但当我将其更新为com.huawei.agconnect:agcp:1.4.1.300 时,问题已解决。

    但如果华为的插件不是您遇到的问题,您可以通过运行gradle--stacktrace 选项来调试问题,以查看问题的根源。在 Android Studio 中,您可以在 Settings/Build, Execution, Deployment/Compiler/Command-line options 中为 gradle 添加命令行选项。

    【讨论】:

    • 这正是问题所在 :) 我使用的是 com.huawei.agconnect:agcp:1.3.1.300。更新到 1.4.1.300 修复了它!谢谢!
    • 同样的问题,谢谢!
    • 更新到 1.4.2.300 修复了它
    • classpath 'com.huawei.agconnect:agcp:1.4.2.301' 也有效
    • 最新版本为 com.huawei.agconnect:agcp:1.5.1.300
    【解决方案2】:

    这解决了我同样的问题:

    在项目级别的 build.gradle 中,替换为:

    classpath 'com.huawei.agconnect:agcp:1.3.1.300'
    

    用这个:

    classpath 'com.huawei.agconnect:agcp:1.4.1.300'
    

    参考:https://github.com/Tencent/tinker/issues/1471#issuecomment-710777366

    【讨论】:

      【解决方案3】:

      如果您使用的是 bugsnag,请替换以下行

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

      与:

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

      更多详情,请参阅本期:Fails with AGP 4.1.0-alpha04this comment

      【讨论】:

      • 这帮助我弄清楚了为什么我无法在最新版本的 React Native 64.2 上遇到错误。谢谢!
      【解决方案4】:

      我在这里写它是因为这个解决方案节省了我的时间:

      我们可以通过简单地替换引用来解决这个问题

      manifestOutputDirectory
      

      通过

      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)
              }
          }
      }  
      

      【讨论】:

      • 你好在哪里替换它?
      猜你喜欢
      • 2018-07-10
      • 2020-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      相关资源
      最近更新 更多