离子构建失败“在 <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】:

确实有一个&lt;provider&gt; 元素错误地注入到生成的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 androidionic 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>

离子构建失败 CompileAssetCatalog

尝试使用离子构建Android模拟器失败..“找不到类:javac1.8”[重复]

在离子2处失败'离子cordova运行android'

无法获得离子来构建android apk