重建应用程序时,Cordova Android 未将自定义 URL Scheme 插件中的所有 xml 添加到 AndroidManifest
Cordova Android not adding all xml from Custom URL Scheme plugin to AndroidManifest when rebuilding app
我将插件 https://github.com/EddyVerbruggen/Custom-URL-scheme 添加到我的 cordova 项目中。
该插件在 plugin.xml 文件中有这个 Android:
<config-file target="AndroidManifest.xml" parent="/manifest/application/activity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="$URL_SCHEME"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="$ANDROID_SCHEME"
android:host="$ANDROID_HOST"
android:pathPrefix="$ANDROID_PATHPREFIX" />
</intent-filter>
</config-file>
安装插件时,我提供 CUSTOM_URL 变量的值:
cordova plugin add cordova-plugin-customurlscheme --variable URL_SCHEME=appscheme
然后我 运行 模拟器中的应用程序与 cordova 运行 android --emulator。 Android 清单已正确生成,包括两个 intent 过滤器块:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="appscheme"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme=" " android:host=" " android:pathPrefix="/" />
</intent-filter>
一切都按预期进行。
但是,如果我随后对我的项目进行任何更改,并再次通过 运行ning cordova 运行 android 重建应用程序,那么其中一个 intent 过滤器块将丢失Android 清单文件,插件功能不起作用。
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme=" " android:host=" " android:pathPrefix="/" />
</intent-filter>
我需要删除插件,然后再添加回来,才能正确生成 AndroidManifest.xml。
知道为什么它会在重建时删除其中一个 intent-filter 块吗?
感谢您的帮助!
我在阅读此 post 上已接受解决方案的第一条评论后找到了解决方案:
我需要从我的 config.xml 文件中删除一个:
<edit-config file="AndroidManifest.xml" mode="merge" target="/manifest/application/activity[@android:name='MainActivity']">
<activity android:theme="@style/Full" />
</edit-config>
而是在项目中使用 cordova-custom-config 插件,在 config.xml:
<custom-preference name="android-manifest/application/activity/@android:theme" value="@style/Full" />
现在一切都在进入 AndroidManifest.xml 文件。
我将插件 https://github.com/EddyVerbruggen/Custom-URL-scheme 添加到我的 cordova 项目中。
该插件在 plugin.xml 文件中有这个 Android:
<config-file target="AndroidManifest.xml" parent="/manifest/application/activity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="$URL_SCHEME"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="$ANDROID_SCHEME"
android:host="$ANDROID_HOST"
android:pathPrefix="$ANDROID_PATHPREFIX" />
</intent-filter>
</config-file>
安装插件时,我提供 CUSTOM_URL 变量的值:
cordova plugin add cordova-plugin-customurlscheme --variable URL_SCHEME=appscheme
然后我 运行 模拟器中的应用程序与 cordova 运行 android --emulator。 Android 清单已正确生成,包括两个 intent 过滤器块:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="appscheme"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme=" " android:host=" " android:pathPrefix="/" />
</intent-filter>
一切都按预期进行。
但是,如果我随后对我的项目进行任何更改,并再次通过 运行ning cordova 运行 android 重建应用程序,那么其中一个 intent 过滤器块将丢失Android 清单文件,插件功能不起作用。
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme=" " android:host=" " android:pathPrefix="/" />
</intent-filter>
我需要删除插件,然后再添加回来,才能正确生成 AndroidManifest.xml。
知道为什么它会在重建时删除其中一个 intent-filter 块吗?
感谢您的帮助!
我在阅读此 post 上已接受解决方案的第一条评论后找到了解决方案:
我需要从我的 config.xml 文件中删除一个:
<edit-config file="AndroidManifest.xml" mode="merge" target="/manifest/application/activity[@android:name='MainActivity']">
<activity android:theme="@style/Full" />
</edit-config>
而是在项目中使用 cordova-custom-config 插件,在 config.xml:
<custom-preference name="android-manifest/application/activity/@android:theme" value="@style/Full" />
现在一切都在进入 AndroidManifest.xml 文件。