在我的Cordova应用程序中,我正在尝试从库中更改活动的行为(需要隐藏标题栏);我将此添加到AndroidManifest.xml
:
<activity android:name="com.salesforce.androidsdk.ui.LoginActivity"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" />
并出现此错误(为简洁起见,第3行的路径缩短了):
[mergemanifest] Merging AndroidManifest files into one.
[mergemanifest] Merging manifests from project and 4 libraries.
[mergemanifest] Error: [.../app/platforms/android/AndroidManifest.xml:21, .../app/plugins/com.salesforce/src/android/libs/SalesforceSDK/AndroidManifest.xml:16] Trying to merge incompatible /manifest/application/activity[@name=com.salesforce.androidsdk.ui.LoginActivity] element:
[mergemanifest] <activity
[mergemanifest] @android:name="com.salesforce.androidsdk.ui.LoginActivity"
[mergemanifest] -- @android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
[mergemanifest] <activity
[mergemanifest] @android:name="com.salesforce.androidsdk.ui.LoginActivity"
[mergemanifest] ++ @android:theme="@style/SalesforceSDK.ActionBarTheme">
我不想修改图书馆的清单,所以我尝试使用标记as described in the merger docs在我的应用清单中覆盖它。首先,我将xmlns:tools="http://schemas.android.com/tools"
添加到我的<manifest>
元素,然后我更新了冲突行:
<activity android:name="com.salesforce.androidsdk.ui.LoginActivity"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
tools:replace="theme" />
虽然你可以看到它看到了新属性,但仍然失败了:
[mergemanifest] <activity
[mergemanifest] @android:name="com.salesforce.androidsdk.ui.LoginActivity"
[mergemanifest] -- @android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
[mergemanifest] -- @tools:replace="theme">
[mergemanifest] --</activity>
[mergemanifest] <activity
[mergemanifest] @android:name="com.salesforce.androidsdk.ui.LoginActivity"
[mergemanifest] ++ @android:theme="@style/SalesforceSDK.ActionBarTheme">
[mergemanifest] ++</activity>
我也试过了tools:node=”replace”
,但是从文档中的示例来看,应该在父文件中(在这种情况下,application
),如果不了解所有内容,我宁愿不这样做其他合并可能会受到影响。那么,为什么忽略tools:replace="theme"
?
答案 0 :(得分:0)
您可以使用A
文件中的config-file
属性修改Manifest的标记属性。
在这种特殊情况下,您必须将命名空间添加到插件XML文件的根元素中。
plugin.xml
而不是
<plugin id="myapp" version="0.0.1" xmlns:tools="http://schemas.android.com/tools">
注意:永远不要直接修改<config-file parent="/*" target="AndroidManifest.xml" mode="merge">
<application tools:replace="android:label"/>
</config-file>
。