离子构建失败“在 <manifest> 中发现了意外的元素 <provider>”
Posted
技术标签:
【中文标题】离子构建失败“在 <manifest> 中发现了意外的元素 <provider>”【英文标题】:Ionic build failed "unexpected element <provider> found in <manifest>" 【发布时间】:2019-04-02 07:22:16 【问题描述】:我有这个代码
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="nl.x-services.plugins.videocaptureplus.provider"
android:exported="false"
android:grantUriPermissions="true" >
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
但如果我尝试“Ionic cordova run android”我会遇到这个错误
https://pastebin.com/BAtL0VqK
我该怎么处理这个错误?
【问题讨论】:
有人找到解决方案 【参考方案1】:问题似乎出在 VideoCapturePlus 上,因为我遇到了同样的问题。我已经把它换成 MediaCapture 并且不再有这个问题了。
【讨论】:
MediaCapture 不支持持续时间选项。【参考方案2】:确实有一个<provider>
元素错误地注入到生成的AndroidManifest.xml
中。
该元素来自 videoCapturePlus 插件的plugin.xml
文件。
注释掉文件/node_modules/cordova-plugin-video-capture-plus/plugin.xml
中的错误行
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="nl.x-services.plugins.videocaptureplus.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
</provider>
使用命令行重新生成平台文件 (android)
ionic cordoba build android
或 ionic capacitor build android
-
在 android studio 中重新运行 gradle build
就是这样!
【讨论】:
【参考方案3】:尝试从 plugin/nl.x-services.plugins.videocaptureplus/plugin.xml 中删除此 code
【讨论】:
【参考方案4】:我修复了编辑平台/android/android.json
移动方块
step 1 进入“应用程序”块 step 2
【讨论】:
【参考方案5】:这是我做的顺序
npx cordova platform rm android --nosave
npx ionic cordova plugin rm nl.x-services.plugins.videocaptureplus
npx ionic cordova plugin add https://github.com/Neocrea/cordova-plugin-video-capture-plus\#patch-1
npx ionic cordova platform add android@latest
我使用了https://github.com/Neocrea/cordova-plugin-video-capture-plus\#patch-1,因为它具有修复问题的必要补丁。这不是 IMO 的最佳解决方案,相反,您应该使用 media capture 插件,这是我们正在迁移到的东西,但这是一个权宜之计。
【讨论】:
【参考方案6】:我已经解决了这个问题,并且在我的情况下可以在 android 上完美运行,只需按照以下步骤操作:
-
在文件 platforms\android\android.json
删除数组“AndroidManifest.xml”中的以下代码:
“父母”:
"/manifest/application": [ "/*": [ .... ]
"xml": "
", “计数”:1
-
并将代码放入"application"数组
并再次构建:ionic cordoba build android(命令行)并在 android studio 中重新运行 gradle build
【讨论】:
以上是关于离子构建失败“在 <manifest> 中发现了意外的元素 <provider>”的主要内容,如果未能解决你的问题,请参考以下文章
文件选择器:在 <manifest> 中发现了意外的元素 <queries>