运行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
似乎是最相关的。我认为白名单问题类似于无法访问的其他插件,因为它也是一个插件。我认为过去<feature>
文件中的每个插件都没有res/xml/config.xml
方面。
我确实安装了cordova-plugin-whitelist
,并且在我的<access origin="*" />
文件中安装了allow-navigation
,allow-intent
和config.xml
,它们确实传播到了{{1 }}文件。
所有插件均已安装,并且其来源在android目录中可见。
我目前也在使用ionic v1,但是在研究中我找不到关于ionic v1和cordova-android v7的任何问题,但认为值得一提。
我尝试过的一些事情:
res/xml/config.xml
命令项目中的插件列表:
cordova platform rm android && cordova platform add android
目前,我完全能够构建应用程序,这通常是<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.
要克服的主要障碍,我想在7+上构建它,因此不需要建议降级到6.4的答案
当我只运行带有插件的测试应用程序时,几乎可以不变地访问它们,但只能在某些随机的情况下,结果证明我无法访问任何插件。下次构建它时,它运行良好!
同样,在刚开始构建应用程序的最初过程中,我遇到了几个
cordova-android@7
不存在的错误,并修复了所有这些错误。因此,即使插件不兼容并抛出应用程序内错误,该应用程序仍可以正常运行!解决方案是派生每个插件并修复
AndroidManifest.xml
文件各个部分的目标目录。有关此内容的原始说明,请参见@bshaps答案;有关所需更改的其他说明,请参见@forrestmid的答案。
答案 0 :(得分:2)
解决方案就像@bshaps所说的那样,其中某些插件 still 与cordova-android @ 7不兼容。当我问我的问题时,我不相信这种情况是因为不兼容的插件有时仍可在cordova-android @ 7上运行!
要修复所有插件,您不仅必须像在cordova blogpost中那样更新AndroidManifest.xml
的位置,而且还必须在每个plugin.xml
文件中更改以下字符串的插件:
res/xml/config.xml
至app/src/main/res/xml/config.xml
res/values/strings.xml
至app/src/main/res/values/strings.xml
res/xml/strings.xml
至app/src/main/res/xml/strings.xml
当然,
AndroidManifest.xml
至app/src/main/AndroidManifest.xml
这确实是一个非常简单的修复程序。还令我失望的是,phonegap-plugin-push
插件需要cordova-android@7.1.0
或更高版本,但也没有使用上面的字符串正确配置。
我之所以称赞@bshaps是因为,如果他没有特别指出cordova-plugin-badge
是无效的,我会认为,由于该应用程序运行良好,因此插件必须兼容。 并非如此。您仍然可以使用不兼容的插件构建应用程序,这些插件会在运行时抛出错误。
答案 1 :(得分:1)
人们之所以建议将其降级到6.4.0版,是因为7+包含的更改会破坏当时大多数现有插件。至此,许多更新,但cordova-plugin-badge
之类的插件与android 7+平台不兼容,并且最近未更新。
如果您不想降级到6.4.0,则可以选择:
我从其他人那里听说,如果您知道自己在做什么,那么更新插件以使其与Android 7+兼容非常简单。