Gradle fails on manifest merging for “targetApi”

2019-04-23 05:03发布

My project contains activity declarations in the manifest that use the tools:targetApi attribute to ignore some warnings. Specifically:

    <activity
        android:name=".activities.ProtocolActivity"
        android:label="@string/title_activity_protocols"
        android:parentActivityName=".activities.InformationActivity"
        tools:targetApi="jelly_bean">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".activities.InformationActivity" />
    </activity>

Out of the blue, however, for instance after switching branches, I get the following compilation error:

Error:/home/paul/git/ally-v2-app/app/src/main/AndroidManifest.xml:67:9-80:20: Error: Invalid instruction 'targetApi', valid instructions are : REMOVE,REPLACE,STRICT
...
Error:java.lang.IllegalArgumentException: No enum constant com.android.manifmerger.AttributeOperationType.TARGETAPI

I'm using the following:

  • Gradle 2.10
  • Gradle plugin 2.0.0-beta6
  • Android Studio 2.0 beta 6
  • Both on an Ubuntu 15.10 machine and a Windows 10 machine

It seems I can get things working again by clearing the cache and restarting Android Studio, or removing the attributes, building, then adding them again.

2条回答
叼着烟拽天下
2楼-- · 2019-04-23 06:04

Replacing it by

tools:ignore="UnusedAttribute"

also fixes the lint issue.

查看更多
淡お忘
3楼-- · 2019-04-23 06:06

Remove the targetApi tag:

tools:targetApi="jelly_bean"
查看更多
登录 后发表回答