标签:microsoft cannot gets cts http tools sim debug 标记
提示: 使用 Merged Manifest view 预览合并清单的效果并找出冲突错误。
提示: 使用 Merged Manifest view 预览合并清单的效果并找出冲突错误。
重要说明: build.gradle 文件中的构建配置将替换合并清单文件中的任何对应属性。 例如,build.gradle 文件中的minSdkVersion 将替换<uses-sdk> 清单元素中的匹配属性。为了避免混淆,您只需省去 <uses-sdk> 元素并在 build.gradle 文件中定义这些属性。For more details, see Configure Your Build.
重要说明: build.gradle 文件中的构建配置将替换合并清单文件中的任何对应属性。 例如,build.gradle 文件中的minSdkVersion 将替换<uses-sdk> 清单元素中的匹配属性。为了避免混淆,您只需省去 <uses-sdk> 元素并在 build.gradle 文件中定义这些属性。For more details, see Configure Your Build.
High priority attribute | Low priority attribute | Attribute‘s merged result |
No value | No value | No value (use default value) |
Value B | Value B | |
Value A | No value | Value A |
Value A | Value A | |
Value B | Conflict error—you must add a merge rule marker |
<uses-feature
android:name="android.hardware.camera"
android:required="false"/>
<uses-feature
android:name="android.hardware.camera"
android:required="false"/>
Do not depend on default attribute values.
由于所有 unique attributes 都合并到同一元素中,如果高优先级清单实际上依赖于属性的默认值而不需要声明,则可能会导致意外结果。
例如,如果高优先级清单不声明 android:launchMode 属性,则会使用 "standard" 的默认值;但如果低优先级清单声明此属性具有其他值,该值将应用于合并清单(替代默认值)。
因此,您应该按期望明确定义每个属性。(每个属性的默认值都会记录在 Manifest reference 中)。
Do not depend on default attribute values.
由于所有 unique attributes 都合并到同一元素中,如果高优先级清单实际上依赖于属性的默认值而不需要声明,则可能会导致意外结果。
例如,如果高优先级清单不声明 android:launchMode 属性,则会使用 "standard" 的默认值;但如果低优先级清单声明此属性具有其他值,该值将应用于合并清单(替代默认值)。
因此,您应该按期望明确定义每个属性。(每个属性的默认值都会记录在 Manifest reference 中)。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp"
xmlns:tools="http://schemas.android.com/tools">
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp"
xmlns:tools="http://schemas.android.com/tools">
<activity android:name=”com.example.ActivityOne”
android:windowSoftInputMode=”stateUnchanged”>
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<data android:type="image/*" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity android:name=”com.example.ActivityOne”
android:windowSoftInputMode=”stateUnchanged”>
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<data android:type="image/*" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity android:name=”com.example.ActivityOne”
android:screenOrientation=”portrait”
tools:node="merge-only-attributes”/>
<activity android:name=”com.example.ActivityOne”
android:screenOrientation=”portrait”
tools:node="merge-only-attributes”/>
<activity android:name=”com.example.ActivityOne”
android:screenOrientation=”portrait”
android:windowSoftInputMode=”stateUnchanged”/>
<activity android:name=”com.example.ActivityOne”
android:screenOrientation=”portrait”
android:windowSoftInputMode=”stateUnchanged”/>
<activity-alias android:name=”com.example.alias”>
<meta-data android:name=”cow”
android:value=”@string/moo”/>
<meta-data android:name=”duck”
android:value=”@string/quack”/>
</activity-alias>
<activity-alias android:name=”com.example.alias”>
<meta-data android:name=”cow”
android:value=”@string/moo”/>
<meta-data android:name=”duck”
android:value=”@string/quack”/>
</activity-alias>
<activity-alias android:name=”com.example.alias”>
<meta-data android:name=”cow”
tools:node=”remove”/>
</activity-alias>
<activity-alias android:name=”com.example.alias”>
<meta-data android:name=”cow”
tools:node=”remove”/>
</activity-alias>
<activity-alias android:name=”com.example.alias”>
<meta-data android:name=”duck”
android:value=”@string/quack”/>
</activity-alias>
<activity-alias android:name=”com.example.alias”>
<meta-data android:name=”duck”
android:value=”@string/quack”/>
</activity-alias>
<activity-alias android:name=”com.example.alias”>
<meta-data android:name=”cow”
android:value=”@string/moo”/>
<meta-data android:name=”duck”
android:value=”@string/quack”/>
</activity-alias>
<activity-alias android:name=”com.example.alias”>
<meta-data android:name=”cow”
android:value=”@string/moo”/>
<meta-data android:name=”duck”
android:value=”@string/quack”/>
</activity-alias>
<activity-alias android:name=”com.example.alias”>
<meta-data tools:node=”removeAll”/>
</activity-alias>
<activity-alias android:name=”com.example.alias”>
<meta-data tools:node=”removeAll”/>
</activity-alias>
<activity-alias android:name=”com.example.alias”/>
<activity-alias android:name=”com.example.alias”/>
<activity-alias android:name=”com.example.alias”>
<meta-data android:name=”cow”
android:value=”@string/moo”/>
<meta-data android:name=”duck”
android:value=”@string/quack”/>
</activity-alias>
<activity-alias android:name=”com.example.alias”>
<meta-data android:name=”cow”
android:value=”@string/moo”/>
<meta-data android:name=”duck”
android:value=”@string/quack”/>
</activity-alias>
<activity-alias android:name=”com.example.alias”
tools:node=”replace”>
<meta-data android:name=”fox”
android:value=”@string/dingeringeding”/>
</activity-alias>
<activity-alias android:name=”com.example.alias”
tools:node=”replace”>
<meta-data android:name=”fox”
android:value=”@string/dingeringeding”/>
</activity-alias>
<activity-alias android:name=”com.example.alias”>
<meta-data android:name=”fox”
android:value=”@string/dingeringeding”/>
</activity-alias>
<activity-alias android:name=”com.example.alias”>
<meta-data android:name=”fox”
android:value=”@string/dingeringeding”/>
</activity-alias>
<activity android:name=”com.example.ActivityOne”
android:windowSoftInputMode=”stateUnchanged”>
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity android:name=”com.example.ActivityOne”
android:windowSoftInputMode=”stateUnchanged”>
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity android:name=”com.example.ActivityOne”
android:screenOrientation=”portrait”
tools:node="strict”/>
<activity android:name=”com.example.ActivityOne”
android:screenOrientation=”portrait”
tools:node="strict”/>
<activity android:name=”com.example.ActivityOne”
android:windowSoftInputMode=”stateUnchanged”/>
<activity android:name=”com.example.ActivityOne”
android:windowSoftInputMode=”stateUnchanged”/>
<activity android:name=”com.example.ActivityOne”
android:screenOrientation=”portrait”
tools:remove=”android:windowSoftInputMode”/>
<activity android:name=”com.example.ActivityOne”
android:screenOrientation=”portrait”
tools:remove=”android:windowSoftInputMode”/>
<activity android:name=”com.example.ActivityOne”
android:screenOrientation=”portrait”/>
<activity android:name=”com.example.ActivityOne”
android:screenOrientation=”portrait”/>
<activity android:name=”com.example.ActivityOne”
android:theme=”@oldtheme”
android:exported=”false”
android:windowSoftInputMode=”stateUnchanged”>
<activity android:name=”com.example.ActivityOne”
android:theme=”@oldtheme”
android:exported=”false”
android:windowSoftInputMode=”stateUnchanged”>
<activity android:name=”com.example.ActivityOne”
android:theme=”@newtheme”
android:exported=”true”
android:screenOrientation=”portrait”
tools:replace=”android:theme,android:exported”>
<activity android:name=”com.example.ActivityOne”
android:theme=”@newtheme”
android:exported=”true”
android:screenOrientation=”portrait”
tools:replace=”android:theme,android:exported”>
<activity android:name=”com.example.ActivityOne”
android:theme=”@newtheme”
android:exported=”true”
android:screenOrientation=”portrait”
android:windowSoftInputMode=”stateUnchanged”>
<activity android:name=”com.example.ActivityOne”
android:theme=”@newtheme”
android:exported=”true”
android:screenOrientation=”portrait”
android:windowSoftInputMode=”stateUnchanged”>
<activity android:name=”com.example.ActivityOne”
android:screenOrientation=”landscape”/>
<activity android:name=”com.example.ActivityOne”
android:screenOrientation=”landscape”/>
<activity android:name=”com.example.ActivityOne”
android:screenOrientation=”portrait”
tools:strict="android:screenOrientation”/>
<activity android:name=”com.example.ActivityOne”
android:screenOrientation=”portrait”
tools:strict="android:screenOrientation”/>
<activity android:name=”com.example.ActivityOne”
android:theme=”@oldtheme”
android:exported=”false”
android:allowTaskReparenting="true"
android:windowSoftInputMode=”stateUnchanged”>
<activity android:name=”com.example.ActivityOne”
android:theme=”@oldtheme”
android:exported=”false”
android:allowTaskReparenting="true"
android:windowSoftInputMode=”stateUnchanged”>
<activity android:name=”com.example.ActivityOne”
android:theme=”@newtheme”
android:exported=”true”
android:screenOrientation=”portrait”
tools:replace=”android:theme,android:exported”
tools:remove=”android:windowSoftInputMode”>
<activity android:name=”com.example.ActivityOne”
android:theme=”@newtheme”
android:exported=”true”
android:screenOrientation=”portrait”
tools:replace=”android:theme,android:exported”
tools:remove=”android:windowSoftInputMode”>
<activity android:name=”com.example.ActivityOne”
android:theme=”@newtheme”
android:exported=”true”
android:allowTaskReparenting="true"
android:screenOrientation=”portrait”>
<activity android:name=”com.example.ActivityOne”
android:theme=”@newtheme”
android:exported=”true”
android:allowTaskReparenting="true"
android:screenOrientation=”portrait”>
<permission android:name="permissionOne"
tools:node="remove"
tools:selector="com.example.lib1">
<permission android:name="permissionOne"
tools:node="remove"
tools:selector="com.example.lib1">
<uses-sdk android:targetSdkVersion="22"
android:minSdkVersion="2"
tools:overrideLibrary="com.example.lib1, com.example.lib2"/>
<uses-sdk android:targetSdkVersion="22"
android:minSdkVersion="2"
tools:overrideLibrary="com.example.lib1, com.example.lib2"/>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.lib1">
<uses-sdk android:minSdkVersion="4"/>
...
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.lib1">
<uses-sdk android:minSdkVersion="4"/>
注:如果您将应用的 targetSdkVersion 设置为 23 或更高值,则必须在应用尝试访问受这些权限保护的 API 时为任何危险权限执行运行时权限请求。 如需获得更多指导,请参阅使用系统权限。
注:如果您将应用的 targetSdkVersion 设置为 23 或更高值,则必须在应用尝试访问受这些权限保护的 API 时为任何危险权限执行运行时权限请求。 如需获得更多指导,请参阅使用系统权限。
Lower-priority manifest declares | Permissions added to the merged manifest |
targetSdkVersion is 3 or lower | WRITE_EXTERNAL_STORAGE, READ_PHONE_STATE |
targetSdkVersion is 15 or lower and using READ_CONTACTS | READ_CALL_LOG |
targetSdkVersion is 15 or lower and using WRITE_CONTACTS | WRITE_CALL_LOG |
元素 | 合并策略 | 合并关键字 |
<action> | 合并 | android:name 属性 |
<activity> | 合并 | android:name 属性 |
<application> | 合并 | 每个 <manifest> 仅一个 |
<category> | 合并 | android:name 属性 |
<data> | 合并 | 每个 <intent-filter> 仅 1 个 |
<grant-uri-permission> | 合并 | 每个 <provider> 仅 1 个 |
<instrumentation> | 合并 | android:name 属性 |
<intent-filter> | 保留 | 不匹配;允许父元素内的多个声明 |
<manifest> | 合并 | 每个文件仅 1 个 |
<meta-data> | 合并 | android:name 属性 |
<path-permission> | 合并 | 每个 <provider> 仅 1 个 |
<permission-group> | 合并 | android:name 属性 |
<permission> | 合并 | android:name 属性 |
<permission-tree> | 合并 | android:name 属性 |
<provider> | 合并 | android:name 属性 |
<receiver> | 合并 | android:name 属性 |
<screen> | 合并 | android:screenSize 属性 |
<service> | 合并 | android:name 属性 |
<supports-gl-texture> | 合并 | android:name 属性 |
<supports-screen> | 合并 | 每个 <manifest> 仅 1 个 |
<uses-configuration> | 合并 | 每个 <manifest> 仅 1 个 |
<uses-feature> | 合并 | android:name 属性(如果不存在,则使用 android:glEsVersion 属性) |
<uses-library> | 合并 | android:name 属性 |
<uses-permission> | 合并 | android:name 属性 |
<uses-sdk> | 合并 | 每个 <manifest> 仅 1 个 |
自定义元素 | 合并 | 无匹配;合并工具不了解这些信息,因此它们始终 包括在合并清单中 |
标签:microsoft cannot gets cts http tools sim debug 标记
原文地址:https://www.cnblogs.com/baiqiantao/p/9363208.html