【发布时间】:2018-06-20 19:45:07
【问题描述】:
运行cordova-android@7.1 版本的应用程序时会收到各种错误:
D/PluginManager: exec() call to unknown plugin: Badge
D/PluginManager: exec() call to unknown plugin: File
D/PluginManager: exec() call to unknown plugin: Keyboard
D/PluginManager: exec() call to unknown plugin: BuildInfo
D/PluginManager: exec() call to unknown plugin: Device
和
W/SystemWebViewClient: URL blocked by whitelist
似乎是最相关的。我认为白名单问题类似于其他无法访问的插件,因为它也是一个插件。 res/xml/config.xml 文件中的每个插件都没有 <feature> 方面,我认为过去是必需的。
我的config.xml 文件中确实安装了cordova-plugin-whitelist 和<access origin="*" />、allow-navigation 和allow-intent,这些确实传播到res/xml/config.xml 文件。
所有插件都已安装,并且它们的源代码在 android 目录中可见。
我目前也在使用 ionic v1,但在我的研究中,我找不到任何关于 ionic v1 和 cordova-android v7 的问题,但我认为值得一提。
我尝试过的一些事情:
- 删除并重新安装插件
- 完全删除cordova白名单插件(我现在读过一些关于android cordova的东西,包括这个)
使用带有 device + buildinfo 插件的 android@7 启动一个新应用,它运行良好,并且插件可以访问- 只有两个插件没问题,但我只是尝试了 所有 插件,它抛出了同样的错误,所以我目前正在进一步调查这条路径...
- 用头撞混凝土墙
- 对平台目录进行了几次手动更改
- 几个
cordova platform rm android && cordova platform add android命令 - 将 cordova cli 版本重新安装到最新版本(当前为 8)
项目中的插件列表:
<plugin name="cordova-plugin-actionsheet" spec="^2.3.3" />
<plugin name="cordova-plugin-camera" spec="^3.0.0" />
<plugin name="cordova-plugin-datepicker" spec="^0.9.3" />
<plugin name="cordova-plugin-geolocation" spec="^3.0.0" />
<plugin name="cordova-plugin-badge" spec="^0.8.5" />
<plugin name="ionic-plugin-keyboard" spec="^2.2.1" />
<plugin name="cordova-plugin-splashscreen" spec="^4.1.0" />
<plugin name="cordova-plugin-3dtouch" spec="^1.3.5" />
<plugin name="cordova-plugin-touchid" spec="^0.4.0" />
<plugin name="cordova-plugin-compat" spec="^1.2.0" />
<plugin name="ionic-plugin-deploy" spec="^0.6.7" />
<plugin name="cordova-plugin-dialogs" spec="^1.3.4" />
<plugin name="cordova-plugin-inappbrowser" spec="^2.0.2" />
<plugin name="cordova-plugin-file-transfer" spec="^1.7.1" />
<plugin name="cordova-plugin-screen-orientation" spec="^3.0.1" />
<plugin name="cordova-plugin-buildinfo" spec="^2.0.1" />
<plugin name="phonegap-plugin-push" spec="^2.2.3"/>
<plugin name="cordova-plugin-whitelist" spec="^1.3.3" />
<plugin name="cordova-plugin-device" spec="^2.0.2" />
... and some other unneeded plugins now that we have an answer.
此时我完全能够构建应用程序,这对于cordova-android@7 来说是一个需要克服的主要障碍,我想在 7+ 上构建它,因此不需要建议降级到 6.4 的答案。
当我运行只包含插件的测试应用程序时,我几乎可以无一例外地访问它们,但只有在某些随机的情况下,构建结果证明我无法访问任何插件。下次我构建它时效果很好!
同样,在构建应用程序的初始过程中,我遇到了几个
AndroidManifest.xml不存在的错误,我修复了所有错误。因此,即使插件不兼容并引发应用程序错误,应用程序仍会像一切正常一样构建!解决方案是分叉每个插件,并修复
plugin.xml文件各个部分的目标目录。请参阅@bshaps 答案以了解此问题的原始指示,并查看@forrestmid 的答案以了解有关所需更改的更多说明。
【问题讨论】:
标签: android cordova ionic-framework