| # |
| # 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 |
| # providers 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" > |
| |
| <provider |
| android:name="com.example.Provider1" |
| android:authorities="com.example.android.apis.app.thingy1" |
| android:enabled="@bool/someConditionalValue" /> |
| |
| <provider |
| android:name="com.example.Provider2" /> |
| |
| </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 MyActivity1 in main --> |
| <provider |
| android:name="com.example.Provider1" |
| android:authorities="com.example.android.apis.app.thingy1" |
| android:enabled="@bool/someConditionalValue" /> |
| |
| <!-- Differs from MyActivity2 in main --> |
| <provider |
| android:name="com.example.Provider2" |
| android:authorities="com.example.android.apis.app.thingy2" |
| android:enabled="@bool/someConditionalValue2" /> |
| |
| <!-- A new one defined by lib1 --> |
| <provider |
| android:name="com.example.Provider3" |
| android:authorities="com.example.android.apis.app.thingy3" |
| android:enabled="@bool/someConditionalValue" /> |
| |
| </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 --> |
| <provider |
| android:name="com.example.Provider3" |
| android:authorities="com.example.android.apis.app.thingy3" /> |
| </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" > |
| |
| <provider |
| android:name="com.example.Provider1" |
| android:authorities="com.example.android.apis.app.thingy1" |
| android:enabled="@bool/someConditionalValue" /> |
| |
| <provider |
| android:name="com.example.Provider2" /> |
| |
| <!-- A new one defined by lib1 --> |
| <provider |
| android:name="com.example.Provider3" |
| android:authorities="com.example.android.apis.app.thingy3" |
| android:enabled="@bool/someConditionalValue" /> |
| |
| </application> |
| |
| </manifest> |
| |
| @errors |
| |
| 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 |
| 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 |