没有枚举常量 com.android.manifmerger.NodeOperationType.MERGE-ONLY-ATTRIBUTES

4 android gradle

这是我在 AndroidManifest.xml 中的代码:

<activity
      android:name=".ui.FlashActivity"
      android:screenOrientation="landscape"
      tools:node="merge-only-attributes">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
              <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

但是当我构建项目时,出现了一个问题:


出了什么问题:任务“:app:processDevelopDebugManifest”的执行失败。没有枚举常量 com.android.manifmerger.NodeOperationType.MERGE-ONLY-ATTRIBUTES

任何人都可以帮助我吗?3 秒

Mec*_*han 5

尝试使用"mergeOnlyAttributes"而不是"merge-only-attributes"......他们围绕字符串与枚举的逻辑似乎已经搞砸了。

枚举值肯定仍然存在:https : //android.googlesource.com/platform/tools/base/+/refs/heads/android10-release/build-system/manifest-merger/src/main/java/com/ android/manifmerger/NodeOperationType.java?autodive=0%2F%2F%2F#45


小智 0

这种“仅合并属性”的东西似乎已经消失了。我也无法让它发挥作用。但也许您可以尝试在要从较低优先级 AndroidManifest.xml 中删除的元素中使用“tools:node=”remove”(如果已知)。喜欢

<activity
  android:name=".ui.FlashActivity"
  android:screenOrientation="landscape">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
        <action android:name="some.action.to.remove"
                tools:node="remove"/>
    </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

或者甚至删除整个意图过滤器:

<activity
  android:name=".ui.FlashActivity"
  android:screenOrientation="landscape">
    <intent-filter tools:node="removeAll"/>
</activity>
Run Code Online (Sandbox Code Playgroud)