Android清单合并删除属性

时间:2017-03-08 21:40:33

标签: android groovy android-manifest manifest-merging

我正在使用groovy生成一个部分清单,其中包含来自我的构建配置文件的应用程序链接的意图过滤器声明。在apk中找到的合并清单看起来像预期的那样但有一个问题:尽管在build.gradle中设置了属性android:debuggable但它仍然被删除。如果我删除部分清单并重建apk,android:debuggable="true"将按预期设置。

我的主要清单如下:

<manifest package="com.app.myapp"
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:installLocation="auto">

        <application
        android:name="MyApp"
        tools:replace="android:theme, android:label, android:allowBackup">

        </application>
</manifest>

我的生成部分清单看起来像:

<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.app.myapp" xmlns:android="http://schemas.android.com/apk/res/android">
        <application
                android:name="MyApp">
                <activity android:name=".activity.MyActivity">
                        <intent-filter android:autoVerify="true">
                                <action android:name="android.intent.action.VIEW"/>
                                <category android:name="android.intent.category.BROWSABLE"/>
                                <category android:name="android.intent.category.DEFAULT"/>

                        </intent-filter>
                </activity>
        </application>
</manifest>

并在build.gradle文件debuggable true中设置。

从apk中找到的合并清单中删除了属性android:debuggable,我该怎么做才能确保在未将其添加到部分清单中的情况下正确设置(我在gradle sync时不知道它)脚本运行的时间,并且不想将其硬编码为true)?

1 个答案:

答案 0 :(得分:0)

从部分清单文件的android:name节点中删除application属性后,合并正确。

有效的部分清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.app.myapp" xmlns:android="http://schemas.android.com/apk/res/android">
        <application>
                <activity android:name=".activity.MyActivity">
                        <intent-filter android:autoVerify="true">
                                <action android:name="android.intent.action.VIEW"/>
                                <category android:name="android.intent.category.BROWSABLE"/>
                                <category android:name="android.intent.category.DEFAULT"/>

                        </intent-filter>
                </activity>
        </application>
</manifest>