aboutsummaryrefslogtreecommitdiffstats
path: root/manifmerger/tests/src
diff options
context:
space:
mode:
Diffstat (limited to 'manifmerger/tests/src')
-rwxr-xr-xmanifmerger/tests/src/com/android/manifmerger/ManifestMergerTest.java4
-rwxr-xr-xmanifmerger/tests/src/com/android/manifmerger/data/11_activity_dup.xml47
-rwxr-xr-xmanifmerger/tests/src/com/android/manifmerger/data/12_alias_dup.xml26
-rwxr-xr-xmanifmerger/tests/src/com/android/manifmerger/data/13_service_dup.xml24
-rwxr-xr-xmanifmerger/tests/src/com/android/manifmerger/data/14_receiver_dup.xml26
-rwxr-xr-xmanifmerger/tests/src/com/android/manifmerger/data/15_provider_dup.xml24
-rwxr-xr-xmanifmerger/tests/src/com/android/manifmerger/data/26_permission_dup.xml69
-rwxr-xr-xmanifmerger/tests/src/com/android/manifmerger/data/60_merge_order.xml317
8 files changed, 460 insertions, 77 deletions
diff --git a/manifmerger/tests/src/com/android/manifmerger/ManifestMergerTest.java b/manifmerger/tests/src/com/android/manifmerger/ManifestMergerTest.java
index 1482792..564fc6d 100755
--- a/manifmerger/tests/src/com/android/manifmerger/ManifestMergerTest.java
+++ b/manifmerger/tests/src/com/android/manifmerger/ManifestMergerTest.java
@@ -145,4 +145,8 @@ public class ManifestMergerTest extends ManifestMergerTestCase {
public void test56_support_gltext_warning() throws Exception {
processTestFiles();
}
+
+ public void test60_merge_order() throws Exception {
+ processTestFiles();
+ }
}
diff --git a/manifmerger/tests/src/com/android/manifmerger/data/11_activity_dup.xml b/manifmerger/tests/src/com/android/manifmerger/data/11_activity_dup.xml
index 5ba6688..ef163b0 100755
--- a/manifmerger/tests/src/com/android/manifmerger/data/11_activity_dup.xml
+++ b/manifmerger/tests/src/com/android/manifmerger/data/11_activity_dup.xml
@@ -366,22 +366,41 @@
</manifest>
+
@errors
E [ManifestMergerTest0_main.xml:32, ManifestMergerTest1_lib1_widget.xml:16] Trying to merge incompatible /manifest/application/activity[@name=com.example.WidgetConfigurationUI] element:
- <activity android:name=com.example.WidgetConfigurationUI>
--- <intent-filter>
-++ (end reached)
+ <activity
+ @android:name="com.example.WidgetConfigurationUI"
+--</activity>
+--(end reached)
+ <activity
+ @android:name="com.example.WidgetConfigurationUI"
+++ <intent-filter>
+++ <action
+++ @android:name="android.appwidget.action.APPWIDGET_CONFIGURE">
E [ManifestMergerTest0_main.xml:38, ManifestMergerTest2_lib2_activity.xml:6] Trying to merge incompatible /manifest/application/activity[@name=com.example.LibActivity] element:
- <activity android:name=com.example.LibActivity>
- @android:icon = @drawable/lib_activity_icon
- @android:label = @string/lib_activity_name
- @android:name = com.example.LibActivity
--- @android:theme = @style/Lib.Theme
+ <activity
+-- @android:name="com.example.LibActivity">
+-- <intent-filter>
+-- <action
+ <activity
+++ @android:name="com.example.LibActivity"
+++ @android:theme="@style/Lib.Theme">
+++ <intent-filter>
E [ManifestMergerTest0_main.xml, ManifestMergerTest3_lib3_alias.xml:19] Trying to merge incompatible /manifest/application/activity[@name=com.example.LibActivity2] element:
- <activity android:name=com.example.LibActivity2>
- <intent-filter>
- <action android:name=android.intent.action.MAIN>
- <category android:name=android.intent.category.LAUNCHER>
--- <category android:name=android.intent.category.MOARCATZPLZ>
-++ (end reached)
+ <activity
+ @android:name="com.example.LibActivity2"
+ @android:name="android.intent.action.MAIN">
+ @android:name="android.intent.category.LAUNCHER">
+-- </intent-filter>
+--</activity>
+--(end reached)
+ <activity
+ @android:name="com.example.LibActivity2"
+ <intent-filter>
+ @android:name="android.intent.action.MAIN">
+ @android:name="android.intent.category.LAUNCHER">
+++ <category
+++ @android:name="android.intent.category.MOARCATZPLZ">
+++ </category>
diff --git a/manifmerger/tests/src/com/android/manifmerger/data/12_alias_dup.xml b/manifmerger/tests/src/com/android/manifmerger/data/12_alias_dup.xml
index 696965f..7b5aed3 100755
--- a/manifmerger/tests/src/com/android/manifmerger/data/12_alias_dup.xml
+++ b/manifmerger/tests/src/com/android/manifmerger/data/12_alias_dup.xml
@@ -192,14 +192,20 @@
P [ManifestMergerTest0_main.xml:6, ManifestMergerTest1_lib1.xml:6] Skipping identical /manifest/application/activity-alias[@name=com.example.alias.MyActivity1] element.
E [ManifestMergerTest0_main.xml:13, ManifestMergerTest1_lib1.xml:14] Trying to merge incompatible /manifest/application/activity-alias[@name=com.example.alias.MyActivity2] element:
- <activity-alias android:name=com.example.alias.MyActivity2>
-++ @android:icon = @drawable/alias_icon2
-++ @android:label = @string/alias_name2
- @android:name = com.example.alias.MyActivity2
- @android:targetActivity = com.example.MainActivity2
+ <activity-alias
+-- @android:icon="@drawable/alias_icon2"
+-- @android:label="@string/alias_name2"
+-- @android:name="com.example.alias.MyActivity2"
+ <activity-alias
+++ @android:name="com.example.alias.MyActivity2"
+++ @android:targetActivity="com.example.MainActivity2">
+++</activity-alias>
E [ManifestMergerTest0_main.xml, ManifestMergerTest2_lib2.xml:6] Trying to merge incompatible /manifest/application/activity-alias[@name=com.example.alias.MyActivity3] element:
- <activity-alias android:name=com.example.alias.MyActivity3>
- @android:icon = @drawable/alias_icon3
- @android:label = @string/alias_name3
- @android:name = com.example.alias.MyActivity3
-++ @android:targetActivity = com.example.MainActivity3
+ <activity-alias
+-- @android:name="com.example.alias.MyActivity3"
+-- @android:targetActivity="com.example.MainActivity3">
+-- <intent-filter>
+ <activity-alias
+++ @android:name="com.example.alias.MyActivity3">
+++ <intent-filter>
+++ <category
diff --git a/manifmerger/tests/src/com/android/manifmerger/data/13_service_dup.xml b/manifmerger/tests/src/com/android/manifmerger/data/13_service_dup.xml
index 36d7e24..4c257fa 100755
--- a/manifmerger/tests/src/com/android/manifmerger/data/13_service_dup.xml
+++ b/manifmerger/tests/src/com/android/manifmerger/data/13_service_dup.xml
@@ -146,10 +146,22 @@
P [ManifestMergerTest0_main.xml:6, ManifestMergerTest1_lib1.xml:6] Skipping identical /manifest/application/service[@name=com.example.AppService1] element.
E [ManifestMergerTest0_main.xml:8, ManifestMergerTest1_lib1.xml:9] Trying to merge incompatible /manifest/application/service[@name=com.example.AppService2] element:
- <service android:name=com.example.AppService2>
--- <intent-filter>
-++ (end reached)
+ <service
+ @android:name="com.example.AppService2">
+--</service>
+--(end reached)
+ <service
+ @android:name="com.example.AppService2">
+++ <intent-filter>
+++ <action
+++ @android:name="android.intent.action.MAIN">
E [ManifestMergerTest0_main.xml, ManifestMergerTest2_lib2.xml:6] Trying to merge incompatible /manifest/application/service[@name=com.example.AppService3] element:
- <service android:name=com.example.AppService3>
--- (end reached)
-++ <intent-filter>
+ <service
+ @android:name="com.example.AppService3">
+-- <intent-filter>
+-- <action
+-- @android:name="android.intent.action.MAIN">
+ <service
+ @android:name="com.example.AppService3">
+++</service>
+++(end reached)
diff --git a/manifmerger/tests/src/com/android/manifmerger/data/14_receiver_dup.xml b/manifmerger/tests/src/com/android/manifmerger/data/14_receiver_dup.xml
index a2547af..777ba22 100755
--- a/manifmerger/tests/src/com/android/manifmerger/data/14_receiver_dup.xml
+++ b/manifmerger/tests/src/com/android/manifmerger/data/14_receiver_dup.xml
@@ -165,12 +165,22 @@
P [ManifestMergerTest0_main.xml:6, ManifestMergerTest1_lib1.xml:6] Skipping identical /manifest/application/receiver[@name=com.example.AppReceiver1] element.
E [ManifestMergerTest0_main.xml:12, ManifestMergerTest1_lib1.xml:13] Trying to merge incompatible /manifest/application/receiver[@name=com.example.AppReceiver2] element:
- <receiver android:name=com.example.AppReceiver2>
-++ @android:icon = @drawable/app_icon
- @android:name = com.example.AppReceiver2
+ <receiver
+-- @android:icon="@drawable/app_icon"
+-- @android:name="com.example.AppReceiver2">
+-- <intent-filter>
+ <receiver
+++ @android:name="com.example.AppReceiver2">
+++</receiver>
+++(end reached)
E [ManifestMergerTest0_main.xml, ManifestMergerTest2_lib2.xml:6] Trying to merge incompatible /manifest/application/receiver[@name=com.example.AppReceiver3] element:
- <receiver android:name=com.example.AppReceiver3>
- <intent-filter>
- <action android:name=com.example.action.ACTION_CUSTOM>
--- @android:name = com.example.action.ACTION_CUSTOM
-++ @android:name = com.example.action.ACTION_CUSTOM1
+ <receiver
+ @android:name="com.example.AppReceiver3">
+ <intent-filter>
+ <action
+-- @android:name="com.example.action.ACTION_CUSTOM1">
+ <receiver
+ @android:name="com.example.AppReceiver3">
+ <intent-filter>
+ <action
+++ @android:name="com.example.action.ACTION_CUSTOM">
diff --git a/manifmerger/tests/src/com/android/manifmerger/data/15_provider_dup.xml b/manifmerger/tests/src/com/android/manifmerger/data/15_provider_dup.xml
index 7938c1e..bd0c8fe 100755
--- a/manifmerger/tests/src/com/android/manifmerger/data/15_provider_dup.xml
+++ b/manifmerger/tests/src/com/android/manifmerger/data/15_provider_dup.xml
@@ -134,12 +134,20 @@
P [ManifestMergerTest0_main.xml:6, ManifestMergerTest1_lib1.xml:6] Skipping identical /manifest/application/provider[@name=com.example.Provider1] element.
E [ManifestMergerTest0_main.xml:8, ManifestMergerTest1_lib1.xml:9] Trying to merge incompatible /manifest/application/provider[@name=com.example.Provider2] element:
- <provider android:name=com.example.Provider2>
--- @android:authorities = com.example.android.apis.app.thingy2
--- @android:enabled = @bool/someConditionalValue2
- @android:name = com.example.Provider2
+ <provider
+-- @android:name="com.example.Provider2">
+--</provider>
+--(end reached)
+ <provider
+++ @android:authorities="com.example.android.apis.app.thingy2"
+++ @android:enabled="@bool/someConditionalValue2"
+++ @android:name="com.example.Provider2">
E [ManifestMergerTest0_main.xml, ManifestMergerTest2_lib2.xml:6] Trying to merge incompatible /manifest/application/provider[@name=com.example.Provider3] element:
- <provider android:name=com.example.Provider3>
- @android:authorities = com.example.android.apis.app.thingy3
-++ @android:enabled = @bool/someConditionalValue
- @android:name = com.example.Provider3
+ <provider
+-- @android:enabled="@bool/someConditionalValue"
+-- @android:name="com.example.Provider3">
+--</provider>
+ <provider
+++ @android:name="com.example.Provider3">
+++</provider>
+++(end reached)
diff --git a/manifmerger/tests/src/com/android/manifmerger/data/26_permission_dup.xml b/manifmerger/tests/src/com/android/manifmerger/data/26_permission_dup.xml
index 3862249..bd9a4f1 100755
--- a/manifmerger/tests/src/com/android/manifmerger/data/26_permission_dup.xml
+++ b/manifmerger/tests/src/com/android/manifmerger/data/26_permission_dup.xml
@@ -269,39 +269,46 @@
@errors
E [ManifestMergerTest0_main.xml:12, ManifestMergerTest1_lib1.xml:4] Trying to merge incompatible /manifest/permission[@name=com.example.DangerWillRobinson] element:
- <permission android:name=com.example.DangerWillRobinson>
--- @android:description = Different description here
-++ @android:description = Insert boring description here
--- @android:icon = @drawable/not_the_same_icon
-++ @android:icon = @drawable/robot
- @android:label = Danger, Will Robinson!
- @android:name = com.example.DangerWillRobinson
- @android:permissionGroup = com.example.MasterControlPermission
- @android:protectionLevel = dangerous
+ <permission
+-- @android:description="Insert boring description here"
+-- @android:icon="@drawable/robot"
+ <permission
+++ @android:description="Different description here"
+++ @android:icon="@drawable/not_the_same_icon"
E [ManifestMergerTest0_main.xml:14, ManifestMergerTest1_lib1.xml:8] Trying to merge incompatible /manifest/permission[@name=com.example.WhatWereYouThinking] element:
- <permission android:name=com.example.WhatWereYouThinking>
- @android:name = com.example.WhatWereYouThinking
- @android:permissionGroup = com.example.MasterControlPermission
--- @android:protectionLevel = normal
-++ @android:protectionLevel = signatureOrSystem
+ <permission
+ @android:name="com.example.WhatWereYouThinking"
+-- @android:protectionLevel="signatureOrSystem">
+ <permission
+ @android:name="com.example.WhatWereYouThinking"
+++ @android:protectionLevel="normal">
E [ManifestMergerTest0_main.xml:16, ManifestMergerTest1_lib1.xml:5] Trying to merge incompatible /manifest/permission-group[@name=com.example.MasterControlPermission] element:
- <permission-group android:name=com.example.MasterControlPermission>
- @android:description = Nobody expects...
-++ @android:icon = @drawable/ignored_icon
- @android:label = the Spanish Inquisition
- @android:name = com.example.MasterControlPermission
+ <permission-group
+-- @android:icon="@drawable/ignored_icon"
+-- @android:label="the Spanish Inquisition"
+-- @android:name="com.example.MasterControlPermission">
+ <permission-group
+++ @android:label="the Spanish Inquisition"
+++ @android:name="com.example.MasterControlPermission">
+++</permission-group>
E [ManifestMergerTest0_main.xml:18, ManifestMergerTest1_lib1.xml:6] Trying to merge incompatible /manifest/permission-tree[@name=com.example.PermTree] element:
- <permission-tree android:name=com.example.PermTree>
-++ @android:label = This is not a label
--- @android:label = This is not the same label
- @android:name = com.example.PermTree
+ <permission-tree
+-- @android:label="This is not a label"
+ <permission-tree
+++ @android:label="This is not the same label"
E [ManifestMergerTest0_main.xml, ManifestMergerTest2_lib2.xml:6] Trying to merge incompatible /manifest/permission[@name=com.example.Permission1] element:
- <permission android:name=com.example.Permission1>
- @android:name = com.example.Permission1
- @android:permissionGroup = com.example.Permission1
-++ @android:protectionLevel = normal
--- @android:protectionLevel = system
+ <permission
+ @android:name="com.example.Permission1"
+-- @android:protectionLevel="normal">
+ <permission
+ @android:name="com.example.Permission1"
+++ @android:protectionLevel="system">
E [ManifestMergerTest0_main.xml, ManifestMergerTest2_lib2.xml:7] Trying to merge incompatible /manifest/permission-tree[@name=com.example.PermTree1] element:
- <permission-tree android:name=com.example.PermTree1>
--- @android:description = Extra description
- @android:name = com.example.PermTree1
+ <permission-tree
+-- @android:name="com.example.PermTree1">
+--</permission-tree>
+--(end reached)
+ <permission-tree
+++ @android:description="Extra description"
+++ @android:name="com.example.PermTree1">
+++</permission-tree>
diff --git a/manifmerger/tests/src/com/android/manifmerger/data/60_merge_order.xml b/manifmerger/tests/src/com/android/manifmerger/data/60_merge_order.xml
new file mode 100755
index 0000000..e820ecb
--- /dev/null
+++ b/manifmerger/tests/src/com/android/manifmerger/data/60_merge_order.xml
@@ -0,0 +1,317 @@
+#
+# Test:
+# - When activity / activity-alias / service / receiver / provider are merged,
+# we do a comparison to check whether the elements are already present in the
+# main manifest.
+# - What this checks is that the order of the elements or attributes within
+# the elements should not matter.
+#
+
+@main
+
+<manifest
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.example.app1">
+
+ <application
+ android:label="@string/app_name"
+ android:icon="@drawable/app_icon"
+ android:backupAgent="com.example.app.BackupAgentClass"
+ android:restoreAnyVersion="true"
+ android:allowBackup="true"
+ android:killAfterRestore="true"
+ android:name="com.example.TheApp" >
+
+ <activity
+ android:name="com.example.Activity1"
+ android:label="@string/activity_name"
+ android:icon="@drawable/activity_icon"
+ android:theme="@style/Some.Theme">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ <meta-data
+ android:name="metaName"
+ android:value="metaValue"
+ android:resource="@color/someColor" />
+ </activity>
+
+ <!-- Receiver -->
+ <receiver
+ android:name="com.example.AppReceiver"
+ android:icon="@drawable/app_icon">
+ <intent-filter>
+ <action android:name="android.intent.action.BOOT_COMPLETED" />
+ </intent-filter>
+ <intent-filter>
+ <action android:name="com.example.intent.action.DO_THIS" />
+ </intent-filter>
+ <intent-filter>
+ <action android:name="com.example.intent.action.DO_THAT" />
+ </intent-filter>
+ <intent-filter>
+ <action android:name="android.intent.action.TIMEZONE_CHANGED" />
+ <action android:name="android.intent.action.TIME_SET" />
+ </intent-filter>
+ <intent-filter>
+ <action android:name="android.intent.action.PHONE_STATE"/>
+ </intent-filter>
+ </receiver>
+
+ <activity
+ android:name="com.example.LibActivity"
+ android:label="@string/lib_activity_name"
+ android:icon="@drawable/lib_activity_icon"
+ android:theme="@style/Lib.Theme">
+
+ <!-- When comparing duplicate elements, whitespace and comments are ignored. -->
+
+ <intent-filter>
+ <action android:name="com.example.IN_APP_NOTIFY" />
+ <action android:name="com.example.RESPONSE_CODE" />
+ <action android:name="com.example.PURCHASE_STATE_CHANGED" />
+ </intent-filter>
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ <meta-data
+ android:name="metaName2"
+ android:value="metaValue2"
+ android:resource="@color/someColor2"
+ />
+ </activity>
+ </application>
+</manifest>
+
+
+@lib1
+
+<manifest
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.example.lib1">
+
+ <!-- Redefine the same elements as in the main manifest except it changes
+ the attribute order and the the inner elements order. -->
+ <application
+ android:name="com.example.TheApp"
+ android:icon="@drawable/app_icon"
+ android:label="@string/app_name"
+ android:allowBackup="true"
+ android:killAfterRestore="true"
+ android:restoreAnyVersion="true"
+ android:backupAgent="com.example.app.BackupAgentClass"
+ >
+
+ <!-- Receiver -->
+ <receiver
+ android:icon="@drawable/app_icon"
+ android:name="com.example.AppReceiver"
+ >
+ <intent-filter>
+ <action android:name="android.intent.action.TIME_SET" />
+ <action android:name="android.intent.action.TIMEZONE_CHANGED" />
+ </intent-filter>
+ <intent-filter>
+ <action android:name="com.example.intent.action.DO_THIS" />
+ </intent-filter>
+ <intent-filter>
+ <action android:name="android.intent.action.PHONE_STATE"/>
+ </intent-filter>
+ <intent-filter>
+ <action android:name="android.intent.action.BOOT_COMPLETED" />
+ </intent-filter>
+ <intent-filter>
+ <action android:name="com.example.intent.action.DO_THAT" />
+ </intent-filter>
+ </receiver>
+
+ <activity
+ android:theme="@style/Lib.Theme"
+ android:name="com.example.LibActivity"
+ android:icon="@drawable/lib_activity_icon"
+ android:label="@string/lib_activity_name"
+ >
+ <!-- When comparing duplicate elements, whitespace and comments are ignored. -->
+ <intent-filter>
+ <category android:name="android.intent.category.LAUNCHER" />
+ <action android:name="android.intent.action.MAIN" />
+ </intent-filter>
+ <meta-data
+ android:resource="@color/someColor2"
+ android:value="metaValue2"
+ android:name="metaName2">
+ </meta-data>
+ <intent-filter>
+ <action android:name="com.example.IN_APP_NOTIFY" />
+ <action android:name="com.example.PURCHASE_STATE_CHANGED" />
+ <action android:name="com.example.RESPONSE_CODE" />
+ </intent-filter>
+ </activity>
+
+ <activity
+ android:icon="@drawable/activity_icon"
+ android:label="@string/activity_name"
+ android:name="com.example.Activity1"
+ android:theme="@style/Some.Theme">
+ <meta-data
+ android:value="metaValue"
+ android:name="metaName"
+ android:resource="@color/someColor" />
+ <intent-filter>
+ <category android:name="android.intent.category.LAUNCHER" />
+ <action android:name="android.intent.action.MAIN" />
+ </intent-filter>
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ </application>
+
+</manifest>
+
+
+@lib2
+
+<manifest
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.example.lib2">
+
+ <application
+ android:label="@string/app_name"
+ android:icon="@drawable/app_icon"
+ android:backupAgent="com.example.app.BackupAgentClass"
+ android:restoreAnyVersion="true"
+ android:allowBackup="true"
+ android:killAfterRestore="true"
+ android:name="com.example.TheApp" >
+
+ <!-- The whitespace and alignment is also drastically different here and has
+ no impact whatsoever on the content's comparison.
+ Some empty elements have been 'uncollapsed' with their closing element separated. -->
+ <activity android:label="@string/activity_name" android:icon="@drawable/activity_icon" android:theme="@style/Some.Theme" android:name="com.example.Activity1">
+ <intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>
+ <intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>
+ <meta-data android:value="metaValue" android:resource="@color/someColor" android:name="metaName" />
+ </activity>
+ <activity android:label="@string/lib_activity_name" android:icon="@drawable/lib_activity_icon" android:name="com.example.LibActivity" android:theme="@style/Lib.Theme"><intent-filter>
+ <action android:name="com.example.IN_APP_NOTIFY" /> <action android:name="com.example.RESPONSE_CODE" /> <action android:name="com.example.PURCHASE_STATE_CHANGED" />
+ </intent-filter>
+ <intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ <meta-data android:name="metaName2" android:value="metaValue2" android:resource="@color/someColor2"
+ />
+ </activity>
+
+ <!-- Receiver -->
+ <receiver android:icon="@drawable/app_icon" android:name="com.example.AppReceiver" >
+ <intent-filter><action android:name="android.intent.action.TIME_SET"></action>
+ <action android:name="android.intent.action.TIMEZONE_CHANGED" /></intent-filter>
+ <intent-filter><action android:name="android.intent.action.PHONE_STATE" >
+ </action></intent-filter>
+ <intent-filter><action android:name="android.intent.action.BOOT_COMPLETED" />
+ </intent-filter>
+ <intent-filter><action android:name="com.example.intent.action.DO_THIS" /></intent-filter>
+ <intent-filter><action android:name="com.example.intent.action.DO_THAT" /></intent-filter>
+ </receiver>
+ </application>
+</manifest>
+
+
+
+@result
+
+<manifest
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.example.app1">
+
+ <application
+ android:label="@string/app_name"
+ android:icon="@drawable/app_icon"
+ android:backupAgent="com.example.app.BackupAgentClass"
+ android:restoreAnyVersion="true"
+ android:allowBackup="true"
+ android:killAfterRestore="true"
+ android:name="com.example.TheApp" >
+
+ <activity
+ android:name="com.example.Activity1"
+ android:label="@string/activity_name"
+ android:icon="@drawable/activity_icon"
+ android:theme="@style/Some.Theme">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ <meta-data
+ android:name="metaName"
+ android:value="metaValue"
+ android:resource="@color/someColor" />
+ </activity>
+
+ <!-- Receiver -->
+ <receiver
+ android:name="com.example.AppReceiver"
+ android:icon="@drawable/app_icon">
+ <intent-filter>
+ <action android:name="android.intent.action.BOOT_COMPLETED" />
+ </intent-filter>
+ <intent-filter>
+ <action android:name="com.example.intent.action.DO_THIS" />
+ </intent-filter>
+ <intent-filter>
+ <action android:name="com.example.intent.action.DO_THAT" />
+ </intent-filter>
+ <intent-filter>
+ <action android:name="android.intent.action.TIMEZONE_CHANGED" />
+ <action android:name="android.intent.action.TIME_SET" />
+ </intent-filter>
+ <intent-filter>
+ <action android:name="android.intent.action.PHONE_STATE"/>
+ </intent-filter>
+ </receiver>
+
+ <activity
+ android:name="com.example.LibActivity"
+ android:label="@string/lib_activity_name"
+ android:icon="@drawable/lib_activity_icon"
+ android:theme="@style/Lib.Theme">
+
+ <!-- When comparing duplicate elements, whitespace and comments are ignored. -->
+
+ <intent-filter>
+ <action android:name="com.example.IN_APP_NOTIFY" />
+ <action android:name="com.example.RESPONSE_CODE" />
+ <action android:name="com.example.PURCHASE_STATE_CHANGED" />
+ </intent-filter>
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ <meta-data
+ android:name="metaName2"
+ android:value="metaValue2"
+ android:resource="@color/someColor2"
+ />
+ </activity>
+ </application>
+</manifest>
+
+@errors
+
+P [ManifestMergerTest0_main.xml:37, ManifestMergerTest1_lib1.xml:26] Skipping identical /manifest/application/activity[@name=com.example.LibActivity] element.
+P [ManifestMergerTest0_main.xml:5, ManifestMergerTest1_lib1.xml:41] Skipping identical /manifest/application/activity[@name=com.example.Activity1] element.
+P [ManifestMergerTest0_main.xml:18, ManifestMergerTest1_lib1.xml:7] Skipping identical /manifest/application/receiver[@name=com.example.AppReceiver] element.
+P [ManifestMergerTest0_main.xml:5, ManifestMergerTest2_lib2.xml:6] Skipping identical /manifest/application/activity[@name=com.example.Activity1] element.
+P [ManifestMergerTest0_main.xml:37, ManifestMergerTest2_lib2.xml:11] Skipping identical /manifest/application/activity[@name=com.example.LibActivity] element.
+P [ManifestMergerTest0_main.xml:18, ManifestMergerTest2_lib2.xml:20] Skipping identical /manifest/application/receiver[@name=com.example.AppReceiver] element.