【问题标题】:android Canary 3.0 beta 5 unknown element <library> foundandroid Canary 3.0 beta 5 未知元素 <library> 找到
【发布时间】:2017-09-16 01:01:01
【问题描述】:

我正在尝试添加 mopub。但是当我这样做时,构建清单会添加一个库标签,然后说它不知道它是什么。如果我删除链接,一切正常。

compile('com.mopub:mopub-sdk:4.16.0@aar') {
    transitive = true
}

&lt;library android:name="moat-mobile-app-kit" /&gt;

错误:(34) 发现未知元素

错误:E:\Web\Studio\Opus\app\build\intermediates\manifests\full\live\debug\AndroidManifest.xml:34 发现未知元素

错误:java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.AaptException:AAPT2 链接失败:

错误:com.android.builder.internal.aapt.AaptException:AAPT2 链接 失败:错误:任务执行失败 ':app:processLiveDebugResources'。 aapt 执行失败

【问题讨论】:

  • 您好,您有什么更新吗?
  • 你发现了吗?
  • 我在 4.17 上遇到了同样的错误,我删除了 transitive = true;行和错误消失了。我不知道它是否有任何副作用,但现在可能是解决方法。

标签: android mopub


【解决方案1】:

我遇到了这个问题,经过几次检查我只能断定manifest merge,包括这条线

&lt;library android:name="moat-mobile-app-kit" /&gt;

来自 mopub avid 和 moat 套件,由于新的 android gradle 插件不支持此功能,因此您现在最好的选择是通过如下定义的编辑 mopub 依赖行来禁用可见性测量

compile('com.mopub:mopub-sdk:4.17.0@aar') {
    transitive = true
    exclude module: 'libAvid-mopub' // To exclude AVID
    exclude module: 'moat-mobile-app-kit' // To exclude Moat
}

【讨论】:

  • 它可以清理您的项目并进行重建.....如果您的构建日志如上所述...如果它不起作用,那么您可能不包括来自 jcenter 的 mopub aar... .让我看看你的依赖线。
  • @casolorz 好好检查我的答案,你只是想在你的 build.gradle 中包含编译语句,重建你会看到库行已经消失了。注意:不要在 manifest.xml 中添加该行
  • 我实际上复制粘贴了您在答案中的内容,但仍然无效。我从未手动将&lt;library.... 添加到我的清单中,因此我不必将其删除。它仍然不起作用。回到 mopub 4.15 可以正常工作,但我的理解是护城河对于 mopub 的发展很重要。
  • @casolorz 是的,你是对的,禁用护城河只是一个临时解决方案,我确信随着 mopub 更新,这将得到解决。如果这对您不起作用,则它的护城河仍然在您的内部依赖项中(这样简单的清理就可以了),或者您在 build.gradle 中包含 mopub 多次,或者另一个库也包含它。 .还有其他方法可以禁用护城河...在这里查看Mopub Docs
  • 我想知道是不是因为maven { url "https://s3.amazonaws.com/moat-sdk-builds" },但如果我以后需要它,我真的不想删除它。我现在只使用 4.15,因为在 4.17 上无论如何都必须禁用护城河。
【解决方案2】:

到目前为止,我发现的唯一解决方案是使用 MoPub 4.15。

编辑:MoPub 已经确认了这个问题,他们不会给我一个 ETA 来修复。

编辑:4.18 仍然损坏。

编辑:我应该提到我现在使用的是 4.19,但 Moat 仍处于禁用状态,并使用代码删除 Moat,但我还必须在包括 Moat 的其他广告网络上这样做。因此,如果您遇到此问题,您可能需要查看所有广告网络编译行。

编辑:根据 MoPub,这是在 4.20.0 上修复的,它似乎对我有用。

【讨论】:

  • 根据 MoPub,这是固定在 4.20.0 上的,它似乎对我有用。
【解决方案3】:

有一个护城河更新似乎解决了这个问题。对我来说,这可以正确编译:

implementation 'com.mopub:mopub-sdk:4.19.0@aar'
implementation 'com.moat.analytics.mobile.mpub:moat-mobile-app-kit:2.4.1'

【讨论】:

    【解决方案4】:

    我收到了 Mopub 的回复。

    Android Studio 3 使用 Gradle 4,而 Gradle 4 不赞成使用“编译”语句。因此,您需要使用“api”或“implementation”等关键字来代替“compile”。另请参阅此 StackFlow 链接以获取更多信息。

    链接here

    【讨论】:

    • 从“编译”转换为“实现”不起作用。 “api”也没有。 MoPub 团队是否提供了更多信息?似乎他们的文档仍然使用旧式依赖关键字:github.com/mopub/mopub-android-sdk/wiki/Getting-Started
    • @AdamWardVGP 检查我的答案并尝试一下......我只是在我的项目中解决了同样的问题
    【解决方案5】:

    将此添加到您的 gradle 依赖项中。

    exclude module: 'moat-mobile-app-kit' 如果您使用的是 Mopub SDK

    它对我有用。

    如果您使用的是 4.20.0,他们修复了这个问题。 https://developers.mopub.com/docs/android/changelog/#version-4200-february-20-2018

    【讨论】:

      【解决方案6】:

      将存储库和依赖项保留在一个文件(build.gradle),不是两个文件,例如根构建文件中的存储库,模块构建文件中的依赖项

       repositories {
         // ... other project repositories
          jcenter() // includes the MoPub SDK and AVID library
          maven { url "https://s3.amazonaws.com/moat-sdk-builds" }
       }
      
       // ...
      
      dependencies {
       // ... other project dependencies
       compile('com.mopub:mopub-sdk:4.16.0@aar') {
           transitive = true
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2017-10-28
        • 1970-01-01
        • 2017-12-11
        • 2016-05-31
        • 2017-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多