blob: 696965f7efb22f710653fa9dd61e36618a08fb1b [file] [log] [blame]
#
# Test:
# - Activities from libraries are merged in the main manifest.
# - Acts on activity / activity-alias / service / receiver / provider.
# - Elements are merged as-is with the first comment element preceding them.
# - Whitespace preceding the merged elements is transfered over too.
#
# Note:
# - New elements are always merged at the end of the application element.
# - It's an error if an element with the same @name attribute is defined
# or merged more than once unless the definition is *exactly* the same,
# the "same" being defined by the exact XML elements, whitespace excluded.
#
# This tests that an error is generated because the libraries define
# aliases which are already defined differently.
#
@fails
@main
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.app1"
android:versionCode="100"
android:versionName="1.0.0">
<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-alias
android:name="com.example.alias.MyActivity1"
android:targetActivity="com.example.MainActivity1"
android:label="@string/alias_name1"
android:icon="@drawable/alias_icon1"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
<activity-alias
android:name="com.example.alias.MyActivity2"
android:targetActivity="com.example.MainActivity2"
android:label="@string/alias_name2"
android:icon="@drawable/alias_icon2"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
</application>
</manifest>
@lib1
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.lib1">
<application android:label="@string/lib_name1" >
<!-- Same as 1 in main -->
<activity-alias
android:name="com.example.alias.MyActivity1"
android:targetActivity="com.example.MainActivity1"
android:label="@string/alias_name1"
android:icon="@drawable/alias_icon1"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
<!-- Differs from 2 in main -->
<activity-alias
android:name="com.example.alias.MyActivity2"
android:targetActivity="com.example.MainActivity2">
</activity-alias>
<!-- A new one defined by lib1 -->
<activity-alias
android:name="com.example.alias.MyActivity3"
android:targetActivity="com.example.MainActivity3"
android:label="@string/alias_name3"
android:icon="@drawable/alias_icon3"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
</application>
</manifest>
@lib2
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.lib2">
<application android:label="@string/lib_name2" >
<!-- Conflicts with 3 from lib1 -->
<activity-alias
android:name="com.example.alias.MyActivity3"
android:label="@string/alias_name3"
android:icon="@drawable/alias_icon3">
<intent-filter>
<category android:name="android.intent.category.LAUNCHER2" />
</intent-filter>
</activity-alias>
</application>
</manifest>
@result
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.app1"
android:versionCode="100"
android:versionName="1.0.0">
<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-alias
android:name="com.example.alias.MyActivity1"
android:targetActivity="com.example.MainActivity1"
android:label="@string/alias_name1"
android:icon="@drawable/alias_icon1"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
<activity-alias
android:name="com.example.alias.MyActivity2"
android:targetActivity="com.example.MainActivity2"
android:label="@string/alias_name2"
android:icon="@drawable/alias_icon2"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
<!-- A new one defined by lib1 -->
<activity-alias
android:name="com.example.alias.MyActivity3"
android:targetActivity="com.example.MainActivity3"
android:label="@string/alias_name3"
android:icon="@drawable/alias_icon3"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
</application>
</manifest>
@errors
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
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